Oreoorererereoo


60

Oreoorererereoo

"ওরিও" শব্দের অনুরূপ একটি ইনপুট স্ট্রিং দেওয়া হয়েছে, কুকির একটি ASCII উপস্থাপনা দিন যা ইনপুট স্ট্রিংয়ের মতো বিস্তৃত (কুকির স্থিতিশীলতা নিশ্চিত করতে)।

বিধি

  • ইনপুটটি ছোট হাতের অক্ষর, একটি ফাঁকা ফাঁকা স্ট্রিং নেই যেখানে কোনও সাদা অংশ নেই যা "O" এবং "পুনরায়" স্ট্রিংয়ের কোনও সংমিশ্রণ রয়েছে এবং কেবল সেই স্ট্রিং রয়েছে।
  • স্ট্রিং "ও" শক্ত কুকিকে উপস্থাপন করে, যখন স্ট্রিং "রে" ফিলিংটি উপস্থাপন করে।
  • আউটপুট অবশ্যই স্ট্যাকড কুকি হতে হবে যা ইনপুট স্ট্রিংয়ের মতো চওড়া।
  • আউটপুট স্ট্রিংগুলির একটি অ্যারে নাও হতে পারে
  • কুকি অবশ্যই প্রতিটি পক্ষের একটি করে অক্ষর দ্বারা ফিলিংকে ওভারল্যাপ করতে হবে
  • আউটপুটটির জন্য ব্যবহৃত অক্ষরগুলি নীচের আউটপুট (█ এবং ░) এর সাথে মেলে না,
  • ফিলিংয়ের বাম দিকে সাদা স্থান প্যাডিং প্রয়োজন, এবং কোনও পূর্ববর্তী হোয়াইটস্পেস isচ্ছিক

উদাহরণ

Input: oreo
Output:
████
 ░░ 
████

Input: o
Output:
█

Input: re
Output: (two spaces)


Input: rere
Output:
 ░░ 
 ░░ 

Input: oreoorererereoo
Output:
███████████████
 ░░░░░░░░░░░░░ 
███████████████
███████████████
 ░░░░░░░░░░░░░ 
 ░░░░░░░░░░░░░ 
 ░░░░░░░░░░░░░ 
 ░░░░░░░░░░░░░ 
███████████████
███████████████

যেহেতু এটি কোড গল্ফ হ'ল সংক্ষিপ্ত উত্তর জিতেছে, শুভকামি :)


3
"ফিলিংয়ের প্রতিটি পাশের সাদা জায়গার প্যাডিং প্রয়োজনীয়"। এর প্রকৃতপক্ষে কি এর অর্থ এই যে প্রতিটি পূরণের প্রতিটি লাইনের শেষে অবশ্যই একটি স্থানের অক্ষর থাকতে হবে? যদি তাই হয় কেন? যতক্ষণ না এটি চাক্ষুষভাবে কাজ করে ততক্ষণ এই প্রয়োজনীয়তাটি চ্যালেঞ্জের সাথে কী যুক্ত করে?
এলপেড্রো

@ এলপেড্রো গুড পয়েন্ট, আমি নিয়মগুলি সংশোধন করেছি এবং @ ডেনিস আমি নিয়মগুলি সম্পাদনা করেছি যাতে মন্তব্যগুলি পরিষ্কার করা ঠিক হবে
গ্যামা গেমস

@ জোনাথান অ্যালান যেহেতু এটি "ascii-art" মুদ্রণ করে আমি এই নিয়মটি সরিয়ে দিয়েছি বলে মনে হচ্ছে আমি প্রশ্নটি আপডেট করতে ভুলে গেছি। এখনই আপডেট করা উচিত।
গামাগেমস

অান্তরিক ধন্যবাদ!
জনাথন অ্যালান

@ গ্যামা গেমস, যদি ডানদিকে শ্বেত স্থান প্রয়োজন হয় না, তবে আমি ধরে নিই যে পরীক্ষার ক্ষেত্রে আউটপুটটি reএখন গ্রহণযোগ্য হওয়া উচিত 1 or 2 spaces, অগত্যা ২ নয়?
কিরিল এল।

উত্তর:


15

জেলি ,  16 14  13 বাইট

-1 এরিক দ্য আউটগোল্ফারকে ধন্যবাদ

OḂƇẒṁ€aØ.¦€⁶Y

ব্যবহার 1ক্রিম এবং 0কুকি জন্য।

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

OḂƇẒṁ€aØ.¦€⁶Y - Main Link: list of characters, V    e.g. 'orereo'
O             - ordinal (vectorises)                     [111,114,101,114,101,111]
  Ƈ           - filter keep those for which:
 Ḃ            -   modulo 2                               [111,    101,    101,111]
   Ẓ          - is prime? (vectorises)                   [  0,      1,      1,  0]
    ṁ€        - mould each like V                        [[0,0,0,0,0,0],[1,1,1,1,1,1],[1,1,1,1,1,1],[0,0,0,0,0,0]]
          €   - for each:
         ¦    -   sparse application...
       Ø.     -   ...to indices: literal [0,1] (0 is the rightmost index, 1 is the leftmost)
      a       -   ...apply: logical AND with:
           ⁶  -               space character           [[0,0,0,0,0,0],[' ',1,1,1,1,' '],[' ',1,1,1,1,' '],[0,0,0,0,0,0]]
            Y - join with newline characters            [0,0,0,0,0,0,'\n',' ',1,1,1,1,' ','\n',' ',1,1,1,1,' ','\n',0,0,0,0,0,0]
              - implicit print                       ...smashes everything together:
              -                                         000000
              -                                          1111 
              -                                          1111 
              -                                         000000

পূর্ববর্তী 16 বাইটার:

ḟ”eẋ€Ly@Ø.¦€⁾r Y

ব্যবহার rগ জন্য ream এবং oগ জন্য ookie।

এটি অনলাইন চেষ্টা করুন!


আমি জেলি এন্ট্রি, এমন একটি আকর্ষণীয় ভাষা আশা করছিলাম!
গামাগেমস

19

পেপে , 364 বাইট

দুর্ভাগ্যক্রমে অনলাইন অনুবাদক মন্তব্য সংক্ষেপণের যত্ন নেন না, সুতরাং সমস্ত oঅক্ষর একটি স্থান দ্বারা প্রতিস্থাপন করা হবে .. ফাঁকা স্থান বা oপ্রয়োজনীয় দুটিও নয় , তাই এটি 295 বাইট হতে পারে, তবে আমি এটি আরও পছন্দ করি:

