একটি শব্দ সিঁড়ি তৈরি করুন


30

কমপক্ষে দুটি শব্দের একটি তালিকা দেওয়া হয়েছে (কেবলমাত্র ছোট হাতের অক্ষর দিয়ে তৈরি), প্রথমে বাম থেকে ডানদিকে প্রথমে লেখার দিক পরিবর্তন করে শব্দের একটি ASCII মই গঠন এবং প্রদর্শন করুন ।

আপনি যখন কোনও শব্দ লেখা শেষ করেন, দিক পরিবর্তন করুন এবং কেবল তখনই পরবর্তী শব্দটি লেখা শুরু করুন।

যদি আপনার ভাষা শব্দের তালিকাকে সমর্থন করে না বা এটি আপনার পক্ষে আরও সুবিধাজনক হয় তবে আপনি ইনপুটটিকে একক স্পেস দ্বারা পৃথক করে শব্দের স্ট্রিং হিসাবে নিতে পারেন।

শীর্ষস্থানীয় এবং পশ্চাদপসরণের সাদা স্থানগুলি অনুমোদিত।

["hello", "world"] অথবা "hello world"

hello
    w
    o
    r
    l 
    d

এখানে আমরা লেখার মাধ্যমে শুরু করি helloএবং যখন আমরা পরবর্তী শব্দটিতে আসি (বা স্ট্রিং হিসাবে ইনপুটটির ক্ষেত্রে - একটি স্থান পাওয়া যায়), আমরা আপেক্ষিক দিকটি ডানদিকে পরিবর্তন করি এবং লিখতে থাকিworld

পরীক্ষার কেস:

["another", "test", "string"] or "another test string" ->   

another
      t
      e
      s
      tstring


["programming", "puzzles", "and", "code", "golf"] or "programming puzzles and code golf" ->

programming
          p
          u
          z
          z
          l
          e
          sand
             c
             o
             d
             egolf

["a", "single", "a"] or "a single a" ->

a
s
i
n
g
l
ea

ওয়াইনিং মানদণ্ড

প্রতিটি ভাষায় বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়লাভ করে। গল্ফিং ভাষাগুলি দ্বারা নিরুৎসাহিত হবেন না!

স্যান্ডবক্স



1
@ আরনাউল্ড হ্যাঁ, আমি এটি বিবরণে যুক্ত করব।
গ্যালেন ইভানভ

উত্তর:


12

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

F⮌A«↑⮌ι‖↗

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: পাঠ্যটি পেছনের দিকে আঁকিয়ে, প্রতিটি শব্দের পরে ক্যানভাস স্থানান্তর করে কাজ করে। স্ট্রিং ইনপুট জন্য 10 বাইট:

F⮌S≡ι ‖↗←ι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: ফাঁকা জায়গাগুলির জন্য ক্যানভাস স্থানান্তর করে, পাঠ্যটি পিছনের দিকে টানুন।


9

সি (জিসিসি) , 94 78 74 বাইট

-4 জোহান ডু টোয়েট থেকে

o,f;g(int*s){for(o=f=0;*s;s++)*s<33?f=!f:printf("\n%*c"+!f,f*(o+=!f),*s);}

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

মই ছাপায়, একসময় একটি অক্ষর (ইনপুট এর)। শব্দের একটি স্পেস-বিভাজিত স্ট্রিং নেয়।


1
পরিবর্তন করতে পারে *s==32মধ্যে *s<33একটি বাইট সংরক্ষণ করুন।
গ্যাস্ট্রোপনার


6

05 এ বি 1 ই , 19 16 বাইট

€θ¨õšøíJD€gs24SΛ

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

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

সাধারণ ব্যাখ্যা:

শুধু @Emigna এর 05AB1E উত্তর (তাকে BTW ভোট দিন করতে ভুলবেন না !!), আমি ব্যবহার ক্যানভাস builtinΛ

আমি যে বিকল্পগুলি ব্যবহার করি সেগুলি ভিন্ন (তবে আমার উত্তরটি আরও দীর্ঘ কারণেই ..):

  • b(মুদ্রণের জন্য স্ট্রিং): আমি তালিকার প্রথম স্ট্রিংটি অপরিবর্তিত রেখে দিয়েছি এবং তালিকার প্রতিটি স্ট্রিংয়ে পেছনের চরিত্রটি যুক্ত করছি। উদাহরণস্বরূপ ["abc","def","ghi","jklmno"]হয়ে যাবে["abc","cdef","fghi","ijklmno"]
  • a(লাইনগুলির আকার): এটি এই স্ট্রিংগুলির সমান হবে, সুতরাং [3,4,4,7]উপরের উদাহরণের সাথে।
  • c(প্রিন্ট করার দিকনির্দেশ):, [2,4]যা মানচিত্র করবে[→,↓,→,↓,→,↓,...]

সুতরাং উপরের উদাহরণটি ধাপে ধাপে নিম্নলিখিতগুলি করবে:

  1. abcদিক আঁকুন2 /
  2. cdefদিক আঁকুন4 / (যেখানে প্রথম অক্ষরটি শেষ চরিত্রের সাথে ওভারল্যাপ হয়, এজন্য আমাদের তালিকাটি এটির মতো পরিবর্তন করতে হয়েছিল)
  3. fghiদিক আঁকুন2 / আবার (পিছনে / শীর্ষস্থানীয় অক্ষরের ওভারল্যাপ সহ)
  4. ijklmnoদিক আঁকুন4 / আবার (ওভারল্যাপ সহ)
  5. টানা ক্যানভাসের ফলাফলটি তাত্ক্ষণিকভাবে STDOUT এ আউটপুট করুন

কোড ব্যাখ্যা:

