আমার বাচ্চার জন্য একটি সিঁড়ি তৈরি করুন


25

অন্য দিন, আমার ছেলে আমাকে লেগো-ইশ ব্লক ব্যবহার করে একটি সিঁড়ি তৈরি করতে বলেছে। এবং আমি এরকম কিছু নিয়ে এসেছি:

সিঁড়ি

তারপরে আমার বাচ্চা আমাকে কম্পিউটারের স্ক্রিনে অনুরূপ সিঁড়ি তৈরি করার জন্য সর্বনিম্ন সংখ্যক বাইট ব্যবহার করে একটি প্রোগ্রামের জন্য জিজ্ঞাসা করেছিল। আমি এ তেমন ভাল নই , তাই আপনার সাহায্য দরকার। আমার একটি প্রোগ্রাম দরকার যা:

  • সিঁড়িটি যে স্তরের হওয়া দরকার তার সংখ্যার সাথে একটি ধনাত্মক পূর্ণসংখ্যা প্রাপ্ত করে।
  • আপনি চিত্রটিতে যে প্যাটার্নটি দেখেন সেটির সাথে সিঁড়ির অঙ্কন বের করে।

আউটপুটটি পাঠ্য বিন্যাসে হবে তবে ইটগুলি একে অপরের থেকে আলাদা করা যায়। উদাহরণস্বরূপ, আপনি '█' অক্ষরটি অর্ধ ব্লক হিসাবে ব্যবহার করতে পারেন এবং এটি আপনার পছন্দ মতো যে কোনও রঙে আঁকতে পারেন, বা আপনার পছন্দের যে কোনও অক্ষর চয়ন করতে পারেন।

সীমাবদ্ধতা:

  • ব্লকগুলি তিনটি ভিন্ন রঙের হওয়া দরকার, যা যতক্ষণ সম্ভব ব্যবহার করা হবে (যদি ইনপুট 1 বা 2 হয় তবে তিনটি রঙ ব্যবহার করার জন্য পর্যাপ্ত ব্লক নেই)। আপনি যদি চান, উদাহরণস্বরূপ, আপনি '░▒▓' অক্ষর ব্যবহার করতে পারেন, বা কেবল তিনটি পৃথক অক্ষর নির্বাচন করতে পারেন।
  • একই রঙ বা প্যাটার্নের কোনও দুটি ব্লক একক সারিতে পাশাপাশি থাকতে পারে না।

সিঁড়িটি যতক্ষণ না আঁকানো হয় ততক্ষণ আমার পুত্রটি পিছনে স্থান বা নতুন লাইনগুলি সম্পর্কে সত্যিই চিন্তা করে না।

উদাহরণ (চরিত্রগুলির খারাপ পছন্দের জন্য দুঃখিত):

Input: 1
Output:
██

Input: 2
Output:
██
 ▓▓

Input: 3
Output:
██
 ▓▓
██░░

Input: 5
Output:
██
 ██
██░░
 ██░░
██░░▓▓

17
আপনার বাচ্চাকে বলুন যে
লুইস মেন্ডো

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

2
এফওয়াইআইআই ব্লকগুলিকে ডুপ্লো বলা হয়
কায়ারড কোইনারিংহিংহ

10
@Cairdcoinheringaahing duplo এর রাউন্ড বোতাম নেই।
ক্রিস্টোফ

3
@Cairdcoinheringaahing প্রশ্নের ব্লকগুলি দ্বুপলো নয়, ডুপলো লেগো সামঞ্জস্যপূর্ণ , সেগুলি লেগো বেবি । তারা ছিল মূলত Duplo প্রিমো ডেকে আমি আশা তারা চেয়ে ভিন্ন নাম ছিল পারেন সেই দুই, কিন্তু তারা টেকনিক্যালি উভয় লেগো এবং Duplo তুলনায় বিভিন্ন পণ্যের হয়।
ড্রাকো 18s

উত্তর:


5

জেলি ,  21 19  16 বাইট

d2SR+%3x2⁶;ṙḂµ€Y

