ক্যাসিটিটাম স্ক্রাইব


23

ভূমিকা

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

আপনার কাজটি ASCII বিশ্বে সাগুয়ারো আনতে হবে। তবে, - বাস্তব বিশ্বের মতো - কোনও সাগেরো অন্যটির মতো নয়, তাই আপনার প্রোগ্রামটি বিভিন্ন বাহু কনফিগারেশনের সাহায্যে স্যাগারো তৈরি করতে সক্ষম হতে হবে।

একটি উদাহরণ সাগাগারো

  • ইনপুট: [0b10, 0b11]( [2, 3]দশমিক ইনপুট দৈর্ঘ্যে 2)
     _     
    / \    
 _  | |    
/ \ | |    
| | | |    
\ \_| |    
 \__  |    
    \ |    
 _  | |  _ 
/ \ | | / \
| | | | | |
\ \_| |_/ /
 \__   __/ 
    \ /    
    | |    
    | |    

বিশেষ উল্লেখ

একটি সাগাগারোর সর্বদা একটি বেস এবং শীর্ষ থাকে, এর মধ্যে পরিবর্তনশীল পরিমাণে স্টেম থাকে। কান্ডের অংশগুলির কোনও বাহু, ডানদিকে একটি বাহু, একটি বাম বা দুটি বাহু থাকতে পারে।

সাগুয়ারো বৃদ্ধির ধরণগুলিকে দ্বি-বিট মান সহ একটি ইনপুট তালিকা হিসাবে দেওয়া হয়। 00মানে কোনও বাহু, 01ডানদিকে 10একটি বাহু, বাম দিকে একটি বাহু এবং 11দুটি বাহু (সমস্ত বাইনারি)। ইনপুট তালিকার দৈর্ঘ্য সাগরো এর উচ্চতা নির্ধারণ করে।

সাগুয়ারো বিভাগগুলি নীচের মত দেখাচ্ছে। ক্যাকটাসের অংশগুলি অষ্টকোষ দ্বারা বেষ্টিত রয়েছে, #স্পষ্টতার জন্য যা মুদ্রিত হবে না।
একটি সাগুয়ারো এর উচ্চতা সবসময় 4+6*kনন-নেগেটিভ পূর্ণসংখ্যার জন্য অক্ষরের সমান k

#############
#     _     # Saguaro top
#    / \    #
#############
# _  | |  _ # Stem, both arms
#/ \ | | / \# Stem id: 11
#| | | | | |#
#\ \_| |_/ /#
# \__   __/ #
#    \ /    #
#############
# _  | |    # Stem, left arm
#/ \ | |    # Stem id: 10
#| | | |    #
#\ \_| |    #
# \__  |    #
#    \ |    #
#############
#    | |  _ # Stem, right arm
#    | | / \# Stem id: 01
#    | | | |#
#    | |_/ /#
#    |  __/ #
#    | /    #
#############
#    | |    # Stem, no arms
#    | |    # Stem id: 00
#    | |    #
#    | |    #
#    | |    #
#    | |    #
#############
#    | |    # Saguaro base
#    | |    #
#############

ইনপুট

পূর্বে যেমন বলা হয়েছে, ইনপুটটিতে দ্বি-বিট মানের ( 0, 1, 2, 3দশমিক হিসাবে) একটি তালিকা রয়েছে । এটি যে কোনও যুক্তিসঙ্গত বিন্যাসে দেওয়া যেতে পারে। তালিকার প্রথম উপাদানটি সাগেরোর সর্বোচ্চ স্টেম অংশের সাথে সামঞ্জস্য করে, দ্বিতীয় উপাদানটি এর দ্বিতীয় সর্বোচ্চ স্টেম অংশের সাথে ইত্যাদি etc.
আপনি যদি চান তবে অতিরিক্ত ইনপুট হিসাবে আপনাকে ইনপুট তালিকার দৈর্ঘ্য প্রয়োজন হতে পারে। আপনি যদি তা করেন তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন।

আউটপুট