rEeEEeeEeEororEEoreoreeeEeeeeeorEEEEeoREeoreorEeEEeEEEEororEEoreorEEEEEoREeoreorEeEEEeeEeororEEoreoReoREoREEEeoREEEEEoreorEorEEEeorEEEEEoreEoREeoreoREEeoREEEEeEeeoREEEeoREeeEoREEEeoREEEEEEEorEEEeEorEEEeoREoREEEeoREEEEEoREEoReoreorEEEeEoREEEEEEeorEEEeoReEoREoREEEeoREEoReoroReEeoREoREEEeorEEEEeoReeoREEEeoREeeEoREEEeoREEEEEEEoreoReoReoREoREEEeoREEEEEoreeeeeEeEeoRee

এটি অনলাইন চেষ্টা করুন!

Ungolfed

আমি যে পতাকাগুলি মিস করেছি তার সাথে কিছু গল্ফিং অপারগুটি থাকতে পারে তবে আমি এখনই শেষ করেছি:

# "function" for 'e'
rEeEEeeEeE rrEE
  re          # remove duplicated argument
  reeeEeeeee  # print space
  rEEEEe      # decrement counter twice
REe re

# "function" for 'o'
rEeEEeEEEE rrEE
  re      # remove duplicated argument
  rEEEEE  # increment counter
REe re

# "function for 'r'
rEeEEEeeEe rrEE
  re Re              # remove duplicated argument & char
  RE REEEe REEEEE    # push 1
  re rE rEEEe rEEEEE # replace 1
  reE                # goto 1
REe re

# Main

REEe REEEEeEee                # read input & reverse
REEEe REeeE REEEe REEEEEEE    # push length-1 & move to r

rEEEeE rEEEe # dummy loop-var (fucking do-whiles...)
RE REEEe REEEEE REE  # while [label-1]

  # Call the right procedure depending on current character,
  # sets stacks up as follows:
  #   R [ .... *currentChar ]
  #   r [ (N-1) *count ]
  Re re          # pop 1 & loop-counter
  rEEEeE         # duplicate counter
  REEEEEEe rEEEe # copy current char to other stack
  ReE            # jeq to 'o'-label or 'e'-label

  # Output currentChar count times:
  RE REEEe REE # while [label-0]:
    Re         #   pop 0
    rReEe      #   print character
    RE REEEe   #   push 0
    rEEEEe     #   decrement counter
  Ree

  REEEe REeeE REEEe REEEEEEE  # push length-1 & move to r
  re Re Re                    # pop 0, counter and 9((((currentChar
  RE REEEe REEEEE             # push 1
  reeeeeEeEe                  # print new-line

Ree



7

জাপট -R , 16 15 বাইট

re ¬£çX sX²èrÃû

চেষ্টা করে দেখুন

                    :Implicit input of string U
re                  :Remove all "e"s
   ¬                :Split to array of characters
    £               :Map each X
     çX             :  Repeat X to the length of U
        s           :  Slice from index
         X²         :   Duplicate X
           èr       :   Count the occurrences of "r"
             Ã      :End map
              û     :Centre pad each element with spaces to the length of the longest
                    :Implicitly join with newlines and output

বিকল্প

re ¬ËpUÊaD²èrÃû
re ¬£îX rr²i^Ãû

6

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 95 বাইট

n=>n.Replace("o",new String('-',n.Length)+"\n").Replace("re"," ".PadRight(n.Length-1,'|')+"\n")

এটি অনলাইন চেষ্টা করুন!

সমষ্টি, 108 বাইট ব্যবহার করে বিকল্প

n=>n.Aggregate("",(d,c)=>d+(c<102?"":c<112?new String('-',n.Length)+"\n":" ".PadRight(n.Length-1,'|')+"\n"))

এটি অনলাইন চেষ্টা করুন!


1
এখন এটি পিছনের জায়গাগুলি
ছাঁটাচ্ছে

যথেষ্ট প্রতিক্রিয়া ছিল যা আমি নতুন লাইনের নিয়মটি অনুসরণ করেছি removed আপনার এন্ট্রি আপডেট নির্দ্বিধায়।
গামাগেমস

তোমার প্রতিস্থাপন যখন ইনপুট কাজ করে না o, যেহেতু The n.Length-2পরিণাম ডেকে আনবে -1
কেভিন ক্রুইজসেন

n.Length-2যখন ইনপুট হয়েছে জন্য re
অজ্ঞতার প্রতিমূর্তি

6

আর , 106 বাইট

function(s,N=nchar(s)){m=rep(el(strsplit(gsub('re',0,s),'')),e=N)
m[m<1&seq(m)%%N<2]=' '
write(m,1,N,,"")}

এটি অনলাইন চেষ্টা করুন!

  • -12 বাইটস @ জিউজ্পে ধন্যবাদ

ব্যাখ্যা সহ পূর্ববর্তী সংস্করণ:

আর , 118 বাইট

function(s,N=nchar(s)){m=t(replicate(N,el(strsplit(gsub('re',0,s),''))))
m[m<1&row(m)%in%c(1,N)]=' '
write(m,1,N,,'')}

এটি অনলাইন চেষ্টা করুন!

  • -1 বাইট @ জিউজ্পে ধন্যবাদ

নিবন্ধভুক্ত কোড এবং ব্যাখ্যা:

function(s){                       # s is the input string, e.g. 'oreo'

  N = nchar(s)                     # store the length of s into N, e.g. 4

  s1 = gsub('re',0,s)              # replace 're' with '0' and store in s1, e.g. 'o0o'

  v = el(strsplit(s1,''))          # split s1 into a vector v of single characters
                                   # e.g. 'o','0','o'

  m = replicate(N,v)               # evaluate N times the vector v and arrange 
                                   # the result into a matrix m (nchar(s1) x N)
                                   # e.g. 
                                   # 'o' 'o' 'o' 'o' 
                                   # '0' '0' '0' '0' 
                                   # 'o' 'o' 'o' 'o' 


  m = t(m)                         # transpose the matrix

  m[m<1 & row(m)%in%c(1,N)] = ' '  # substitute the zeros (i.e. where < 1) 
                                   # on the 1st and last row of the matrix with ' ' (space)
                                   # e.g. 
                                   # 'o' ' ' 'o' 
                                   # 'o' '0' 'o' 
                                   # 'o' '0' 'o' 
                                   # 'o' ' ' 'o'

  write(m,1,N,,'')                 # write the matrix to stdout (write function transposes it)
                                   # e.g.
                                   # oooo
                                   #  00 
                                   # oooo
}


আয়ন্ড 104 বাইট লাইনের একটি তালিকা ফিরিয়ে দেয়, যা এখানে গ্রহণযোগ্য নয়, তবে এটি একটি আকর্ষণীয় ধারণা (মূলত আমার এসএনওবিওল জমাটি আর-তে অনুবাদ করা হয়েছে)
জিউসেপ