ফলাফল মুদ্রণ একটি সম্পূর্ণ প্রোগ্রাম।

ব্যবহার করে 00, 11এবং 22ব্লক হিসাবে।

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

কিভাবে?

d2SR+%3x2⁶;ṙḂµ€Y - Main link: number n
             µ€  - for €ach "row" in n (i.e. for row, r = 1 to n inclusive):
d2               -   divmod 2   -> [integer-divide by 2, remainder] i.e. [r/2, r%2]
  S              -   sum        -> r/2 + r%2
   R             -   range      -> [1, 2, 3, ..., r/2 + r%2]
    +            -   add r      -> [r+1, r+2, r+3, ..., r + r/2 + r%2]
     %3          -   modulo 3   -> [r%3+1, r%3+2, r%3+0, ..., (r + r/2 + r%2)%3]
                 -   e.g.: r: 1  , 2  , 3    , 4    , 5      , 6      , 7       , ...
                             [2], [0], [1,2], [2,0], [0,1,2], [1,2,0], [2,0,1,2], ...
       x2        -   times 2 - repeat each twice (e.g. [2,0,1,2] -> [2,2,0,0,1,1,2,2]
         ⁶       -   literal space character
          ;      -   concatenate (add a space character to the left)
            Ḃ    -   r mod 2 (1 if the row is odd, 0 if it is even (1 at the top))
           ṙ     -   rotate (the list) left by (r mod 2)
               Y - join with newlines
                 - implicit print (no brackets printed due to the presence of characters)

11

পাইথন 2 , 55 বাইট

i=2
exec"print(i%2*' '+`2%i*1122`*i)[:i];i+=1;"*input()

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

22, 44শীর্ষ সারি বাদে এর ব্লকগুলির মধ্যে চক্র 00। উদাহরণস্বরূপ, ইনপুট 10 এ, প্রিন্ট করুন

00
 22
2244
 2244
224422
 224422
22442244
 22442244
2244224422
 2244224422

i=2,3,..বিজোড় দৈর্ঘ্যের জন্য একটি জায়গা তৈরি করে, প্যাটার্নের iসময়গুলি পুনরাবৃত্তি করে এবং দৈর্ঘ্যে ছাঁটাই করে সারি বর্ধমান দৈর্ঘ্যের সারিগুলি মুদ্রণ করে i। প্যাটার্নটি হ'ল এটির 2244প্রথমটি ব্যতীত সমস্ত সারিগুলির i=2জন্য 0। পাটিগণিতের বহিঃপ্রকাশের মাধ্যমে এটি অর্জন করা হয়েছে 2%i*1122


1
কেস 3 এর জন্য মাত্র দুটি রঙ ব্যবহার করুন
ক্রিস্টোফ

খুব চালাক ফিক্স!
চার্লি

4

জাভাস্ক্রিপ্ট (ES6), 80 বাইট

n=>eval(`for(s=11,i=1;i++<n;)s+='\\n'+(' '+'2233'.repeat(n)).substr(i%2,i+1);s`)


জাভাস্ক্রিপ্ট (ES6), 87 বাইট

পূর্ববর্তী সমাধান।

n=>[11,...Array(n).fill(' '+'2233'.repeat(n)).map((r,n)=>r.slice(n%2,n+3+n%2))].join`
`

3

এসওজিএল , 31 28 27 25 বাইট

∫³2\@*O"²b“2⁵I%*r*;I»«nKp

ব্যাখ্যা:

∫                          iterate input times, pushing 1-indexed counter
 ³                         get 3 total copies of it on stack
  2\                       1 if divides by 2, else 0
    @*                     get that many spaces
      O                    output in a new line
       "²b“                push 1122
           2⁵I%*           multiply 1122 by 2%(iteration+1)
                r          convert to string
                 *         multiply by iteration
                  ;I»«     get one iteration variable ontop of stack
                      n    increase, floor divide by 2, multiply by 2 (gets the amount of bricks in a line)
                       Kp  split that multiplied string in pieces of that length

এই কৌশলটি ব্যবহার করে
9 এর জন্য উদাহরণ আউটপুট:

00
 22
2244
 2244
224422
 224422
22442244
 22442244
2244224422

অ-প্রতিযোগী, 22 বাইট

∫³2\@*O"²b“2⁵I%*;I»«mp

কমান্ডটি 1 ম এসওজিএল কমিটেm ডকুমেন্ট করা হয়েছে, কেবল প্রয়োগ করা হয়নি ।


3

05 এ বি 1 ই , 22 21 20 18 17 বাইট

আকর্ষণীয় সত্য যে ব্যবহার 4^(N+2)/5 = [3,12,51,204,...] = b[11,1100,110011,11001100,...]

F4NÌm5÷bDðì}r·IF,

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

