আমাকে কিছু স্ট্রিং সিঁড়ি তৈরি করুন


24

স্ট্রিং সিঁড়ি

দাবি অস্বীকার: এটিই আমার প্রথম প্রস্তাবিত চ্যালেঞ্জ। যে কোনও এবং সমস্ত প্রতিক্রিয়া স্বাগত। এটি যদি সদৃশ হয় তবে দয়া করে এটি উল্লেখ করুন।

এখানে স্যান্ডবক্স পোস্টের লিঙ্ক s

লক্ষ্য

এই চ্যালেঞ্জটির লক্ষ্য, একটি স্ট্রিং এবং একটি পূর্ণসংখ্যা দেওয়া, স্ট্রিংটি সেই পূর্ণসংখ্যার আকারের ব্লকগুলিতে মুদ্রণ করা। যদি কোনও শব্দের ব্লকের আকারের চেয়ে বেশি অক্ষর থাকে তবে এটিকে একটি অবতরণ "সিঁড়ি" ধরণে মুদ্রণ করুন।

বিধি

  • উপরে উল্লিখিত "সিঁড়ি প্যাটার্ন" এর অর্থ হ'ল একই শব্দের প্রতিটি ব্লকের জন্য সেই ব্লকটি অবশ্যই শুরু করতে হবে যেখানে উপরের ব্লকটি শেষ হয়। আপনার কোনও প্রশ্ন থাকলে পরীক্ষার কেসগুলি (বা জিজ্ঞাসা করুন) পরীক্ষা করুন।
  • যদি কোনও শব্দের একাধিক ব্লকে ভাঙা হয়, তবে নিম্নলিখিত শব্দটি পর্যাপ্ত সংখ্যক স্পেস দিয়ে মুদ্রিত করা আবশ্যক, এটি অবশ্যই পূর্ববর্তী শব্দের নিম্নতম ব্লক থেকে এক সাদা স্থানের দ্বারা পৃথক করা উচিত। স্পষ্টতার জন্য পরীক্ষার কেসগুলি পরীক্ষা করুন (বা জিজ্ঞাসা করুন)।
  • আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংটিতে কেবল মুদ্রণযোগ্য ASCII অক্ষর থাকবে। এছাড়াও, এটির সারিতে একাধিক সাদা স্থান থাকবে না।
  • আপনি ধরেও নিতে পারেন যে পূর্ণসংখ্যা সর্বদা [1, + ∞) এর মধ্যে থাকে।
  • ট্রেলিং হোয়াইটস্পেস বা নিউলাইনগুলি অনুমোদিত।
  • আপনি I / O এর জন্য যে কোনও যুক্তিসঙ্গত পদ্ধতি ব্যবহার করতে পারেন ।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
  • এটি , তাই সংক্ষিপ্ততম কোড (প্রতি ভাষা বাইটে) জিতেছে। এক সপ্তাহ (বা তাই) পরে, আমি সামগ্রিক সংক্ষিপ্ত উত্তর গ্রহণ করব।

পরীক্ষার মামলা

(String, Integer) => (Output)

"This is a large string", 3 => Thi is a lar  str
                                 s        ge   ing

"This is an even larger string!", 2 => Th  is an ev  la   st
                                        is        en  rg   ri
                                                       er   ng
                                                             !
"Ooooh dear, what a big string you have!", 3 
=> Ooo  dea  wha a big str   you hav
     oh   r,   t         ing       e!

"Staphylococcus saprophyticus", 4 => Stap        sapr
                                        hylo        ophy
                                           cocc        ticu
                                              us          s

"I hope you find this challenge interesting", 2
=> I ho  yo fi  th  ch    in
      pe  u  nd  is  al    te
                      le    re
                       ng    st
                        e     in
                               g

"Well, this test case looks kinda pointless now doesn't it?", 15
=> Well, this test case looks kinda pointless now doesn't it?

"This one looks a lot more interesting!", 1 => T o l a l m i
                                               h n o   o o n
                                               i e o   t r t
                                               s   k     e e
                                                   s       r
                                                           e
                                                           s
                                                           t
                                                           i
                                                           n
                                                           g
                                                           !