6

05 এ বি 1 , 18 17 16 বাইট

'eKεD'rQ2*Igα×}.c

-1 বাইট @ এমিগানাকে ধন্যবাদ

ব্যবহার oকুকি এবং rভর্তি জন্য।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

'eK                 '# Remove all "e" from the (implicit) input
                     #  i.e. "orereo" → "orro"
   ε         }       # Map all characters to:
    D                #  Duplicate the current character
     'rQ            '#  Check if it's an "r" (1 if truthy; 0 if falsey)
                     #   i.e. "r" → 1
                     #   i.e. "o" → 0
        ·            #  Double that
                     #   i.e. 1 → 2
                     #   i.e. 0 → 0
         Ig          #  Take the length of the input
                     #   i.e. "orereo" → 6
           α         #  Take the absolute difference between the two
                     #   i.e. 2 and 6 → 4
                     #   i.e. 0 and 6 → 6
            ×        #  Repeat the duplicated character that many times
                     #   i.e. "r" and 4 → "rrrr"
                     #   i.e. "o" and 6 → "oooooo"
              .c     # Then centralize it, which also imlicitly joins by newlines
                     # (and the result is output implicitly)
                     #  i.e. ["oooooo","rrrr","rrrr","oooooo"]
                     #   → "oooooo\n rrrr\n rrrr\noooooo"

সৃজনশীল সমাধান, তবে এটি পুরোপুরি সমস্যার সমাধান করে না: ওরো একটি ভুল উত্তর দেবে
মার্ক স্মিট

@ মার্কসমিট oroকোনও সম্ভাব্য ইনপুট নয়, কারণ ইনপুটটিতে কেবলমাত্র oএস এবং reএস থাকবে। নির্বিশেষে, oroএখনও অনুমানটি সঠিকভাবে অনুসরণ করে বলে মনে হচ্ছে, যেহেতু এটি আউটপুটসooo\n r\nooo । এটি সম্পর্কে ভুল কি?
কেভিন ক্রুইজসেন

এটি অবৈধ: "ফিলিংয়ের প্রতিটি পাশের সাদা স্থানের প্যাডিং প্রয়োজন"
নিডজেজেকোব

2*হতে পারে ·এবং হারিয়ে যাওয়া হোয়াইটস্পেস পরিবর্তন করে সংশোধন করা যেতে পারে ».cথেকে.c.B»
Emigna

@ এমিগনা আহ, বিশ্বাস করতে পারি না যে আমি ভেবে দেখিনি ·, ধন্যবাদ! :) এবং চ্যালেঞ্জ চলাকালীন চশমা পরিবর্তনের জন্য সর্বদা সুন্দর, দীর্ঘশ্বাস ..
কেভিন ক্রুইজসেন

5

রেটিনা , 74 73 বাইট

আমার মনে হচ্ছে আমি খুব দীর্ঘ সময়ে উত্তর পোস্ট করি নি। এখানে আমি আছি. এছাড়াও, রেটিনা অনেক পরিবর্তন হয়েছে, এবং আমার মনে হয় আমি এখন এটি চুষছি।

.+
$0$.0
(\d+)
*
e

o|r
$&¶
_$