আপনার আউটপুট ASCII saguaro উপরে বর্ণিত সঠিক স্টেম অংশ ব্যবহার করে নির্মিত উচিত। একটি লাইনে স্পেস ট্রেলিং এবং নতুন লাইনের পিছনে অগ্রাহ্য করা হয়; আপনি উপরে, আরও কম বা কম হিসাবে মুদ্রণ করতে পারেন।

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • এটি হচ্ছে , কোনও প্রোগ্রামের বাইট গণনাটি ন্যূনতম হওয়া উচিত

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

  • একজন আউটলেটর ইনপুট:[0b01, 0b00, 0b01, 0b11]
     _     
    / \    
    | |  _ 
    | | / \
    | | | |
    | |_/ /
    |  __/ 
    | /    
    | |    
    | |    
    | |    
    | |    
    | |    
    | |    
    | |  _ 
    | | / \
    | | | |
    | |_/ /
    |  __/ 
    | /    
 _  | |  _ 
/ \ | | / \
| | | | | |
\ \_| |_/ /
 \__   __/ 
    \ /    
    | |    
    | |    

  • বিকল্প বাহু। ইনপুট:[0b10, 0b01, 0b10]
     _     
    / \    
 _  | |    
/ \ | |    
| | | |    
\ \_| |    
 \__  |    
    \ |    
    | |  _ 
    | | / \
    | | | |
    | |_/ /
    |  __/ 
    | /    
 _  | |    
/ \ | |    
| | | |    
\ \_| |    
 \__  |    
    \ |    
    | |    
    | |    

  • প্রচুর অস্ত্র ইনপুট:[0b11, 0b11]
     _     
    / \    
 _  | |  _ 
/ \ | | / \
| | | | | |
\ \_| |_/ /
 \__   __/ 
    \ /    
 _  | |  _ 
/ \ | | / \
| | | | | |
\ \_| |_/ /
 \__   __/ 
    \ /    
    | |    
    | |    

  • কোনও অস্ত্র নেই, বর্শা হিসাবেও পরিচিত। ইনপুট:[0b00]
     _     
    / \    
    | |    
    | |    
    | |    
    | |    
    | |    
    | |    
    | |    
    | |    

  • দেহ নেই, কেউ একে তরুণ ক্যাকটাস বলে। ইনপুট:[]
     _     
    / \    
    | |    
    | |    


আমি কি অংশগুলির পরিমাণ হিসাবে ইনপুট নিতে পারি এবং তারপরে প্রতিটি অংশ পৃথক পৃথক করে রাখতে পারি? (যেমন 1 ম পরীক্ষা-কেস হবে 4 1 0 1 3)
dzaima

আমরা কি পিছনের জায়গাগুলি উপেক্ষা করতে পারি?
ব্রায়ান এইচ।

@ ডিজাইমা আপনি পারেন
জোনাথন ফ্রেচ

@BrianH। হ্যাঁ; চলমান স্পেসগুলি প্রতিটি লাইনে উপেক্ষা করা হয়।
জোনাথন ফ্রেচ

উত্তর:


10

কাঠকয়লা , 50 49 বাইট