"Keep in mind, people: 'Punctuation! Does! Matter!'", 2
=> Ke  in mi  pe   'P      Do  Ma
    ep     nd  op   un      es  tt
            ,   le   ct      !   er
                 :    ua          !'
                       ti
                        on
                         !

প্রতিটি লাইনে সমান পরিমাণে শীর্ষস্থানীয় স্থান থাকতে পারে?
dzaima

বোনাস: ব্লক সাইজ -১ টেক্সাকের জন্য জালগো ব্যবহার করুন
লুইস মেন্ডো

@ ডিজাইমা আমি নিশ্চিত না যে আপনি এর দ্বারা কী বোঝাতে চেয়েছেন তবে আমি কেন তা বুঝতে পারছি না। একটি উদাহরণ দিতে যত্ন?
জে.সাল্লি

@ জে.সেলে এটি
ডিজেমা

@ ডিজাইমা হ্যাঁ নিশ্চিত, কোনও সমস্যা নেই।
জে.সাল্লি

উত্তর:


7

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

F⪪θ «↑⸿⸿FLι«M¬﹪κIη↙§ικ

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

  θ                      First input
 ⪪                      Split on spaces
F   «                   Loop over each word
     ↑⸿⸿                Move the cursor to the top row and two columns right*
          ι             Current word
         L              Length
        F  «            Loop over implicit range
               κ        Current index
                 η      Second input
                I       Cast to integer
              ﹪         Modulo
             ¬          Logical not
            M     ↙     Move that many characters down and left
                    ι   Current word
                     κ  Current index
                   §    Index into word and implicitly print

* আরও পরিষ্কারভাবে, "পরের লাইনের দু'বার শুরুতে সরান, তবে যেন ক্যানভাসটি ঘোরানো হয়েছে।" সম্পাদনা করুন: এই চ্যালেঞ্জটি সেট হয়ে যাওয়ার এবং এই উত্তরটি গৃহীত হওয়ার মাঝে, কাঠকোল আসলে একটি স্ট্রিংকে জোড়া অক্ষরে বিভক্ত করার উপায় অর্জন করেছিল, কোড 16 বাইট হ্রাস করে:
F⪪θ «↑⸿⸿F⪪ιIη«κ↙ অনলাইনে চেষ্টা করে দেখুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

  θ                 First input
 ⪪                  Split on spaces
F   «               Loop over each word
     ↑⸿⸿            Move the cursor to the top row and two columns right
          ι         Current wordIη
            η       Second input
           I        Cast to integer
         ⪪          Split into substrings of that length
        F    «      Loop over each substring
              κ     Print the substring
               ↙    Move the cursor down and left

চ্যালেঞ্জের বিধি অনুসরণ করে, আমি এটিকে স্বল্পতম উত্তর হিসাবে গ্রহণ করেছি (। অক্টোবর, ২০১ of হিসাবে)।
জে.সাল্ল é

3

এসওজিএল ভি0.12 , 28 27 26 বাইট