+(/_/&`o¶
oo¶
_$

)/_/&`r¶
rr¶
¶$

m`^r
 

এটি অনলাইন চেষ্টা করুন!


1
ওহ, কি উন্মাদ চেহারা ভাষা। আমি এটা পছন্দ করি!
গামাগেমস


2
আমি চাই কিভাবে [or]অর্থ oবা rপরিবর্তে [বা ]। আমার মাথায় ব্যাথা দেয়।
nedla2004

@ ডিজাইমা প্রশ্নটি উল্লেখ করে না যে অনুসরণীয় শ্বেতস্পেসগুলি প্রয়োজনীয়। একটি মন্তব্য জিজ্ঞাসা করা হয়েছে, কিন্তু কোন উত্তর দেওয়া হয়নি।
mbomb007

@ nedla2004 এটি আসলে আমাকে একটি বাইট সংরক্ষণ করার উপায় লক্ষ্য করতে সহায়তা করেছিল। ধন্যবাদ।
mbomb007

5

রেটিনা , 21 বাইট

r

L$`.
$.+*$&
\bee
 

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা:

r

rগুলি মুছুন ।

L$`.
$.+*$&

আসল ইনপুটটির দৈর্ঘ্যের সাথে পুনরাবৃত্তি করে প্রতিটি বর্ণকে তার নিজস্ব লাইনে তালিকাবদ্ধ করুন।

\bee
 

eeপ্রতিটি লাইনে প্রথম দুটি গুলি একটি স্থানের সাথে প্রতিস্থাপন করুন ।


এটি বিধিগুলি ভঙ্গ করে: "ফিলিংয়ের প্রতিটি পাশে সাদা স্থানের প্যাডিং প্রয়োজন"
নিডজেজেকোব

@ নিডজেজকোব এটি উপেক্ষা করার জন্য দুঃখিত, এখনই এটি ঠিক করা উচিত।
নীল

এফওয়াইআইয়ের পশ্চাদপটে হোয়াইটস্পেসের প্রয়োজনীয়তা উঠেছে।
জ্যাকটোজ

@ নীল আপনার এটি ঠিক করা উচিত &amp;: পি
এএসসিআইআই-

5

সি (জিসিসি) , 135 113 109 104 বাইট

#define $ putchar(33
O(char*r){for(char*e,*o=r,x;*r;$-23))for(x=*r++>111,e=x?$-1),r++,o+2:o;*e++;$+x));}

এটি অনলাইন চেষ্টা করুন!


কয়েকটি বাইট অফ শেভ করুন-D$=putchar

131 বাইটস যদি আপনি নিয়মাবলী অনুসারে অনুমোদিত একটি নতুন লাইন যোগ করেন।
নিডজেজেকোব

127 বাইটস যদি আপনি e=oপ্রথম লুপের শর্তে সরান এবং তারপরে অন্যটি সরিয়ে ফেলুন।
নিডজেজেকব

118 বাইটস যদি আপনি কুকি চয়ন করেন এবং সাবধানে অক্ষরগুলি পূরণ করেন।
নিডজেজেকব


4

জাভাস্ক্রিপ্ট ES6, 103 বাইট

103 বাইট প্রতিস্থাপন ব্যবহার:

x=>x.replace(/o/g,"-".repeat(s=x.length)+`
`).replace(/re/g," "+"|".repeat(s>1?s-2:0)+` 
`).slice(0,-1)

এটি অনলাইন চেষ্টা করুন!

বিভক্ত এবং 116 বাইট মানচিত্র ব্যবহার করে:

x=>x.split("re").map(y=>("-"[h='repeat'](r=x.length)+`
`)[h](y.length)).join(" "+"|"[h](r>1?r-2:0)+` 
`).slice(0,-1)

এটি অনলাইন চেষ্টা করুন!


1
জেএস, দুর্দান্ত! আপনি আমাকে মনে করিয়ে দিয়েছিলেন যে আমি আউটপুট শেষে লাইন রিটার্ন না পাওয়ার বিষয়ে একটি বিধি যুক্ত করতে যাচ্ছি, আমি এটি যুক্ত করেছি। এর জন্যে দুঃখিত!
গামাগেমস

3
কেবল চূড়ান্ত
নিউলাইনটি

যথেষ্ট প্রতিক্রিয়া ছিল যা আমি নতুন লাইনের নিয়মটি অনুসরণ করেছি removed আপনার এন্ট্রি আপডেট নির্দ্বিধায়।
গামাগেমস

3
আপনি টেম্পলেট স্ট্রিং ${"|".repeat(s>1?s-2:0)}এবং এর সাদা স্থানগুলি ব্যবহারের পরিবর্তে একটি বাইট সংরক্ষণ করতে পারেন " "+"|".repeat(s>1?s-2:0)
ইসমাইল মিগুয়েল

আপনি যদি প্রথম বিভাজনে স্ট্রিংয়ের জন্য ব্যাকটিক্স ব্যবহার করেন তবে আপনি তার চারপাশে প্রথম বন্ধনী সরিয়ে ফেলতে পারেন।
স্কিইলা


4

পাইথন 3 , 77 বাইট

lambda x:x.replace("o","-"*len(x)+"\n").replace("re"," "+'.'*(len(x)-2)+"\n")

এটি অনলাইন চেষ্টা করুন!


চতুর! আমি আউটপুটটি ফিলিংয়ের জন্য সাদা স্থান মুদ্রণ না করার উদ্দেশ্যে তৈরি করেছি (এটি বেশ পরিমাণে ওরেও আসকি), তাই আমি সেই অনুযায়ী নিয়মগুলি সম্পাদনা করেছি। এর জন্যে দুঃখিত! এবং আমি সর্বদা একটি অজগর উত্তর পছন্দ করি :)
গামাগেমস

@ জোনাথানফ্রেচ স্থানান্তরিত করার সাথে সাথে মন্তব্যগুলি মুছুন, সেই পদ্ধতি অবৈধ করা হয়েছিল। আমি আগামীকাল আরও গল্ফ করে কাজ করব।
আর

+" \n"বাইট সংরক্ষণ করার জন্য আপনি স্থানটি সরাতে পারেন ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি কি পারি? ইনপুট প্রোগ্রামটি বলেছে পুরো কুকি অবশ্যই ইনপুটটির মতো চওড়া হতে হবে।
16

2
আমি ব্যাখ্যা করেছিলাম যে একটি পেছনের স্থানটি স্থান হিসাবে একই (দৃশ্যত) একই। এটি আসকি শিল্প চ্যালেঞ্জগুলির উত্তরগুলির সৌন্দর্য। যদি তারা ঠিক মতো দেখায় তবে তারা ঠিক :-)
এলপিড্রো

4

গণিত, 111 91 বাইট

#~StringReplace~{"o"->"O"~Table~(n=StringLength@#)<>"\n","re"->" "<>Table["R",n-2]<>" \n"}&

এটি অনলাইন চেষ্টা করুন!

এই নানা ধরণের অসুখে ধন্যবাদ সংক্ষিপ্ত ছিল মিশা এর সম্পাদনাগুলি


আমার মূল কোড:

(z=StringRepeat;n=StringLength@#;#~StringReplace~{"o"->"O"~z~n<>"\n","re"->" "<>If[n>2,z["R",n-2],""]<>" \n"})&

এই কোডটি খুব অভিনব নয় তবে স্ট্রিংগুলি থেকে দূরে রূপান্তর করা এবং তারপরে পিছনে বা অন্য কিছু চালাক করা খুব ব্যয়বহুল বলে মনে হচ্ছে।

বিশেষত, কেবল স্ট্রিং নাম রয়েছে এমন 3-4 টি কমান্ডের সাহায্যে আমার আসল পদ্ধতিটি এড়িয়ে যাওয়ার বিস্মৃত করার চেষ্টা করে মোটেও বাইটগুলি সংরক্ষণ করতে পারেনি। উদাহরণস্বরূপ, নীচে 129 বাইট রয়েছে:

(w=Symbol["String"<>#]&;z=w@"Repeat";n=w["Length"]@#;#~w@"Replace"~{"o"->"O"~z~n<>"\n","re"->" "<>If[n>2,z["R",n-2],""]<>" \n"})&

1
কয়েকটি উন্নতি: যেহেতু পরে তালিকাটি স্ট্রিংয়ে রূপান্তরিত StringRepeatহতে পারে ; আমরা যখন শাখাটি গ্রহণ করি তখনই এটি অপ্রয়োজনীয় ; আমরা যখন প্রথম বন্ধনী ব্যবহার করি তখনই এটি সংজ্ঞায়িত করে সংরক্ষণ করতে পারি। এটি অনলাইন চেষ্টা করুন! Table<>Ifrenn
মিশা লাভরভ

@ মিশালাভরভ দ্য যুক্ত Ifকরা হয়েছে কারণ StringRepeat"পুনরায়" এর ক্ষেত্রে ত্রুটি ঘটবে; এটি আপনাকে 0 বার কোনও স্ট্রিং পুনরাবৃত্তি করতে দেয় না। Tableএর কোনও সীমাবদ্ধতা নেই, তাই এটি একটি বড় সঞ্চয়!
মার্ক এস।

4

পার্ল 6 , 37 বাইট

{m:g/o|r/>>.&({S/rr/ /.say}o*x.comb)}

এটি অনলাইন চেষ্টা করুন!

বেনামী কোড ব্লক যা একটি স্ট্রিং নেয় এবং oকুকি rহিসাবে এবং ক্রিম হিসাবে ওরিও প্রিন্ট করে ।

ব্যাখ্যা:

{                                   }   # Anonymous code block
 m:g/o|r/                               # Select all o s and r s
         >>.&(                     )    # Map each letter to
                            *x.comb     # The letter padded to the width
               S/rr/ /                  # Substitute a leading rr with a space
                      .say              # And print with a newline

আমি বুঝতে পারি না যে এটির oজায়গায় ব্যবহার করা যেতে পারে । খুব সুন্দরভাবে গল্ফড
প্রিমো

4

জাভা 11, 110 বাইট

s->{int l=s.length();return s.replace("re"," "+"~".repeat(l-(l<2?1:2))+"\n").replace("o","=".repeat(l)+"\n");}

ব্যবহার =কুকি এবং ~ভর্তি জন্য।

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

s->{                       // Method with String as both parameter and return-type
  int l=s.length();        //  Get the length of the input
  return s                 //  Return the input
          .replace("re",   //  After we've replaced all "re" with:
            " "            //   A space
            +"~".repeat(l-(l<2?1:2))
                           //   Appended with length-2 amount of "~"
                           //   (or length-1 if the input-length was 1)
            +"\n")         //   Appended with a newline
          .replace("o",    //  And we've also replaced all "o" with:
            "=".repeat(l)  //   Length amount of "="
            +"\n");}       //   Appended with a newline

উপরের সমাধানটি প্রতিস্থাপন ব্যবহার করে। পরিবর্তে ইনপুটটির অক্ষরগুলির উপরে নিম্নলিখিত মানচিত্রগুলি:

জাভা 11, 113 112 বাইট

s->s.chars().forEach(c->{if(c>101)System.out.println((c>111?" ":"")+(""+(char)c).repeat(s.length()-2*(~c&1)));})

-1 বাইট @ নীল ধন্যবাদ ।

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

s->                           // Method with String parameter and no return-type
  s.chars().forEach(c->{      //  Loop over the characters as codepoint-integers
    if(c>101)                 //   If it's not an 'e':
      System.out.println(     //    Print with trailing newline:
       (c>111?                //     If it's an 'r'
         " "                  //      Start with a space
        :                     //     Else (it's an 'o' instead)
         "")                  //      Start with an empty string
       +(""+(char)c).repeat(  //     And append the character itself
          .repeat(            //     Repeated the following amount of times:
           s.length()         //      The input-length
           -2*(~c&1)));})     //      Minus 2 if it's an "r", or 0 if it's an "o"

1
আপনি ব্যবহার করতে পারেন ~c&1?
নীল

@ নিল আমি সত্যিই পারি, ধন্যবাদ।
কেভিন ক্রুইজসেন

এটি অবৈধ: "ফিলিংয়ের প্রতিটি পাশে সাদা স্থানের প্যাডিং প্রয়োজন"
নিডজেজেকোব

@ নিডজেজেকোব স্থির .. চ্যালেঞ্জ চলাকালীন চশমা পরিবর্তনের জন্য সর্বদা সুন্দর, দীর্ঘশ্বাস
ফেলুন

@ কেভিন ক্রুজসেন আর নেই: পি
এএসসিআইআই-শুধুমাত্র

4

পিএইচপি ,100 99 93 বাইট

$l=strlen($i=$argv[1]);$r=str_repeat;echo strtr($i,[o=>$r(X,$l)."
",re=>' '.$r(o,$l-2)."
"]);

এটি অনলাইন চেষ্টা করুন!

সেকি। পিএইচপি-র ওয়ায়া_তু_লং ফাংশনের নাম আবার ধর্মঘট!

আউটপুট:

$php oreo.php oreo
XXXX
 oo
XXXX

$php oreo.php o
X

$php oreo.php rere
 oo
 oo

$ php oreo.php oreoorererereoo
XXXXXXXXXXXXXXX
 ooooooooooooo
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
 ooooooooooooo
 ooooooooooooo
 ooooooooooooo
 ooooooooooooo
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX

অবৈধ, ক্রিম লাইনগুলির একটি চলমান স্থানের প্রয়োজন
এএসসিআইআই-

পিছনের স্থান স্থির করে। ধন্যবাদ!
640 কেবি

1
ওহ ছেলে, পিএইচপি! এছাড়াও যে কোনও পূর্ববর্তী হোয়াইটস্পেস এখন ,চ্ছিক, যথেষ্ট লোক ছিল যে এটি উল্লেখ করেছিল যে এটি ছাপার পরে এটি সত্যই প্রয়োজন হয় না।
গামাগেমস

4

পিএইচপি , 96 87 85 বাইট

@Gwaugh -9 বাইটসকে
ধন্যবাদ @ মান্যাটওয়ার্ক -২ বাইটস

<?=strtr($i=$argv[1],[o=>($r=str_repeat)(X,$l=strlen($i))."
",re=>" {$r(o,$l-2)}
"]);

এটি অনলাইন চেষ্টা করুন!

এটি অনলাইন চেষ্টা করুন! (৮ By বাইট)

এটি অনলাইনে চেষ্টা করুন (মূল 97 বাইটস সাবমিশন)!


এবং একটি পুনরাবৃত্তি ফাংশন

পিএইচপি , 135 বাইট

function f($w,$x=0){$f=str_repeat;echo($x<($l=strlen($w)))?($w[$x]=='o')?$f(█,$l)."
".f($w,$x+1):" ".$f(░,$l-2)."
".f($w,$x+2):"";}

এটি অনলাইন চেষ্টা করুন! (রিকার্সিভ)


1
আমাদের দুটি সাবমিশনের সেরাটির সংমিশ্রণের মাধ্যমে আমি এটিকে 87 বাইট টিআইওতে নামিয়ে আনতে সক্ষম হয়েছি । আপনি কি সহযোগী জমা হিসাবে এই সাথে যেতে খেলা হবে? :)
640 কেবি

1
আমি মনে করি শর্ট_ট্যাগ_পেন কমান্ডটি ব্যবহার করে আমরা আরও 1 বাইট সরিয়ে ফেলতে পারি, এবং এর পরিবর্তে <?=আমরা ব্যবহার করতে পারি <?, বা আমি ভুল করছি?
ফ্রান্সিসকো হান

1
2 স্ট্রিং ক্ষেপক সঙ্গে খাটো অক্ষর: ' '.$r(o,$l-2)."␤"" {$r(o,$l-2)}␤"
manatwork

ধন্যবাদ @manatwork মাঝে মাঝে আমি ভুলে গেছি পিএইচপি Vars একটি স্ট্রিং মূল্যায়ন করা হয় যদি সমগ্র স্ট্রিং সঙ্গে ঘোষিত হয় ""এর istead''
ফ্রান্সিসকো হান

1
এটি ব্যবহার করে 3 বাইট ছোট হতে পারে $argn: অনলাইনে চেষ্টা করে দেখুন!
রাত


4

পাওয়ারশেল, 71 69 66 বাইট

-২ বাইট ধন্যবাদ @ ভেস্কাহ

-3 বাইটস ধন্যবাদ অ্যাডমবর্কবার্ক

$l=$args|% le*
switch($args|% t*y){'o'{'#'*$l}'r'{" "+'%'*($l-2)}}

কম গল্ফ পরীক্ষা স্ক্রিপ্ট:

$f = {

$l=$args|% length
switch($args|% t*y){
    'o'{'#'*$l}
    'r'{" "+'%'*($l-2)}
}

}

@(

,(
'oreo',
'####',
' %%',
'####'
)
,(
'o',
'#'
)
,(
're',
' '
)
,(
'rere',
' %%',
' %%'
)
,(
'oreoorererereoo',
'###############',
' %%%%%%%%%%%%%',
'###############',
'###############',
' %%%%%%%%%%%%%',
' %%%%%%%%%%%%%',
' %%%%%%%%%%%%%',
' %%%%%%%%%%%%%',
'###############',
'###############'
)

) | % {
    $s,$expected = $_
    $result = &$f $s
    "$result"-eq"$expected"
    # $result # uncomment this line to display a result
}

আউটপুট:

True
True
True
True
True

1
দেখে মনে হচ্ছে আপনার $args 69 বাইটের
পেরেনগুলির

1
দৈর্ঘ্য [string[]]একটি হল [int[]]দ্য ... [int[]]হয় [int]যদি অ্যারের শুধুমাত্র একটি উপাদান রয়েছে। গ্রেট! ধন্যবাদ!
mazzy

1
ওপি চ্যালেঞ্জটি আপডেট করেছে যাতে আপনার আর স্থানের স্থানের প্রয়োজন হবে না। এর অর্থ আপনার পরিবর্তে -3 বাইটের জন্য rহতে পারে " "+'%'*($l-2)
অ্যাডমবর্কবার্ক

3

কাঠকয়লা , 19 বাইট

Fθ≡ιo⟦⭆θ#⟧e«→P⁻Lθ²↙

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Fθ

ইনপুট স্ট্রিংয়ের অক্ষরগুলির মধ্য দিয়ে লুপ করুন।

≡ι

প্রতিটি চরিত্রটি স্যুইচ করুন।

o⟦⭆θ#⟧

যদি এটি হয় oতবে #তার নিজস্ব লাইনে এস দিয়ে প্রতিস্থাপন ইনপুট স্ট্রিংটি মুদ্রণ করুন ।

e«→P⁻Lθ²↙

যদি এটি eডানদিকে সরানো -হয় তবে ইনপুট স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম দুটি এর একটি লাইন মুদ্রণ করুন, তারপরে নীচে এবং বাম দিকে যান।


3

বাশ, 87 বাইট

ছাড়া sed:

f(){ printf %$1s|tr \  $2;}
c=${1//o/`f ${#1} B`
}
echo "${c//re/ `f $[${#1}-2] F` 
}"