€θ                # Only leave the last characters in the (implicit) input-list
  ¨               # Remove the last one
   õš             # And prepend an empty string "" instead
     ø            # Create pairs with the (implicit) input-list
      í           # Reverse each pair
       J          # And then join each pair together to single strings
        Dg       # Get the length of each string (without popping by duplicating first)
           s      # Swap so the lengths are before the strings
            24S   # Push [2,4]
               Λ  # Use the Canvas builtin (which outputs immediately implicitly)

1
আপনার সংস্করণ 2/3/4 এর সাথে 3 বাইট সংরক্ষণ করতে পারে €θ¨õšsøJ
এমিগিনা

@ এমিগনা ধন্যবাদ! এখন আমি এটি দেখতে দেখতে এটি দেখতে খুব সহজ দেখাচ্ছে .. এবং এখানে তার পরিবর্তে আমার কাছে তিনটি বিকল্প 19 বাইটার ছিল ..
কেভিন ক্রুইজসেন

কিছু বিকল্প €θ¨õšsøJহয় õIvy«¤}), õUεXì¤U}এবংε¯Jθ줈} (শেষ দুটি প্রয়োজন --no-lazy)। দুর্ভাগ্যক্রমে, সেগুলি সমস্ত একই দৈর্ঘ্যের। যদি কোনও ভেরিয়েবলের ডিফল্ট হয় তবে এটি আরও সহজ হবে ""...
গ্রিমি

@ গ্রিমি " যদি ভেরিয়েবলগুলির মধ্যে একটি ডিফল্ট হয়ে যায় তবে এটি আরও সহজ হবে ""... " আপনি কি সন্ধান করছেন õ, বা আপনি যদি X/ Y/ ®থাকতেন তবে ""? বিটিডব্লিউ, এমিগনার উত্তরের মন্তব্যে সুন্দর 13 বাইটার। [→,↙,↓,↗]আপনি যে দিকনির্দেশ ব্যবহার করেছেন তার সাথে আমার এবং তার টিবিএইচ উভয়ের চেয়ে বেশ আলাদা ।
কেভিন ক্রুইজসেন

õপরিবর্তনশীল নয়। হ্যাঁ, আমি বলতে চাইছি ক পরিবর্তনশীল যা ডিফল্ট হয় ""। আমি আক্ষরিকভাবে õUএকটি স্নিপেটের শুরুতে করি, তাই যদি এক্স (বা অন্য কোনও পরিবর্তনশীল) এর সাথে ডিফল্ট হয় "", তবে এটি তুচ্ছভাবে দুটি বাইট সংরক্ষণ করতে পারে। ধন্যবাদ! হ্যাঁ, আমি কিছুটা নতুন, তবে আমি এমিগানার উত্তর থেকে 2 টি ডামি দৈর্ঘ্যের সাথে সত্য লেখার ছেদ করার ধারণা পেয়েছি।
গ্রিমি

6

05AB1E , 1 14 13 বাইট

গ্রিমে ধন্যবাদ 1 বাইট সংরক্ষণ করা

€ðÀD€g>sŽ9÷SΛ

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

ব্যাখ্যা

                 # example input ["Hello", "World"]
€ðÀ              # push a space after each word
                 # STACK: ["Hello"," ","World"," "]
   D             # duplicate
    €g>          # get the length of each word in the copy and add 1
                 # these are the lengths to draw
                 # STACK: ["Hello"," ","World"," "], [6, 2, 6, 2]
       s         # swap the list of word to the top of the stack
        Ž9÷S     # push [2, 5, 4, 1]
                 # this is the list of directions to draw
                 # 1=northeast, 2=east, 4=south, 5=southwest
            Λ    # paint on canvas

1
ওহ ডাং, দুর্দান্ত অ্যাপ্রোচ! আমি আমার 19-বাইট সংস্করণটি এক মুহুর্তে পোস্ট করব, তবে বিফুরকেট এবং মাত্র দুটি অক্ষর আঁকার সাথে খুব সুন্দর।
কেভিন ক্রুইজসেন

1
বিটিডব্লিউ, আপনি জানেন যে ছেদ করার জন্য একটি বিল্টিন আছে, তাই না? €Y¦হতে পারে 2.ý(এটি এখানে কোনও বাইট সংরক্ষণ করবে না)। এবং এটিই প্রথম যখন আমি নিয়মিত মানচিত্রের তুলনায় তুলনামূলকভাবে নতুন আচরণটি দেখেছি ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: আমি এর আগে ব্যবহার দেখেছি কিন্তু আমি কখনই নিজেকে ব্যবহার করি নি তাই আমি এটি ভেবে দেখিনি। আমার কাছে নিয়মিত মানচিত্র এবং আমি প্রায়শই এটি ব্যবহার করেছি, অন্যটি হ'ল "নতুন" মানচিত্র;)
এমিগানা


2
আমার খারাপ, আমি এমনকি / বিজোড় অসুবিধা লক্ষ্য করতে ব্যর্থ! এখানে 13 যে আসলে কাজ করা উচিত আছে: € বাবা € ছ> sŽ9 ÷ SΛ
Grimmy

5

ক্যানভাস , 17 12 11 10 বাইট