↘_\¶/F²«J¹¦²Fθ¿﹪÷Iκ⁺¹ι²”{➙∧⊟≕δaL7YF¬⊕ρ↥↖_K”↓⁶↓²‖T

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

↘_\¶/

শীর্ষ আঁকুন।

F²«

প্রতিটি দিকে লুপ।

J¹¦²

উপরের ডান দিকে নীচে যান।

Fθ

প্রতিটি স্টেম অংশ উপর লুপ।

¿﹪÷Iκ⁺¹ι²

একটি বাহু আছে কিনা তা পরীক্ষা করুন।

”{➙∧⊟≕δaL7YF¬⊕ρ↥↖_K”

যদি তাই হয় তবে একটি বাহু মুদ্রণ করুন।

↓⁶

অন্যথায় কেবল একটি উল্লম্ব রেখা মুদ্রণ করুন।

↓²

কান্ডটি মুদ্রণের পরে, বেসটি মুদ্রণ করুন।

‖T

অন্য দিকে আঁকতে প্রস্তুত প্রতিফলিত করুন। একবার উভয় পক্ষ টানা গেলে, পক্ষগুলি তার চূড়ান্ত অবস্থানে ফিরে প্রতিফলিত হয়।


7

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

আমি আরও ভাল উপায় অনুধাবন করার আগে আরও একটি সমাধানের জন্য অনেক বেশি সময় ব্যয় করেছি, যা আমাকে এতটা সময় দেয়নি যে আমি এটিতে কাজ করতে পছন্দ করব।

a=>`     _
    / \\`+a.map(([x,y])=>`
 1  | |  2
3 5 | | 4 6
7 7 | | 8 8
5 51| |24 4
 511${`| `[x]} ${`| `[y]}224
    ${`|\\`[x]} `.replace(/\d/g,m=>` _/\\|`[m%2?x*-~m/2:y*m/2])+`|/`[y],s=`
    | |`).join``+s+s

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

o.innerText=(f=
a=>`     _
    / \\`+a.map(([x,y])=>`
 1  | |  2
3 5 | | 4 6
7 7 | | 8 8
5 51| |24 4
 511${"| "[x]} ${"| "[y]}224
    ${"|\\"[x]} `.replace(/\d/g,m=>` _/\\|`[m%2?x*-~m/2:y*m/2])+"|/"[y],s=`
    | |`).join``+s+s
)(i.value=["11","10","01","00"]);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>


এটি 00,01,10,11ইনপুট হিসাবে আক্ষরিক গ্রহণের ক্ষেত্রে বাইনারি ইনপুট বা পরিবর্তে 0,1,2,3। ওপি পরীক্ষার কেসগুলি ব্যবহার করে এটি ব্যর্থ হয়।
ব্রায়ান এইচ।

@ ব্রায়ানএইচ: ইনপুট সংক্রান্ত চ্যালেঞ্জের উদ্ধৃতি দিয়ে: " এটি যে কোনও যুক্তিসঙ্গত বিন্যাসে দেওয়া যেতে পারে "
শেগি ২

1
তবে এতে বলা হয়েছে "ইনপুটটিতে দ্বি-বিট মানের (দশমিক 0, 1, 2, 3) এর তালিকা রয়েছে" " ঠিক তার আগে ... (বিটিডব্লিউ আইএম ডাউনভোটিং বা অন্য কোনও কিছু নয়, এটি অত্যন্ত চালাক, এটি আমার নিয়মের ব্যাখ্যা অনুসারে ইনপুটটি মেলে না)
ব্রায়ান এইচ।


3

পাইথন 2 , 256 253 ... 205 203 199 বাইট

r=[('     _',''),('/','\ ')]
for a in input()+[0]:r+=zip(*[['|'*6,'_|    |_,,/|  \/  |\,,||  ||  ||,,\| _\/_ |/,,\ ____ /,,\/'[i::2].split(',')][2-i&a>0]for i in 0,1])
for l in r[:-4]:print'%5s %s'%l

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


আপনি অন্যান্য স্ট্রিং লিটারেলগুলিতে যেমন করেন, প্রথম লাইনে আপনি পালিয়ে যাওয়া ব্যাকস্ল্যাশ বাদ দিতে পারেন।
জোনাথন ফ্রেচ

দেখে মনে হচ্ছে আপনি সমস্ত পেছনের জায়গাগুলি সরিয়ে 18 বাইট সংরক্ষণ করতে পারেন।
শেগি

for ...:\n r...\n r...-> for ...:r...;r...তিনটি বাইট সংরক্ষণ করে।
জোনাথন ফ্রেচ

1

পাওয়ারশেল , 235 বাইট

param($a)'     _
    / \'
($a|%{((,'1|'*6),('1|  _
1| / \
1|2
1|_/ /
1 __/ 
1/'),(' _ 2
/ \2
| |2
\ \_| |
 \__  |
    \ |'),(' _ 2  _
/ \2 / \
| |22
\ \_| |_/ /
 \__   __/
    \ /'))[$_]})-replace1,'    | '-replace2,' | |'
,'    | |'*2

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

PowerShell একটি নেই mapবা zipপুনরাবৃত্তি বিভাগে সহজ প্রতিস্থাপন - তাই আমরা অন্য কিছু অবশিষ্ট করছি স্ট্রিং বিপরীত বা বাস্তব সহজ উপায়।

প্রথম দুটি লাইন পূর্ণসংখ্যার অ্যারের হিসাবে ইনপুট নেয় এবং ক্যাকটাসের শীর্ষটিকে আউটপুট দেয়। তারপরে আমরা লুপটি করব $aএবং বর্তমান মানের উপর ভিত্তি করে চারটি স্ট্রিংয়ের অ্যারে নির্বাচন করব। এই স্ট্রিংগুলি পাইপলাইনে রেখে যায় এবং তারপরে আমরা আমাদের -replaceউপযুক্ত স্পটগুলি পূরণ করতে ব্যবহার করি । আমরা তারপরে পাইপলাইনের উপরে ক্যাকটাসের নীচে রাখি।

পাইপলাইন থেকে সমস্ত জড়ো করা হয় এবং অন্তর্নিহিত Write-Output হয় এবং প্রোগ্রামের সমাপ্তিতে ঘটে, প্রতিটি উপাদানগুলির মধ্যে একটি নতুন লাইন সন্নিবেশ করানো হয়।


1

05AB1E , 76 75 বাইট

„ _…/ \‚4ú»,v6F'|4ú"_ |/\"•Aö¡Èèj{^ë•5вèJ5ôNè©‚y1›èð'|®∞2äθ‚yÉèJ,}}„| 4úû=,

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


1
মেহ, আমি তোমাকে মারার চেষ্টা করছি, সন্দেহ করুন যদিও।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন: শুভকামনা! আশা করি আপনি এটি পরিচালনা করেছেন (এবং সম্ভবত এটিকে সংঘাতের মধ্যে পরিণত করুন: পি)
এমিগিনা

এটিকে পরাজিত করার আমার একটি ভাল ধারণাটি আমি "ওএসিস / 05 এবি 1 ই" চ্যাটে পোস্ট করা কমান্ডের 30 বাইট বি / সি পছন্দ করে স্কোয়াশ করেছিলাম। ভাল গল্ফ, আমি যদি এখন চেষ্টা করে থাকি তবে এটি খুব কাছাকাছি থাকত।
যাদু অক্টোপাস উরন

1

জাভা (ওপেনজেডিকে 8) , 626 566 499 466 398 312 310 308 বাইট

এক টন গল্ফ করা যায়

a->{String r=" |,",g="    |",n="     _,    / \\,";boolean j,k;for(int e:a)n+=((k=e>1)?" _  |":g)+((j=e%2>0)?" |  _,":r)+(k?"/ \\ |":g)+(j?" | / \\,":r)+(k?"| | |":g)+(j?" | | |,":r)+(k?"\\ \\_|":g)+(j?" |_/ /,":r)+(k?" \\__ ":g)+(j?"  __/,":r)+(k?"    \\":g)+(j?" /,":r);return(n+g+r+g+r).replace(",","\n");}

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


1
ফোর -লুপটি বন্ধ করে এবং এটিকে পরিবর্তন করে {j=e>1;k=e%2>0;n+=(k?" _ |":g)+(j?" | _,":r)+আপনি 2 বাইট সংরক্ষণ করতে পারেন । n+=((k=e%2>0)?" _ |":g)+((j=e>1)?" | _,":r)+}
কেভিন ক্রুইজসেন

আপনি "অস্ত্র" জন্য কুপথ 'বৃত্তাকার আছে 1এবং 2
শেগি

0

এসওজিএল ভি0.12 , 56 54 53 বাইট

5⁷yΙ‚‘∑≡`a#¾‘O.{@.2%i»¹{"⁸G‘6∙;?X"j1>ζ╔²i[n¹‘5n}┼±↔}O

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

ব্যাখ্যা:

..‘                   push the ending part - "    | |\n    | |"
   ..‘O               output the starting part - "     _ \n    / \"
       .{             input times do
         @              push a space
          .2%           push input%2
             i»         push floor(prevInput/2)
               ¹        wrap the two in an array

{                   }   for each of the two numbers
 "..‘                     push "|    " - base stem
     6∙                   multiply vertically 6 times
       ;?       }         if the current item iterating over is truthy (i.e. != 0)
         X                  remove ToS - the regular stem - from the stack 
          "..‘              push "|  _ | / \| | ||_/ / __/ /    " - stem with an arm
              5n            split it into line lengths of 5
                 ┼        add that horizontally to the space pushed earlier (or whatever it's become)
                  ±↔      reverse ToS - the stem currently - horizontally
                     O  output the array of the current part
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.