@ মানাত ওয়ার্ককে ধন্যবাদ।

সঙ্গে sed(90 বাইট):

f(){ printf %$1s|tr \  $2;}
echo $1|sed "s/o/`f ${#1} B`\n/g;s/re/ `f $[${#1}-2] F` \n/g"

আপনি কি আমাদের কিছু নমুনা ব্যবহার দেখাতে পারেন? আপনার পরামিতি 2 পরামিতি আশা করে আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি।
manatwork

আপনি এটি লিখিত স্ক্রিপ্টে লিখুন test.sh। তারপর, আপনি নিম্নরূপ কম্যান্ড লাইন থেকে test.sh আহবান bash test.sh oreoorererereoofচরিত্রের $2 $1সংখ্যার পুনরাবৃত্তি করতে প্রয়োজন
সবুজ

উফ। আমি ফাংশনটি পুরোপুরি ভুল বুঝেছি। সেখানে আরও কিছু ছোটখাটো পরিবর্তন করা যেতে পারে: এটি অনলাইনে চেষ্টা করুন!
manatwork



3

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 71 বাইট

s=>s.Aggregate("",(a,c)=>a+(c>111?" ":"\n".PadLeft(s.Length+c/5-21,c)))

এটি অনলাইন চেষ্টা করুন!