ø⁸⇵{⟳K└×∔⤢

এখানে চেষ্টা করুন!

ব্যাখ্যা:

ø⁸⇵{⟳K└×∔⤢  full program taking array as input (loaded with ⁸)

ø         push an empty canvas               ["test", "str"], ""
 ⁸⇵{      for each input word, in reverse:   "str", "test" (showing 2nd iter)
    ⟳       rotate the word vertically       "str", "t¶e¶s¶t"
     K      pop off the last letter          "str", "t¶e¶s", "t"
      └     swap the two items below top     "t¶e¶s", "str", "t"
       ×    prepend                          "t¶e¶s", "tstr"
        ∔   vertically append                "t¶e¶s¶tstr"
         ⤢  transpose the canvas             "test
                                                 s
                                                 t
                                                 r"

5

জাভাস্ক্রিপ্ট (ES8),  91 79  77 বাইট

শব্দের একটি অ্যারে হিসাবে ইনপুট নেয়।

a=>a.map((s,i)=>i&1?[...s].join(p):s+=p+=''.padEnd(s.length-!i),p=`
`).join``

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

মন্তব্য

a =>                 // a[] = input array
  a.map((s, i) =>    // for each word s at position i in a[]:
    i & 1 ?          //   if this is a vertical word:
      [...s].join(p) //     split s and join it with p
    :                //   else:
      s +=           //     add to s:
        p +=         //       add to p:
          ''.padEnd( //         as many spaces
            s.length //         as there are letters in s
            - !i     //         minus 1 if this is the 1st word (because it's not connected
          ),         //         with the last letter of the previous vertical word)
    p = `\n`         //   start with p = linefeed
  ).join``           // end of map(); join everything

pলাইন শেষের ট্র্যাক রাখার জন্য ব্যবহার খুব স্মার্ট +1
ডাউনগোট


5

ব্রেনফাক , 57 বাইট

->,[[.<+>,],[<<[-]++++++++++.--[-<++++>]>[-<+<.>>]>.<,],]

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

NUL পৃথক স্ট্রিং হিসাবে ইনপুট নেয়। নোট করুন যে এটি EOF 0 হিসাবে ব্যবহার করছে এবং মই 256 স্পেস ছাড়িয়ে গেলে কাজ করা বন্ধ করবে।

ব্যাখ্যা:

-           Initialise counter as -1
>,[         Start ladder
   [.<+>,]  Print the first word, adding the length of it to the counter
   ,[       Loop over each letter of the second word
      <<[-]++++++++++.    Print a newline
      --[-<++++>]         Create a space character
      >[-<+<.>>]          Print counter many spaces
      >.<,                Print the letter and move to the next letter
   ] 
   ,        Repeat until there are no more words
]

আমি কি ব্রেইন-ফ্ল্যাকের সমাধান চাইতে পারি?
গ্যালেন ইভানভ

বিএফ বোঝার জন্য আমার প্রথম প্রয়াস। ২ টি প্রশ্ন: .৩ নং লাইনে (মন্তব্য করা সংস্করণে) চর না থাকলে প্রথম শব্দটি কীভাবে মুদ্রিত হচ্ছে ? আমি টিআইও-তে ইনপুট নিয়ে খেলার চেষ্টা করছিলাম। ম্যাকে, আমি ইউনিকোড পাঠ্য ইনপুটটিতে কীবোর্ডটি পরিবর্তন করেছি এবং টাইপ করে নতুন শব্দ সীমানা তৈরি করার চেষ্টা করেছি option+0000কিন্তু এটি কার্যকর হয়নি। কোন ধারণা নেই কেন?
জোনা

1
@ জোনাঃ আহ ভাল ধরা, আমি ভুল করে ব্যাখ্যাটির -পরিবর্তে টাইপ করেছি .। টিআইওতে নুল বাইট যুক্ত করার জন্য, আমি কনসোলটি ব্যবহার করার মতো এবং একটি কমান্ড চালানোর পরামর্শ দিচ্ছি $('#input').value = $('#input').value.replace(/\s/g,"\0");। আমি জানি না কেন আপনার পথে কাজ হয়নি
জো কিং

5

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

a=>' '+a.replace(/./g,c=>1-c?(a=!a,''):a?(p+=' ',c):p+c,p=`
`)

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

ধন্যবাদ রিক হিচকক , 2 বাইট সংরক্ষণ করা হয়েছে।


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

a=>a.replace(/./g,c=>1-c?(t=!t,''):t?p+c:(p+=p?' ':`
`,c),t=p='')

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

a => a.replace (/./ g, c => (// প্রতিটি অক্ষরের জন্য স্ট্রিং এ
    1 - গ? // যদি (সি স্থান হয়)
      (t =! t, // আপডেট t: বুলিয়ান মান শব্দের সূচক বর্ণনা করে
                       // সত্যবাদী: বিজোড় সূচকযুক্ত শব্দ;
                       // মিথ্যা: এমনকি সূচকযুক্ত শব্দ
        ''): // স্থানের জন্য কিছুই উত্পন্ন করুন
    T? // if (বিজোড় সূচক) যার অর্থ উল্লম্ব
      p + c: // '\ n', কিছু স্পেস এবং একটি সিগল চরিত্র যুক্ত করুন
                       // অন্য
      (পি + = পি? '': '\ n', // উল্লম্ব শব্দের জন্য প্রিপেন্ড স্ট্রিং প্রস্তুত করুন
         গ) // একটি একক অক্ষর যুক্ত করুন
),
  t = p = '' // আরম্ভ করুন
)

আমার মনে হয় আপনি প্রতিস্থাপন 2 বাইট সংরক্ষণ করতে পারবেন tসঙ্গে a, তারপর মুছে ফেলারt=
রিক হিচককের

5

অহুই (এসোটোপ) , 490 458 455 বাইট

삭뱃밸때샏배샐배새뱄밿때빠뱋빼쌘투@밧우
@두내백뱃빼선대내백뱃섣@여우샐처샐추
희차@@@뭏누번사@빼뭏오추뻐@@@배
By@@@새대백@@@우뻐색
Legen@@빼쵸누번@@빼
DUST@@@샌뽀터본섣숃멓
@@@@@@@오어아@먛요아@@샏매우
@@@@@아@@@@@@오@@@@@서어
@@@@@희차@@요

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

কোরিয়ান (3 বাইট) পরিবর্তে পূর্ণ-প্রস্থের অক্ষর (2 বাইট) ব্যবহার করে কিছুটা গল্ফ করা হয়েছে।

ব্যাখ্যা

অহুই হ'ল বেফং-এর মতো এসোলাং। রঙ সহ কোড এখানে: রঙের সাথে অহুই কোড 1 পার্ট বর্তমান অক্ষরটি স্থান কিনা তা পরীক্ষা করে।

? 2 অংশগুলি ডান থেকে বাম বা উপরে থেকে নীচে শব্দ লিখেছিল কিনা তা পরীক্ষা করে।

? 3 অংশ ফাঁকা ফাঁকা ফাঁকা শর্ত।

? 4 অংশগুলি পরীক্ষা করে যে বর্তমান অক্ষরটি লাইনের শেষে রয়েছে (-1)।

লাল অংশ স্ট্যাক ইনিশিয়ালেশন হয়। অহুই স্ট্যাক ব্যবহার করে (থেকে শুরু Nothingকরে) মান সঞ্চয় : 28 টি স্ট্যাক) ব্যবহার করে।

কমলা অংশ ইনপুট নেয় ( ) এবং বিয়োগ করে এটি স্থান কিনা তা পরীক্ষা করে if32 আসকি কোড) ।

ডান থেকে বামে লিখলে সবুজ অংশে স্থানের দৈর্ঘ্যের মান সংরক্ষণ করে স্ট্যাকের জন্য 1 যুক্ত করুন।

আপ-টু-ডাউন লিখলে বেগুনি অংশটি ফাঁকা জায়গাগুলির জন্য লুপ।

বর্তমান বর্ণচিহ্ন কিনা তা ধূসর অংশ পরীক্ষা করুন -1 যোগ করে ।

নীল অংশ বর্তমান অক্ষর মুদ্রণ করে, এবং পরবর্তী চরিত্রের জন্য প্রস্তুত।


আপনি এই পোস্টে ছবিটি তৈরি করতে কী ব্যবহার করেছেন?
বিবি 494

@ বিবি 9৪ বেস হ'ল অহিইচেম , সুন্দর বিল্ড কোরিয়ান অহুই অনলাইন (সাজানো) আইডিই। এবং আমি এটি রঙ করতে পাওয়ারপয়েন্ট ব্যবহার করেছি।
লেজেনডেএসটি

4

জাপট -P , 15 বাইট

ò mrÈ+R+YÕùT±Xl

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

ò mrÈ+R+YÕùT±Xl     :Implicit input of string array
ò                   :Partition into 2s
  m                 :Map each pair
   r                :  Reduce by
    È               :  Passing through the following function as X & Y
     +              :    Append to X
      R             :    Newline
       +            :    Append
        YÕ          :    Transpose Y
          ù         :    Left pad each line with spaces to length
           T±       :      T (initially 0) incremented by
             Xl     :      Length of X
                    :Implicitly join and output

4

বাশ, ১১৯ টি চর

X=("\e7" "\n\e8")
w="$@"
l=${#w}
d=0
for((i=0;i<l;i++));do
c="${w:$i:1}"
[ -z $c ]&&d=$((1-d))||printf ${X[$d]}$c
done

এটি কার্সারটি সরানোর জন্য এএনএসআই নিয়ন্ত্রণ ক্রম ব্যবহার করে - এখানে আমি কেবল সংরক্ষণ \e7এবং পুনরুদ্ধার ব্যবহার করছি \e8; \nযদি পূর্বে টার্মিনালের নীচে থাকে তবে পুনরুদ্ধারটি আউটপুট স্ক্রোল করার জন্য উপস্থাপিত করতে হবে । আপনি ইতিমধ্যে না থাকলে কিছু কারণে এটি কাজ করে না টার্মিনালের নীচে । * শ্রাগ *

লুপ সূচকটি ব্যবহার করে বর্তমান অক্ষরটি $cইনপুট স্ট্রিং থেকে একক-চরিত্রের সাবস্ট্রিং হিসাবে বিচ্ছিন্ন$wfor$i হিসাবে ।

আমি এখানে আসল কৌশলটিই ব্যবহার করছি [ -z $c ]যা ফিরে আসবে true, অর্থাত্ স্ট্রিংটি ফাঁকা, কখন $cকোনও স্থান, কারণ এটি অব্যক্ত। বাশের সঠিক ব্যবহারের ক্ষেত্রে, আপনি -zঠিক এই পরিস্থিতি এড়াতে স্ট্রিংটি পরীক্ষা করে দেখছেন । এটি আমাদের এবং এর $dমধ্যবর্তী দিকের পতাকাটি ফ্লিপ করতে দেয় , যা পরবর্তী এএনএসআই নিয়ন্ত্রণ সিকোয়েন্স অ্যারেতে সূচি হিসাবে ব্যবহৃত হয়, এর পরবর্তী অ-স্থানের মানের উপর ।10X$c

আমি ব্যবহার করে এমন কিছু দেখতে আগ্রহী printf "%${x}s" $c

ওহ গোশ, আসুন কিছু সাদা জায়গা যোগ করি। আমি কোথায় আছি তা দেখতে পাচ্ছি না ...

X=("\e7" "\n\e8")
w="$@"
l=${#w}
d=0
for ((i=0;i<l;i++)); do
  c="${w:$i:1}"
  [ -z $c ] && d=$((1-d)) || printf ${X[$d]}$c
done

ওহ, যাইহোক, আপনি এই টিও.আরুন সাইটে এটি চেষ্টা করতে পারবেন না - কয়েকজনের মতো, কোনও এএনএসআই নিয়ন্ত্রণ ক্রম পরিচালনা করছে না যাতে এটি কেবল বারফ হয়।
ধনী

4

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

{$/=0;.map:{$/+=$++%2??!.comb.fmt("%$/s","
").print!!.say*.comb}}

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

বেনামি কোড ব্লক যা শব্দের একটি তালিকা নেয় এবং সরাসরি STDOUT এ প্রিন্ট করে।

ব্যাখ্যা

{                           }  # Anonymous code block
 $/=0;                         # Initialise $/ to 0
 .map:{                    }   # Map the list of words to
       $/+=                    # Increment $/ by
           $++%2??             # For even indexes
                   .comb       # Each letter of the word
                   .fmt(           ) # Formatted as
                        "%$/s"       # Padded with $/-1 spaces
                              ,"\n"  # Joined by newlines
                   .print            # And printed without a newline
                  !   # Boolean not this to add 0 to $/
                !!            # For odd indexes
                  .say        # Print with a newline
                      *.comb  # And add the length of the word

আমি কী আগ্রহী যে এই জো কীভাবে কাজ করে, আমি পার্ল 6
জোনাহ

@ জোনাহ আমি একটি ব্যাখ্যা যুক্ত করেছি
জো কিং

ধন্যবাদ, সুন্দর সমাধান।
যোনাহ

3

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

FLθ¿﹪鲫↓§θι↗»«§θι↙

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট করুন

এটি অনলাইনে চেষ্টা করুন (ভার্বোজ) অথবা এটি অনলাইনে চেষ্টা করুন (খাঁটি)

ব্যাখ্যা:

সীমার মধ্যে লুপ [0, input-length):

For(Length(q))
FLθ

সূচকটি বিজোড় হলে:

If(Modulo(i,2)){...}
﹪鲫...»

সূচীতে স্ট্রিংটি iনিম্নমুখী দিকে মুদ্রণ করুন :

Print(:Down, AtIndex(q,i));
↓§θι

এবং তারপরে কার্সারটি একবার শীর্ষ-ডানদিকে নিয়ে যান:

Move(:UpRight);
↗

অন্যটি (সূচকটি সমান):

Else{...}
«...

iনিয়মিত ডান দিকের সূচকগুলিতে স্ট্রিংটি মুদ্রণ করুন :

Print(AtIndex(q,i));
§θι

এবং তারপরে নীচে বাম দিকে একবার কার্সারটি সরান:

Move(:DownLeft);
↙



3

জে , 47 45 43 বাইট

;[`(([:<@(+/)\#&>##$#:@1 2)@])`([' '"0/[)}]

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

আমি একটি মজা পেয়েছি, ভিন্ন পদ্ধতির ...

আমি বাম প্যাডগুলি এবং ঘূর্ণিঝড়ের জেরাগুলি সহ আরও জিপগুলি দিয়ে শুরু করলাম তবে আমি বুঝতে পেরেছিলাম যে প্রতিটি অক্ষরের অবস্থান গণনা করা সহজ হবে (এটি সঠিকভাবে নির্বাচিত অ্যারের স্ক্যান যোগে ফোটে) এবং সংশোধন প্রয়োগ করে } একটি ফাঁকা করার পোড়া ইনপুট উপর ক্যানভাস।

সমাধানটি সম্পূর্ণরূপে সংশোধন করে পরিচালিত হয় }:

; [`(([: <@(+/)\ #&> # # $ #:@1 2)@])`([ ' '"0/ [)} ]
  • ; ( single verb that does all the work ) ] সামগ্রিক কাঁটাচামচ
  • ; বাম অংশটি ইনপুটটিকে রেস করে, অর্থাত্ সমস্ত অক্ষরকে একটি সংযুক্ত স্ট্রিংয়ে রাখে
  • ] ডান অংশটি ইনপুট নিজেই
  • (stuff)}আমরা সংশোধনী জেরুন্ড ফর্ম ব্যবহার করি }, যা তিনটি অংশ নিয়ে গঠিত v0`v1`v2
    • v0আমাদের "নতুন মানগুলি" দেয় যা রাজে (যেমন, একটি স্ট্রিং হিসাবে ইনপুটটির সমস্ত অক্ষর), তাই আমরা ব্যবহার করি [
    • v2আমাদের সূচনা মান দেয় যা আমরা রূপান্তর করছি। আমরা কেবল প্রয়োজনীয় মাত্রাগুলির ফাঁকা ফাঁকা ক্যানভাস চাই। ([ ' '"0/ [)আমাদের একটি আকার দেয়(all chars)x(all chars)
    • মধ্যবর্তী ক্রিয়াটি v1আমাদের অবস্থানগুলিতে কোন প্রতিস্থাপনের অক্ষর স্থাপন করবে তা নির্বাচন করে This
  • 0 0উপরের বাম দিকের অবস্থান থেকে শুরু করে , আমরা লক্ষ্য করেছি যে প্রতিটি নতুন অক্ষর পূর্ববর্তী অবস্থানের (যেমন, prev + 0 1) ডানদিকে 1 বা এক নীচে (অর্থাত্ prev + 1 0) হয়। প্রকৃতপক্ষে আমরা প্রাক্তন "শব্দের লেন 1" বার করি, তারপরের "দ্বিতীয় শব্দের লেন" বার, এবং এভাবেই, পর্যায়ক্রমে। সুতরাং আমরা কেবল এই আন্দোলনের সঠিক ক্রমটি তৈরি করব, তারপরে তাদের যোগফলগুলি স্ক্যান করব এবং আমাদের আমাদের অবস্থান থাকবে, যা আমরা তখন বাক্স করব কারণ এটি এমেন্ডে কাজ করে। নিম্নলিখিতটি কেবল এই ধারণার যান্ত্রিক ...
  • ([: <@(+/)\ #&> # # $ 1 - e.@0 1)
    • প্রথমে #:@1 2ধ্রুবক ম্যাট্রিক্স তৈরি করে 0 1;1 0
    • # $তারপরে এটি প্রসারিত করে যাতে এটিতে ইনপুট হিসাবে যতগুলি সারি থাকে। উদাহরণস্বরূপ, যদি ইনপুটটিতে 3 টি শব্দ থাকে তবে এটি উত্পন্ন করবে 0 1;1 0;0 1
    • #&> #এর বাম অংশটি ইনপুট শব্দের দৈর্ঘ্যের একটি অ্যারে এবং #অনুলিপি, সুতরাং এটি 0 1"1 শব্দের লেন" বার, তারপরে 1 0"শব্দের লেন 2 বার" ইত্যাদি অনুলিপি করে etc.
    • [: <@(+/)\ স্ক্যান যোগফল এবং বাক্স না।

3

টি-এসকিউএল, 185 বাইট

DECLARE @ varchar(max)='Thomas Clausen Codegolf Script'
,@b bit=0,@s INT=0SET @+=':'WHILE @ like'%_:%'SELECT
@b+=len(left(@,1))-1,@=stuff(@,1,1,'')+iif(left(@,@b)='','','
'+space(@s))+trim(left(@,1)),@s+=len(left(@,~@b))PRINT
stuff(@,1,1,'')

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


1
বিআইটি মান, ডিলিমিটার স্পেস এবং বিজ্ঞপ্তি স্ট্রিং প্রসেসিংয়ের খুব চালাক ব্যবহার। আমার চেয়ে অনেক ভাল উত্তর!
মুকো

2

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

1,2,`\w+
;$&
+(m`^(.(.*?)) ?;(.)
$1¶$.2* $3;
; |;$

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

একটি বরং সোজা দৃষ্টিভঙ্গি যা প্রতিটি অন্য শব্দকে চিহ্নিত করে এবং তারপরে সরাসরি রূপান্তরটি প্রয়োগ করে।

ব্যাখ্যা

1,2,`\w+
;$&

আমরা প্রতিটি শব্দ শব্দের সাথে মিলে অর্ধবৃত্ত দিয়ে চিহ্নিত করি, তবে কেবল ম্যাচ 1 এবং তারপরে 3 এবং আরও থেকে শুরু হওয়া ম্যাচগুলির প্রতিস্থাপন (যা শূন্য সূচকযুক্ত) প্রয়োগ করে।

+(m`^(.(.*?)) ?;(.)
$1¶$.2* $3;

+(mনিম্নলিখিত পর্যায়ে কিছু সম্পত্তি সেট করে। প্লাসটি শুরু হয় "যখন এই গ্রুপের কয়েকটি ধাপে কিছু পরিবর্তন হয়" লুপ হয় এবং খোলা বন্ধনীটি বোঝায় যে ব্যাকটিকের সামনে একটি বন্ধনী বন্ধন না হওয়া অবধি প্লাসটি নিম্নলিখিত সকল ধাপে প্রয়োগ করা উচিত (যা সমস্ত পর্যায়ে রয়েছে এই ক্ষেত্রে). mশুধু চিকিত্সা Regex বলে^ স্ট্রিংয়ের শুরুর পরিবর্তে লাইনের শুরু থেকেও মতো ।

আসল রেজেক্সটি বেশ সোজা is আমরা প্রথম সেমিকোলনের আগে যথাযথ পরিমাণে জিনিসপত্রের সাথে মেলে এবং তারপরে *সঠিক জায়গার সঠিক সংখ্যায় রাখতে রেটিনার প্রতিস্থাপন বাক্য গঠন ব্যবহার করি use

; |;$

আমরা উল্লম্বে পরিবর্তিত শব্দের শেষে সেমিকোলন এবং স্পেসগুলি সরিয়ে ফেলতে এই পর্যায়টি শেষের পরে প্রয়োগ করা হয়।


2

রেটিনা 0.8.2 , 58 বাইট

(?<!^(\S* \S* )*\S*)
¶
¶? 

+`(..(.)*¶)((?<-2> )*\S)
$1 $3

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। বিকল্প সমাধান, এছাড়াও 58 বাইট:

( \S*) 
$1¶
+` (.)
¶$1 
 ¶

+`(..(.)*¶)((?<-2> )*\S)
$1 $3

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে।

আমি এখানে ইচ্ছাকৃতভাবে রেটিনা 1 ব্যবহার করছি না, তাই আমি বিনা মূল্যে বিকল্প শব্দগুলিতে অপারেশন পাই না; পরিবর্তে আমার দুটি পন্থা আছে। প্রথম পদ্ধতির পূর্ববর্তী স্থানগুলি গণনা করে বিকল্প শব্দের মধ্যে সমস্ত অক্ষরে বিভক্ত হয়, যখন দ্বিতীয় পদ্ধতির বিকল্প স্থানগুলিকে নতুন লাইনের সাথে প্রতিস্থাপন করে এবং তারপরে বাকী ফাঁকা স্থানগুলি ব্যবহার করে এটি বিকল্প শব্দগুলিকে অক্ষরে বিভক্ত করতে সহায়তা করে। প্রতিটি পদ্ধতির পরে পরবর্তী অনুভূমিক শব্দের সাথে শেষ উল্লম্ব বর্ণটিতে যোগদান করতে হবে, যদিও কোডটি ভিন্ন কারণ তারা শব্দগুলিকে বিভিন্ন উপায়ে বিভক্ত করে। উভয় পদ্ধতির চূড়ান্ত পর্যায়ে তারপরে প্রতিটি লাইনকে প্যাড করে যতক্ষণ না তার প্রথম অ-স্থানের অক্ষর পূর্ববর্তী লাইনের শেষ অক্ষরের অধীনে সংযুক্ত না হয়।

দ্রষ্টব্য যে আমি ধরে নিচ্ছি না যে শব্দগুলি কেবলমাত্র অক্ষর কারণ আমার দরকার নেই।


2

পাওয়ারশেল , 101 89 83 বাইট

-12 বাইট মজির ধন্যবাদ ।

$args|%{$l+=if(++$i%2){$_.length-1;$t+=$_}else{1;$_|% t*y|%{$t+='
'+' '*$l+$_}}};$t

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


সুন্দর। আপনি পারেন: 1) প্রথম লাইনটি সরিয়ে ফেলুন, 2) একটি স্প্ল্যাটিং ব্যবহার করুন & $b @p(প্রতিটি শব্দকে একটি যুক্তি হিসাবে), 3) new lineধ্রুবকটির জন্য সংক্ষিপ্ত রূপটি ব্যবহার করুন । এই উদাহরণে
মজজি

@ মমজি, স্প্লিটিংয়ের সাথে আমি এর জন্য ভুল উত্তর পেয়েছি foo। দেখতে কোড
আন্দ্রে ওদেগোভ

ওও! স্প্ল্যাটিংটি একটি শব্দকে একটি চর অ্যারেতে বিভক্ত করে। মজাদার. ধন্যবাদ!
mazzy

1
@ ম্যামজি, এটি আমার দোষ নয় :)
আন্দ্রে ওদেগোভ

আমি মনে করি আমরা এই নিয়মটি ব্যবহার করতে পারিGiven a list of at least two words...
mazzy



2

টি-এসকিউএল, 289 বাইট

DECLARE @ VARCHAR(MAX)='a a',@I INT=1,@S INT=0,@B INT=0WHILE @I<=LEN(@)IF SUBSTRING(@,@I,1)=''IF @B=0SELECT @S-=1,@=STUFF(@,@I,1,'
'+SPACE(@S)),@I+=@S+3,@B=1 ELSE SELECT @=STUFF(@,@I,1,''),@S+=1,@B=\ELSE IF @B=0SELECT @I+=1,@S+=1 ELSE SELECT @=STUFF(@,@I,0,'
'+SPACE(@S)),@I+=@S+3PRINT @

এটি এসকিউএল সার্ভার 2016 এবং অন্যান্য সংস্করণগুলিতে চলে।

@ স্পেস-সীমাবদ্ধ তালিকা ধারণ করে। @ আমি স্ট্রিং এ সূচী অবস্থানটি ট্র্যাক করি। @ এস বাম দিক থেকে ইনডেন্ট করার জন্য স্পেসগুলির মোট সংখ্যা ট্র্যাক করে। @ বি ট্র্যাক করে যে অক্ষটি স্ট্রিংটি বিন্দুতে @ আইতে বিন্যস্ত হয়।

বাইট গণনায় ন্যূনতম উদাহরণ তালিকা অন্তর্ভুক্ত। স্ক্রিপ্টটি তালিকার মধ্য দিয়ে যায়, অক্ষর অনুসারে এবং স্ট্রিং পরিবর্তন করে যাতে এটি প্রয়োজনীয়তা অনুসারে প্রদর্শিত হয়। স্ট্রিংয়ের শেষে পৌঁছে গেলে স্ট্রিংটি PRINTed হয়।


হাই হাই @ মুগো মনে হয় দীর্ঘতর ইনপুট ব্যবহার করার সময় আপনার স্ক্রিপ্টে কোনও সমস্যা আছে। আপনি যদি আমার উত্তর থেকে ডেটা পরীক্ষা করেন, আপনি দেখতে পাবেন যে পি এবং টি এর মধ্যে শেষ শব্দের মধ্যে একটি অনিচ্ছাকৃত বাঁক রয়েছে
ক্লাউসন.ডেকের

@ t-clausen.dk ওফস, আমি সর্বশেষ পুনরাবৃত্তিটি সঠিকভাবে পরিচালনা করিনি। ধন্যবাদ!
মুকো

নিশ্চিত হয়েছে এটি এখন কাজ করে
t-clausen.dk

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 75 বাইট

a=>a.map(x=>i++&1?[,...x].join(`
`.padEnd(n)):(n+=x.length,x),n=i=0).join``

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

ব্যাখ্যা এবং ungolfed

function f(a) {                   // Main function:
 return a.map(                    //  Map through all words:
  function(x) {
   if (i++ & 1)                   //   If i % 2 == 1 (i.e. vertical):
    return [,...x].join(          //    Since the first one needs to have its own linefeed 
                                  //    and indentation, add a dummy item to the start.
     "\n".padEnd(n)               //    Join the array with the padded line feeds.
    );
   else {                         //   If i % 2 == 0 (i.e. horizontal):
    n += x.length;                //    Add the length of this string to the variable that
                                  //    counts how long the padded line feeds should be.
    return x;                     //    Append the string at the end without line feeds.
   }
  },
  n = i = 0                       //   Initialize variables.
                                  //   n: the length of the padded line feeds 
                                  //      (including the line feed)
                                  //   i: keeps track of the direction
 ).join("")                       //  Join all stuffs and return.
}


1

জেলি , 21 বাইট

Ẉm2Ä’x2Ż⁶xⱮṛ;⁷ɗ;ⱮY¥ƭ"

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

একটি সম্পূর্ণ প্রোগ্রাম ইনপুটটিকে স্ট্রিংগুলির তালিকা হিসাবে গ্রহণ করে এবং স্পষ্টভাবে শব্দ মই শব্দটি স্টাডআউট করার জন্য আউটপুট দেয়।


1

সি (জিসিসি) , 93 87 বাইট

পরামর্শের জন্য গ্যাস্ট্রোপনারকে ধন্যবাদ।

এই সংস্করণটি একটি নুল পয়েন্টার দ্বারা বন্ধ হওয়া স্ট্রিংগুলির অ্যারে নেয়।

c,d;f(s,t)char**s,*t;{for(c=d=0;t=*s++;d=!d)for(;*t;c+=!d)printf("\n%*c"+!d,d*c,*t++);}

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



1

ব্রেন-ফ্লাক , 152 বাইট

<>([()])<>{<>({}<>{()<({}<>)><>}<>)<>{}{<>({}<((()()()()()){})>)({<({}[()]<((((()()()()){}){}){})>)>()}{})<>(({}<>({}))[({}[{}])])<>}{}}<>{}{({}<>)<>}<>

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

আমার সন্দেহ হয় বিজোড় এবং এমনকি শব্দের জন্য দুটি লুপকে একত্রিত করে এটি আরও খাটো হতে পারে।


1
এই জন্য আপনাকে ধন্যবাদ!
গ্যালেন ইভানভ

1

জে, 35 33 বাইট

3 :'[;.0>(,|:)&:,.&.>/_98{.;:|.y'

এটি এমন একটি ক্রিয়া যা ফাঁকা দ্বারা পৃথক শব্দের সাথে ইনপুটটিকে একক স্ট্রিং হিসাবে গ্রহণ করে। উদাহরণস্বরূপ, আপনি এটিকে কল করতে পারেন:

3 :'[;.0>(,|:)&:,.&.>/_98{.;:|.y' 'programming puzzles and code golf'

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

কোডটিতে একটি সামান্য সমস্যা রয়েছে: ইনপুটটিতে 98 টিরও বেশি শব্দ থাকলে এটি কাজ করবে না। আপনি যদি দীর্ঘতর ইনপুটটিকে অনুমতি দিতে চান তবে 998 শব্দ ইত্যাদির জন্য কোডটিতে _98কোডটি প্রতিস্থাপন করুন _998etc.


কিছু উদাহরণের মাধ্যমে এটি কীভাবে কাজ করে তা আমাকে ব্যাখ্যা করুন।

মনে করুন আমাদের কাছে অক্ষর এবং শূন্যস্থানগুলির একটি ম্যাট্রিক্স রয়েছে যা আমরা কল্পনা করেছিলাম একটি অনুভূমিক শব্দ দিয়ে শুরু করে কিছু শব্দের একটি আংশিক আউটপুট।

   [m=: 3 3$'vwx  y  z'
vwx
  y
  z

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

   (,.'cat') , m
c  
a  
t  
vwx
  y
  z

এখন আমরা কেবল কোনও শব্দের প্রিন্টিংয়ের এই পদ্ধতিটি পুনরাবৃত্তি করতে পারি না, কারণ তখন আমরা কেবল উল্লম্ব শব্দ পেতে চাই। তবে আমরা যদি প্রতিটি পদক্ষেপের মধ্যে আউটপুট ম্যাট্রিক্স স্থানান্তর করি, তবে অন্য প্রতিটি শব্দ অনুভূমিক হবে।

   (,.'dog') , |: (,.'cat') , m
d     
o     
g     
catv  
   w  
   xyz

সুতরাং সমাধানের জন্য আমাদের প্রথম প্রয়াস হ'ল প্রতিটি শব্দকে একটি একক-কলাম ম্যাট্রিক্সে রাখা, তারপরে এগুলি সংযুক্ত করে এবং এর মধ্যে স্থানান্তর করে এগুলি ভাঁজ করুন।

   > (,|:)&.>/ ,.&.>;: 'car house dog children'
c            
a            
r            
housed       
     o       
     g       
     children

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

c             
a             
rhouse        
     d        
     o        
     gchildren

আমরা যেভাবে এটি অর্জন করব তা হ'ল পুরো ইনপুট স্ট্রিংটিকে বিপরীত করা

nerdlihc god esuoh rac

তারপরে জিগ-জাগ তৈরি করতে উপরের পদ্ধতিটি ব্যবহার করুন তবে কেবল প্রতিটি শব্দের প্রথম অক্ষরের পরে বাঁক:

n     
e     
r     
d     
l     
i     
h     
c     
gode  
   s  
   u  
   o  
   h  
   rac

তারপরে আউটপুটটি ফ্লিপ করুন:

   [;.0> (,|:)&.>/ ,.&.>;:|. 'car house dog children'
car   
  h   
  o   
  u   
  s   
  edog
     c
     h
     i
     l
     d
     r
     e
     n

তবে এখন আমাদের আর একটি সমস্যা রয়েছে। যদি ইনপুটটিতে শব্দের একটি বিজোড় সংখ্যা থাকে তবে আউটপুটটিতে প্রথম শব্দটি উল্লম্ব হবে, অন্যদিকে স্পেসিফিকেশনটি বলে যে প্রথম শব্দটি অবশ্যই অনুভূমিক হতে হবে। এটি সমাধানের জন্য, আমার সমাধান শব্দের তালিকার 98 টি শব্দকে প্যাড করে খালি শব্দ যুক্ত করে, যেহেতু আউটপুট পরিবর্তন করে না।

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