ব্যাখ্যা

F                     # for N in 0...input-1 do
 4                    # push 4
  NÌ                  # push N+2
    m                 # push 4^(N+2)
     5÷               # integer division by 5
       b              # convert to binary
        D             # duplicate
         ðì           # prepend a space to the copy
           }          # end loop
            r         # reverse stack
             ·        # multiply top of stack by 2
              IF      # input times do
                ,     # print with newline

দুঃখিত, আমি আমার উত্তরটি উন্নত করেছি - যদিও দুর্দান্ত পদ্ধতি!
জোনাথন অ্যালান

@ জোনাথন অ্যালান: অবশ্যই আপনি করেছেন;) ধন্যবাদ! আপনার উত্তরে মোড 2 আবর্তনের সাহায্যে ইন্ডেন্টেশন পরিচালনা করার খুব সুন্দর ধারণা।
এমিগনা

2

পিএইচপি, 61 59

aa<?for(;++$i<$argn;)echo"
",str_pad(" "[~$i&1],2+$i,bbcc);

অজগর সংস্করণগুলির মত সুন্দরভাবে কাজ করে তবে সম্ভব হলে তিনটি রঙই ব্যবহার করে। কোনও নতুন লাইন নেই।

-2 bytes by @user63956. Thanks !

1
আপনি এর সাথে দুটি বাইট সংরক্ষণ করতে পারেন aa<?for...
ব্যবহারকারী 63956

1

পাইথ , 29 বাইট

VQI!%hN2pd)Vh/N2p*2@G%+NH3)pb

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

VQI!%hN2pd)Vh/N2p*2@G%+NH3)pb

VQ                               For N in range(0, input)
  I!%hN2pd)                      If N is odd, print a leading space
           Vh/N2          )      For H in range(0, N / 2 + 1)
                   @G%+NH3       Select the letter at position (N + H) % 3 in the alphabet
                 *2              Then make it a two letters string ("aa" or "bb" or "cc")
                p                Print it
                           pb    End the line by printing a new line

আমি নিশ্চিত যে কোডটি ছোট করার অনেক উপায় আছে তবে আমি এখনই ক্লান্ত রাজা ... পরে চেষ্টা করব।


0

ব্যাচ, 125 বাইট

@set s=█
@for /l %%i in (2,1,%1)do @call:c
:c
@set s= %s:█= %
@set s=%s:▓=█%
@set s=%s:░=▓%
@set s=%s:  =░░%
@echo %s%

দ্রষ্টব্য: এটি সিপি 437 বা সিপি 850 বা এ জাতীয় কিছুতে সংরক্ষণ করুন। প্রতিবার রঙগুলি ঘোরানোর মাধ্যমে কাজ করে। যেহেতু আমি ঘূর্ণনটি সম্পাদন করতে স্ট্রিংয়ের উপরে মানচিত্র তৈরি করতে পারি না, তাই অস্থায়ী পর্যায়ে স্পেস ব্যবহার করে আমি চারটি প্রতিস্থাপন ব্যবহার করি। এরপরে এটি আমাকে প্রতিটি লাইনে একটি স্থানের উপসর্গ করতে দেয়, যাতে দুটি স্পেস নতুন ব্লকে পরিণত হয়। নমুনা আউটপুট:

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