নিশ্চিতভাবে অজ্ঞতার জবাবের এম্বেডমেন্ট থেকে কিছু ধারণা নেওয়া হয়েছে ।

-AS বাইটস কেবলমাত্র এএসসিআইআইকে ধন্যবাদ!

সামগ্রিক ধারণাটি এই নিয়মগুলি অনুসরণ করে ইনপুট অক্ষরগুলির চেয়ে একটি স্ট্রিং সমষ্টি গণনা করা হয়:

  • যদি এর rমুখোমুখি হয় তবে ইনডেন্টেশনের জন্য একটি একক স্থান অক্ষর যুক্ত করুন । আমরা জানি পরবর্তী চরিত্রটি একটি হবে e
  • যদি কোনও oবা এর eমুখোমুখি হয় তবে বর্তমান অক্ষরটিকে নির্দিষ্ট সময় উল্লেখ করে একটি নতুন লাইন বা কিছু প্যাডিং এবং একটি নতুন লাইনে প্রিপেন্ড করে একটি স্ট্রিং তৈরি করুন।
  • পুনর্বার বারের সংখ্যা ইনপুট স্ট্রিংয়ের দৈর্ঘ্য এবং বর্তমান লাইনটি ইন্ডেন্টড কিনা তা নির্ধারিত হয়।
  • PadLeftফাংশন পুনরাবৃত্তি অক্ষর স্ট্রিং জেনারেট করতে ব্যবহার করা হয়।

ফলাফল এই সমস্ত স্ট্রিং এর সংক্ষিপ্তকরণ।



@ এএসসিআইইনালি - ধন্যবাদ :)
দানা

> ফিলিংয়ের প্রতিটি পাশে শ্বেত স্পেস প্যাডিং প্রয়োজন
ASCII-


আমি এটি লক্ষ্য করি নি :) যদিও, পোস্ট করা উত্তরগুলি পর্যালোচনা করে 1/2 সম্পর্কে উত্তরগুলিও এটি ভুলভাবে করেছে। ভাল ধরা যদিও!
দানা

3

পাইথ , 28 বাইট

FNzIqN"o"*lzN)IqN"r"+d*-lz2N
FNz                              For each value, N, in input
   IqN"o"                        if the character is "o"
         *lzN                    return the character times the length of the input
             )                   end if
              IqN"r"             if the character is "r"
FNzIqN"o"*lzN)IqN"r"+d*-lz2N
                        *-lz2N   return the character times length - 2
                    +d           padded on the left with " "

এখানে চেষ্টা করুন! এটি একটি লুপ ব্যবহার করে।

পাইথ, 30 বাইট

(স্ট্রিং প্রতিস্থাপন হিসাবে)

::z"o"+*lz"="b"re"++d*-lz2"~"b
 :z"o"                           With the input, replace "o" with
       *lz"="                    "=" times the length of the input
      +      b                   and a newline added to the end