ā,θ{0Eā;{ēb÷eb‰⁴bH*+I;Iž}┼

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

এটি তৈরি করার সময় আমি বাস্তবায়ন করেছি , তবে এর জন্য ডকুমেন্টেশন আগে থেকেই ছিল।

ব্যাখ্যা:

ā                            push an empty array - the main canvas
 ,                           push the first input
  θ{                         for each word (pushing the word each time)
    0E                         set the variable E to 0
      ā;                       below the current word place an empty array - current word canvas
        {               }      for each character of the word
         ēb÷                     push (E++ // B) - note that E is incremented after being used
            eb‰                  push E positive modulo B - like regular modulo but in the 0 output case it gives B
               ⁴                 duplicate the item below ToS
                bH               push B-1
                  *              multiply [(E++ // B) and B-1]
                   +             add [that multiplication to E‰B] - current letters X position
                    I            increase the X position to have one leading space row
                     ;           swap top 2 items - current X position and (E++ // B)
                      I          increase to create current letters Y position
                       ž         in those positions insert the current letter in the current words canvas
                         ┼     append to main canvas current word canvas horizontally

3

জাভাস্ক্রিপ্ট ES6, 187 183 174 166 163 148 145 143 141 140 138 বাইট

  • পাঠযোগ্যতার জন্য কোডে কিছু বাইট যুক্ত করা হয়েছে এবং সেগুলি বাইটস গণনাতে সরিয়ে দেওয়া হয়েছে
  • s = "" এর পরিবর্তে, j = 0 আমি j = s = "" করেছি
  • (i in s) এর পরিবর্তে - লুপের জন্য নিয়মিত - 1 বাইট সরানো
  • অ্যারের সূচকগুলিতে ইতিমধ্যে উত্পন্ন মানগুলি ব্যবহার করে - 8 বাইট সরানো হয়েছে
  • প্রকৃত অ্যারের দৈর্ঘ্যের পরিবর্তে - ইলিয়ালে i = s.leth (প্রথম লুপ থেকে) সহ ইতিমধ্যে মান ব্যবহার করা - এর পিছনে স্থানের পিছনে কারণ অনুমোদিত
  • S এর পরিবর্তে S এর মানচিত্র ব্যবহার করে - 3 বাইট হ্রাস করে
  • খালি অ্যারে শুরু করার পরিবর্তে ফিল ব্যবহার করুন- সুতরাং মানচিত্রের ফলাফলের লুপের প্রয়োজন নেই
  • প্রতিস্থাপন করতে পারে || সাথে | - 2 বাইট দ্বারা হ্রাস
  • @ জাস্টিন মেরিনারকে ধন্যবাদ - ঘটনাগুলি প্রতিস্থাপন করুন == "" "<" দিয়ে! " 2 বাইট হ্রাস করে
  • শর্তগুলি একটি [আই] থেকে অন্য বিবৃতিতে স্থানান্তরিত করে একটি "ইউ <"! "" হ্রাস করে - 2 বাইট হ্রাস করে
  • (I + = 2, j = 0) - j =! (I + = 2) এর পরিবর্তে - 1 বাইট হ্রাস পেয়েছে
  • পরিবর্তে "এর জন্য"
    F=(s,n)=>{R=[I=j=i=0]
    for(u of s)
    a=R[z=u<"!"?j=!(I+=2):(j%n&&I++,j++/n|0)]=R[z]||[...s].fill` `,a[I]=u
    return R.map(x=>x.join``).join`
    `}
    console.log(F("This is a large string", 3));
    console.log(F("This is an even larger string!", 2));
    console.log(F("Ooooh dear, what a big string you have!", 3));
    console.log(F("Staphylococcus saprophyticus", 4));
    console.log(F("I hope you find this challenge interesting", 2));
    console.log(F("Well, this test case looks kinda pointless now doesn't it?", 15));
    console.log(F("This one looks a lot more interesting!", 1))
    console.log(F("Keep in mind, people: 'Punctuation! Does! Matter!'", 2));

1
<"!"পরিবর্তে ব্যবহার করে আপনার একটি দম্পতি বাইট সংরক্ষণ করতে সক্ষম হওয়া উচিত ==" "
জাস্টিন মেরিনার

2

সি #, 200 বাইট

int x=-2,y=0;Regex.Split(i,@"\s+").ToList().ForEach(w =>{y=0;Regex.Matches(w,".{0,"+s+"}").Cast<Match>().ToList().ForEach(c=>{x+=(y==0?2:s-1);Console.SetCursorPosition(x,y);Console.Write(c);y++;});});

যেখানে স্ট্রিংটি i দ্বারা সুনির্দিষ্ট করা হয়েছে এবং আকারগুলি এস দ্বারা নির্দিষ্ট করা হয়েছে

যেমন

string i = "Staphylococcus saprophyticus";
int s = 2;    
int x=-2,y=0;Regex.Split(i,@"\s+").ToList().ForEach(w =>{y=0;Regex.Matches(w,".{0,"+s+"}").Cast<Match>().ToList().ForEach(c=>{x+=(y==0?2:s-1);Console.SetCursorPosition(x,y);Console.Write(c);y++;});});

মূলত, প্রথম অংশ রেজেক্স। স্প্লিট শ্বেত স্পেস ব্যবহার করে বাক্যগুলিকে শব্দের মধ্যে বিভক্ত করে এবং রেজেক্সম্যাচগুলি প্রতিটি শব্দকে এস দ্বারা নির্দিষ্ট অংশগুলিতে বিভক্ত করে । খণ্ডটি কার্সার পজিশনে (x, y) লেখা হয়েছে যেখানে প্রতিটি নতুন শব্দের জন্য Y নির্ধারণ করা হয়েছে, এবং এক্স শব্দের প্রথম অংশের জন্য 2 এবং পরবর্তীকালে প্রতিটি অংশের জন্য (s-1) বৃদ্ধি করা হয়েছে।

এটির প্রথম ব্যবহার 0-এ সেট করা আছে তা নিশ্চিত করতে x -2 এ এর ​​জীবন শুরু করে।

এটিকে আরও ছোট করে তুলতে আমি সি # ট্রিভিয়ায় পর্যাপ্ত জ্ঞানযোগ্য নই, তবে সন্দেহ সম্ভবত এটি হতে পারে।


2
কোনও নির্দিষ্ট কারণে আপনি অন্য কোনও উপায়ে পরিবর্তে, কোন স্ট্রিংয়ের জন্য এস ব্যবহার করেন এবং আমি স্ট্রিংয়ের জন্য?
তাহগ

হা হা! ধারণা নেই - আমার মধ্যাহ্নভোজের বিরতিতে কেবলমাত্র একটি দ্রুত সময় নষ্টকারী আমি ইনপুট জন্য এবং আকার জন্য সম্ভবত,?
সুপারমার্কট


1

পার্ল 5, 59 বাইট

55 বাইট কোড + 4 এর জন্য -ai

$-=s/.{$^I}\K(?=.)/\x1b[1B\x1b[1D/g,print$_,"\x1b[1A"x$-,$"for@F

দ্রষ্টব্য: \x1bগুলি আক্ষরিক ESCঅক্ষর, তবে সহজে অনুলিপি এবং পেস্টের জন্য এখানে পালিয়ে গেছে escaped

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

উদাহরণ রান

perl -ai3 string-stairs.pl <<< 'This is a large string' 2>/dev/null
Thi is a lar  str   
  s        ge   ing

perl -ai2 string-stairs.pl <<< 'This is an even larger string!' 2>/dev/null
Th  is an ev  la   st   
 is        en  rg   ri
                er   ng
                      !

perl -ai3 string-stairs.pl <<< 'Ooooh dear, what a big string you have!' 2>/dev/null
Ooo  dea  wha a big str   you hav  
  oh   r,   t         ing       e!

perl -ai4 string-stairs.pl <<< 'Staphylococcus saprophyticus' 2>/dev/null
Stap        sapr       
   hylo        ophy
      cocc        ticu
         us          s

perl -ai2 string-stairs.pl <<< 'I hope you find this challenge interesting' 2>/dev/null
I ho  yo fi  th  ch    in     
   pe  u  nd  is  al    te
                   le    re
                    ng    st
                     e     in
                            g

perl -ai15 string-stairs.pl <<< "Well, this test case looks kinda pointless now doesn't it?" 2>/dev/null
Well, this test case looks kinda pointless now doesn't it? 

perl -ai1 string-stairs.pl <<< 'This one looks a lot more interesting!' 2>/dev/null
T o l a l m i 
h n o   o o n
i e o   t r t
s   k     e e
    s       r
            e
            s
            t
            i
            n
            g
            !

perl -ai2 string-stairs.pl <<< "Keep in mind, people: 'Punctuation! Does! Matter!'" 2>/dev/null
Ke  in mi  pe   'P       Do   Ma    
 ep     nd  op   un       es   tt
         ,   le   ct       !    er
              :    ua            !'
                    ti
                     on
                      !
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.