:             "re"               With the input, replace "re" with
                     *    "~"    "~" times
                      -lz2       the length of the input minus 2
                   +d            padded on the left with " "
                  +          b   and a newline added to the end

এখানে চেষ্টা করুন! এটি স্ট্রিং প্রতিস্থাপন ব্যবহার করে।

আমি সত্যিই পাইথন পছন্দ করি (এটিতে আমি আমার মূল পরীক্ষার স্ক্রিপ্টগুলি লিখেছিলাম), তাই আমি ভেবেছিলাম মজাদার জন্য আমি পাইথ এন্ট্রি করব :)


1
এই 37 বাইট না? আমি ভেবেছিলাম পাইথ পাইথনের মতো কোডপেজ হিসাবে পাইথ ডিফল্ট ASCII ব্যবহার করে, যদি আমি সঠিকভাবে মনে করি। সুতরাং আপনার কোডটি 33 টি অক্ষর হলেও উভয়ই এবং প্রতিটি তিনটি বাইট। নাকি আমি এখানে কিছু মিস করছি?
কেভিন ক্রুইজসেন

ভাল কল, আমি বুঝতে পারি নি (টিওআরুনে কাজ করার জন্য আমি পাইথ পাইনি, তাই আমি হিরকুয়াপ পৃষ্ঠায় দৈর্ঘ্যের কাউন্টারটি ব্যবহার করেছি)। লুপের জন্য আমি কেবল অক্ষরটি প্রতিস্থাপন করতে পারি N, এমনকি কয়েকটা বাইট সংরক্ষণ করে!
গামাগেমস

ভেবেছিলাম এরকম কিছু হয়েছিল। :) আমার একবার আমার 05AB1E উত্তর নিয়ে একই সমস্যা ছিল যা এর কোড পৃষ্ঠার বাইরের অক্ষর ব্যবহার করছিল। দুর্ভাগ্যক্রমে টিআইও বেশিরভাগ গল্ফিং ভাষার জন্য অক্ষর এবং বাইটগুলি প্রদর্শন করে। জাভা বা পাইথনের জন্য টিআইও সঠিকভাবে 33 chars, 37 bytesজানিয়ে দেবে, তবে টিআইওতে গল্ফিং ভাষায় নয়। তবে আপনার সমাধানগুলিতে কেবল সেই চরিত্রগুলি পরিবর্তন করা প্রকৃতপক্ষে সমস্যাটিকে সংশোধন করে, সুতরাং এটি এখানে এত বড় বিষয় নয়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন অপেক্ষা করুন, 05 এ বি 1 ই একটি আসল এসবিসিএস ব্যবহার করে না?
ASCII-

1
আপনি যদি আগ্রহী হন তবে মনে হয় এটি আমার জন্য টিআইওতে অনায়াসে কাজ করবে
নিডজেজেকোব

3

রুবি , 62 60 বাইট

->s{s.gsub /./,?r=>" #{(?**z=s.size)[0..-3]}
",?o=>?O*z+?\n}

এটি অনলাইন চেষ্টা করুন!

ব্যবহার Oকুকির জন্য, *ভর্তি জন্য।

-1 হোয়াইটস্পেস সম্পর্কে নিয়ম শিথিল করার কারণে একটি মূর্খ ভুল এবং অন্য একটি -1 নির্দেশ করে @ ম্যানটওয়ার্ককে ধন্যবাদ।


.gsubএর পরামিতিগুলির আশেপাশে প্রথম বন্ধনের দরকার নেই ।
manatwork


2

ক্লোজার , 137 বাইট

(fn[f](let[w(count f)r #(apply str(repeat % %2))](clojure.string/join"\n"(replace{\o(r w \#)\e(str \ (r(- w 2)\-) \ )}(remove #{\r}f)))))

এগুলি ব্যয়বহুল হওয়ায় আমি গল্ফযুক্ত সংস্করণে প্রিন্টআউটে সুন্দর অক্ষরগুলি ব্যবহার করছি না। মুদ্রণের জন্য একটি স্ট্রিং ফিরিয়ে দেয়।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা জন্য নীচে দেখুন।

প্রি-golfed:

; Backslashes indicate a character literal
(defn oreo [format-str]
  (let [width (count format-str)

        ; A helper function since Clojure doesn't have built-in string multiplication
        str-repeat #(apply str (repeat % %2))

        ; Define the layers
        cookie (str-repeat width \█)
        cream (str \ (str-repeat (- width 2) \░) \ )]

    (->> format-str ; Take the input string,
         (remove #{\r}) ; remove r for simplcity,
         (replace {\o cookie, \e cream}) ; replace the remaining letters with the layers,
         (clojure.string/join "\n")))) ; and join the layers together with newlines

2

ডার্ট , 120 106 107 বাইট

f(s)=>s.replaceAll('o',''.padRight(s.length,'#')+'\n').replaceAll('re',' '.padRight(s.length-1,'-')+' \n');

এটি অনলাইন চেষ্টা করুন!

  • +1 বাইট: শ্বেত স্পেস যোগ করা হয়েছে

এটি অবৈধ: "ফিলিংয়ের প্রতিটি পাশে সাদা স্থানের প্যাডিং প্রয়োজন"
নিডজেজেকোব

ওহ, তাহলে কিছু মনে করবেন না, আমি শীঘ্রই এটি সংশোধন করব। তথ্যের জন্য ধন্যবাদ, আমি এটি মিস করেছি
এলকান

2

পাইথন 2 , 77 76 72 বাইট

lambda i:'\n'.join((x*len(i),' '+x*(len(i)-2))[x>'o']for x in i if'e'<x)

এটি অনলাইন চেষ্টা করুন!

কুকির বাইরের অংশটি 'ও' এবং ভরাটটি 'আর'।


68 বাইট । যদিও আমি সন্দেহ করি যদি আপনি সত্যিকার অর্থে চলমান জায়গাগুলি বাদ দিতে পারেন
তবে অনুমানগুলি

ধন্যবাদ @ এরিকথ আউটগলফার ভাবল একটা লম্বা খাটো হয়ে যাবে! এই ক্ষেত্রে অনুমান। ভরাট উপর বাধ্যতামূলক পিছনে স্থান সম্পর্কে প্রয়োজনীয়তা ছিল না। সত্যই অ্যাস্কি আর্ট চ্যালেঞ্জের সাথে পয়েন্টটি দেখতে পাচ্ছেনা তবে ওপি যদি এটির প্রয়োজন হয় তবে আমি অনুমান করি আমার উত্তর যাইহোক অবৈধ।
এলপেড্রো

এখন সংশোধন করা হয়েছে ...
এলপিড্রো

কেন এটি 76 এ ফিরিয়ে আনতে হবে? শুধু +' 'পরে রাখা (l-2)। এছাড়াও, আপনার একটি টাইপো আছে, *' 'অবশ্যই হবে +' '
এরিক আউটগল্ফার

আমার বর্তমান সমাধানটি আমি এটাই করেছি। আগামীকাল (পরে আজ) আপনার ইঙ্গিতগুলি ঘনিষ্ঠভাবে দেখবে। এখানে বেশ দেরি হয়ে গেছে এবং আমি সারাদিন তুষারকে টানতেছি তাই গল্ফের জন্য খুব ক্লান্ত হয়ে পড়েছি। যদিও
টিপসটির

2

x86-64 মেশিন কোড (লিনাক্স), 97 বাইট

0000000000000000 <oreo_asm>:
   0:   56                      push   %rsi
   1:   57                      push   %rdi

0000000000000002 <len>:
   2:   48 ff c7                inc    %rdi
   5:   80 3f 00                cmpb   $0x0,(%rdi)
   8:   75 f8                   jne    2 <len>
   a:   49 89 fc                mov    %rdi,%r12
   d:   5f                      pop    %rdi
   e:   49 29 fc                sub    %rdi,%r12
  11:   4d 31 f6                xor    %r14,%r14
  14:   eb 18                   jmp    2e <outer_loop.skip>

0000000000000016 <extra>:
  16:   41 c6 01 20             movb   $0x20,(%r9)
  1a:   c6 03 20                movb   $0x20,(%rbx)
  1d:   49 ff ce                dec    %r14
  20:   eb 06                   jmp    28 <outer_loop>

0000000000000022 <newline>:
  22:   c6 06 0a                movb   $0xa,(%rsi)
  25:   48 ff c6                inc    %rsi

0000000000000028 <outer_loop>:
  28:   49 ff c6                inc    %r14
  2b:   48 ff c7                inc    %rdi

000000000000002e <outer_loop.skip>:
  2e:   44 8a 07                mov    (%rdi),%r8b
  31:   41 80 f8 65             cmp    $0x65,%r8b
  35:   74 df                   je     16 <extra>
  37:   45 84 c0                test   %r8b,%r8b
  3a:   74 23                   je     5f <done>
  3c:   48 89 f3                mov    %rsi,%rbx

000000000000003f <inner_loop>:
  3f:   44 88 06                mov    %r8b,(%rsi)
  42:   49 89 f1                mov    %rsi,%r9
  45:   48 ff c6                inc    %rsi
  48:   48 31 d2                xor    %rdx,%rdx
  4b:   48 89 f0                mov    %rsi,%rax
  4e:   48 2b 04 24             sub    (%rsp),%rax
  52:   4c 29 f0                sub    %r14,%rax
  55:   49 f7 f4                div    %r12
  58:   48 85 d2                test   %rdx,%rdx
  5b:   74 c5                   je     22 <newline>
  5d:   eb e0                   jmp    3f <inner_loop>

000000000000005f <done>:
  5f:   5e                      pop    %rsi
  60:   c3                      retq

এই x86-64 ফাংশনটি আরএসআই-র ইনপুট স্ট্রিংয়ের পয়েন্টারে নিয়ে যায় এবং আরডিআই-র পয়েন্টারে শুরু করে আউটপুট তৈরি করে (লিনাক্সে সি ফাংশন থেকে প্রথম দুটি আর্গুমেন্ট পাস করার জন্য এটি ব্যবহার করা রেজিস্টারগুলি)। সুবিধার্থে, আমি এর জন্য একটি সি ++ র‌্যাপার লিখেছি যা ভাল ইনপুট স্যানিটাইজেশন করে এবং আউটপুট প্রিন্ট করে। কোডটি এখানে অবস্থিত হতে পারে । এটি এই ফাংশনটির জন্য আমি লিখেছি এমন আসল নাসম সিনট্যাক্স অ্যাসেমবিলিটিও দেখায় (পাশাপাশি আমি প্রথমে কাজ করেছিলাম এমন নন-গল্ফযুক্ত সংস্করণ)।

কয়েকটি বিষয় লক্ষণীয় হ'ল এই কোডটি কোনও কলি সেভ হওয়া নিবন্ধগুলিকে সম্মান করে না, যার অর্থ এই ফাংশনটি কল করার পরে কিছুক্ষণ চালানো হলে সি ++ কোড সম্ভবত ক্র্যাশ হবে। আমার মেশিনে এটি হয় না, তবে এটি বিস্ময়কর। আউটপুট স্ট্রিংটি সীমিত করতে আমি নাল বাইটও যুক্ত করি না এবং এর পরিবর্তে আউটপুট স্ট্রিংয়ের জন্য বরাদ্দ করা স্থানটি বাইট দিয়ে প্রাক-পূর্ণ হয়। (যদি এটি অনুমোদিত না হয় তবে আমি 3 বাইট ব্যয়ে নাল টার্মিনেটর যুক্ত করতে পারি)।

এই কোডটির যুক্তিগতভাবে স্ট্রিংয়ের দৈর্ঘ্য গণনা করা হয়, তারপরে ইনপুট স্ট্রিং-এ দেখা প্রতিটি 'ও' এবং 'আর' অক্ষরের জন্য এই দৈর্ঘ্যের একটি লাইন তৈরি করা হয় এবং তারপরে কোনও 'ই' অক্ষর দেখা যায়, প্রথমে প্রতিস্থাপন করে এবং স্থানের অক্ষর সহ পূর্ববর্তী লাইনে শেষ অক্ষর।

সি ++ এবং নাসম সোর্স কোডটি মিশ্রণ করতে এবং পরিচালনা করতে আমি অনলাইনে কোথাও খুঁজে পাচ্ছি না, সুতরাং এটি কার্যকর হয় তা প্রমাণ করার জন্য আমি কয়েকটি ছোট র‌্যাপার কোড লিখতে পারি। অন্যথায় আপনার কমান্ডটি দিয়ে আমি যে লিঙ্কটি দিয়েছি তাতে মেকফাইলটি দিয়ে এটি সঙ্কলন করতে এবং চালাতে সক্ষম হওয়া উচিত:

$ make oreo ASM_FILE=oreo_golf.nasm
$ ./oreo oreoorererereoo --use_asm

আমি জিসিসি দ্বারা গ্রহণযোগ্য কিছুতে অ্যাসেমব্লিকে ফর্ম্যাট করতে সক্ষম হয়েছি, তাই এটি অনলাইনে চেষ্টা করুন!


1
ওহ আমার, এখন এই এন্ট্রি!
গামাগেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.