রেট্রো রকেট প্রিন্ট করুন


13

(এই SO প্রশ্নের দ্বারা অনুপ্রাণিত )

আপনি একটি একক ধনাত্মক পূর্ণসংখ্যা ইনপুট হিসাবে দেওয়া হয় এন

যতটা সম্ভব চরিত্রের মধ্যে, ASCII আর্টে একটি রকেট আউটপুট করুন একটি মাথা, একটি লেজ এবং এন বিভাগগুলির সমন্বয়ে গঠিত একটি বডি দিয়ে । কোনও চলার জায়গা বা নতুনলাইন হওয়া উচিত নয়।

রকেটের মাথা এবং লেজ সর্বদা n এর যে কোনও মানের জন্য সমান । দেহে দুটি পৃথক ধরণের অংশ রয়েছে যা বিকল্প হয়। উদাহরণগুলি রকেটের কাঠামো পরিষ্কার করতে হবে।

এন = 1 এর আউটপুট :

     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\

এন = 2 এর আউটপুট :

     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\

এন = 3 এর আউটপুট :

     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
     /**\
    //**\\
   ///**\\\
  ////**\\\\
 /////**\\\\\

3
সংশ্লিষ্ট পোস্ট, আমাদের পাপের উপযুক্ত শাস্তি থেকে: codereview.stackexchange.com/questions/65040/...

উত্তর:


6

সিজেম, 67 63 টি অক্ষর

"дȈ鰚㒄å摒四ㄺ뎞椉ᖛⲠ줥葌⌁掗⦠춻锦䎷겲铣굛쮂먲꿡㦺좒轃汁̕뎕갴瓖邻吟㭰戔蟏㳵回㡚钦״脮烮鋉둎邫"6e4b127b:c~

এটি অনলাইন দোভাষীতে কাজ করা উচিত ।

কিভাবে এটা কাজ করে

ইউনিকোড স্ট্রিংটি চাপ দেওয়ার পরে স্নিপেট

6e4b127b:c~

স্ট্রিংটি বেস 60000 থেকে 127 বেসে রূপান্তর করে, কাস্টগুলিকে স্ট্রিংয়ে রূপান্তর করে এবং ফলাফলটির মূল্যায়ন করে।

কার্যকর করা কোডটি নিম্নলিখিত:

"..."          " A binary string of length 42.                                            ";
122b7b         " Convert from base 122 to base 7.                                         ";
"\n *./\|"f=   " Replace each digits with the corresponding character.                    ";
60/~           " Split into chunks of length 60 and dump the resulting array.             ";
               " The stack now contains the rocket's head and a body half.                ";
[_W%[\]_W%]    " Push an array of the body half and the reversed body half, a reversed    ";
               " copy of that array and collect both array into another one.              ";
Nf*Nf+         " Join each array of body halves separating by LFs and append LFs.         ";
ri:I*           " Repeat the resulting array I := int(input()) times.                     ";
I<W%           " Keep the first I bodies and reverse their order.                         ";
\a_@\++        " Prepend and append the rocket head/tail.                                 ";
'+"=*"6*'+N+++ " Push S := '+=*=*=*=*=*=*+\n'.                                            ";
*              " Join the array of parts, separating by S.                                ";

1
আপনার সত্যিই এটি বাইটে গণনা করা উচিত, না?
ক্লদিউ

8
@ ক্লাডিউ: এবং আমার স্কোর নষ্ট করবে? : পি উত্তরগুলি দৈর্ঘ্য বাইট দ্বারা ডিফল্টরূপে স্কোর হয় তবে প্রশ্নটি যতটা সম্ভব কম অক্ষরে বলে এটিকে ওভাররাইড করে ।
ডেনিস

10

সিজেম, 121 বাইট

5,{_5\-S*\)_'/*"**"@'\*N}%:A['+"+
"]"=*"6**:Lri:M{M(:M;2,{M+2%:J;3,{:I'|J@2\-'.*I'.*?_J"/\\""\/"?JI)3I-?*\++_+'|N}%}%L}*A

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

ইনপুট লাগে এন stdin মাধ্যমে।

আমি পরে এক পর্যায়ে একটি ব্যাখ্যা যুক্ত করব। মূলত এগুলি সমস্ত খুব নিরীহ উপায়ে লুপগুলির একগুচ্ছ। দুটি ভিন্ন শরীরের অংশ মধ্যে বিকল্প করার জন্য, আমি অংশ এবং উপর একটি লুপ উপর একটি নেস্টেড লুপ পেয়েছেন 0এবং 1। তারপরে আমি কেবল বাহ্যিক পুনরুক্তি এবং অভ্যন্তরটি যুক্ত করব এবং উপরের বা নীচের দিকে নির্দেশিত ত্রিভুজের মধ্যে সিদ্ধান্ত নিতে তাদের সমতা ব্যবহার করব।


java.util.NoSuchElementExceptionকোডটি পেস্ট করে একটি কপি পেয়েছি (পয়েন্ট করাতে Lri)
ক্লাদিউ

@ ক্লাউডিউ আপনি কি "ইনপুট" ক্ষেত্রে কোনও পূর্ণসংখ্যা প্রবেশ করেছিলেন?
মার্টিন এন্ডার

ওহ হ্যাঁ, এটা এটা করতে হবে!
ক্লাদিউ

5

রুবি, 203

n,q=$*[0].to_i,"\\/"
h,r,m=1.upto(5).map{|i|(?/*i+"**"+?\\*i).center 14},?++"=*"*6+?+,3.times.map{|i|?|+?.*i+q*(3-i)+?.*(2*i)+q*(3-i)+?.*i+?|}*"\n"
p=m.reverse.tr q,"/\\"
puts h,([r,m,p,r,p,m]*n)[0,3*n],r,h

Ungolfed

আমি মনে করি এই ক্ষেত্রে একটি গল্ফবিহীন সংস্করণ থাকা উপকারী beneficial

n      = $*[0].to_i
head   = 1.upto(5).map { |i| ("/"*i + "**" + "\\"*i).center 14 }
ridge  = "+" + "=*"*6 + "+"
middle = 3.times.map { |i| "|" + "."*i + "\\/"*(3-i) + "."*(2*i) + "\\/"*(3-i) + "."*i + "|" }.join "\n"
piddle = middle.reverse.tr "\\/", "/\\"

puts head
puts ([ridge,middle,piddle,ridge,piddle,middle]*n)[0,3*n]
puts ridge, head

ব্যাখ্যা

আমি সন্দেহ করি এটি দক্ষতার কাছাকাছি যে কোনও জায়গায়, তবে এটি মজাদার ছিল।

  • ইনপুট নেওয়া হয় ARGV
  • h, "মাথা" এবং রকেট এর "লেজ" রয়েছে r"ঢালের" যে রকেট বিভিন্ন স্থানে পৃথক এবং ধারণ করে mএবং pরকেট এর "শরীর" শীর্ষ এবং নীচের অংশ অংশ আছে।
  • শরীরটি সাইকেল চালিয়ে Array ["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]এবং প্রথম 3*nউপাদানগুলি গ্রহণ করে নির্মিত হয় ।
  • puts সবকিছু তার নিজস্ব লাইন পেয়েছে তা নিশ্চিত করে।

3

পাইথন, 120 + 77 + 1 = 198 টি অক্ষর

এটি ভুল পদ্ধতির সমাপ্তি ঘটল, তবে মার্টিন তার উত্তর পোস্ট করার সময় আমি ইতিমধ্যে শেষ করেছিলাম।

H,L,T,B=open("R","rb").read().decode('zip').split("X")
n=input()
for p in[H]+([B,T,L,T,B,L]*n)[:3*n][::-1]+[L,H]:print p

By R77 বাইটের একটি ফাইল (ফাইলের নামের জন্য +1) প্রয়োজন , যা আপনি নীচে তৈরি করতে পারেন:

>>> open('R','wb').write('eJxNjMENwDAIA/+ZIm8i4Qm6Bw+PwvDFQRUFydwJwd5VMOO6ILqIRjE+LsEI4zw2fSKJ6Vzpmt4p\ndVlnRikoVWqrK+8s/X1ivozIJuo=\n'.decode('base64'))

3

জেএস, ডাব্লুআইপি, 252 বি বা 173 অক্ষর

এটি কোনও ফাংশন নয়, সুতরাং আপনাকে প্রথমে n এর মান নির্ধারণ করতে হবে (এখানে 3), তারপরে এটি কনসোলে বা নোডজেএসে চালিত করুন।

এখানে 252 বি সংস্করণ রয়েছে:

n=3;r=a="     /**01    //**001   ///**0001  ////**00001 /////**00000";b="1+=*=*=*=*=*=*+1";for(c=[d="|0/0/0/0/0/0/|1|.0/0/..0/0/.|1|..0/....0/..|",d.split("").reverse().join("")];n--;)r+=b+c[n%2]+1+c[1-n%2];(r+b+a).replace(/0/g,"\\").replace(/1/g,"\n")

এবং এখানে 173 অক্ষর সংস্করণ রয়েছে ( http://xem.github.io/obfuscatweet/ ব্যবহার করে )

n=3;eval(unescape(escape('𬠽𨐽𘠠𘀠𘀠𛰪𚠰𜐠𘀠𘀯𛰪𚠰𜀱𘀠𘀯𛰯𚠪𜀰𜀱𘀠𛰯𛰯𚠪𜀰𜀰𜐠𛰯𛰯𛰪𚠰𜀰𜀰𘠻𨠽𘠱𚰽𚠽𚠽𚠽𚠽𚠽𚠫𜐢𞱦𫱲𚁣👛𩀽𘡼𜀯𜀯𜀯𜀯𜀯𜀯𯀱𯀮𜀯𜀯𛠮𜀯𜀯𛡼𜑼𛠮𜀯𛠮𛠮𜀯𛠮𯀢𛁤𛡳𬁬𪑴𚀢𘠩𛡲𩑶𩑲𬱥𚀩𛡪𫱩𫠨𘠢𚑝𞱮𛐭𞰩𬠫👢𚱣𦱮𙐲𧐫𜐫𨱛𜐭𫠥𜡝𞰨𬠫𨠫𨐩𛡲𩑰𫁡𨱥𚀯𜀯𩰬𘡜𧀢𚐮𬡥𬁬𨑣𩐨𛰱𛱧𛀢𧁮𘠩').replace(/uD./g,'')))

কনসোল পরীক্ষিত। শীতল এবং +1, তবে সাধারণত যখন ওপি একটি আউটপুট জিজ্ঞাসা করে এবং কেবল রিটার্ন মান না করে, একটি আউটপুট বিবৃতি অনুরোধ করা হয় (যেমন কনসোল.লগ বা সতর্কতা - আমি নোডজেএসে জানি না)।
edc65

আপনি ঠিক বলেছেন ... আমি নিজেকে কনসোলকে আউটপুট হিসাবে বিবেচনা করার অনুমতি দিয়েছি। : P (এছাড়াও, nodeJS করতে পারেন শুধুমাত্র তার কনসোল আমি যতদূর জানি উপর আউটপুট)
xem

3

জাভাস্ক্রিপ্ট (E6) 252 257

স্ট্রিং.রেপেটের অতিরিক্ত ব্যবহার

F=p=>{
  R=(n,s='.',a='')=>a+s.repeat(n)+a;
  for(i=f=o=m=n='';++i<6;)
    o+=f+R(6-i,' ')+R(i,u='/')+'**'+R(i,t='\\'),
    f='\n',
    i<4?m+=f+R(2,R(4-i,t+u,R(i-1)),'|',n+=f+R(2,R(i,u+t,R(3-i)),'|')):0;
  s=f+R(6,'=*','+'),
  console.log(o+s+R(p&1,q=m+n+s)+R(p/2,n+m+s+q)+f+o)
}

এটি মজাদার, আমাদের দুজনেরই 252 বি রয়েছে তবে সম্পূর্ণ ভিন্ন পদ্ধতির সাথে :)
xem

3

জাভাস্ক্রিপ্ট (ES3): 243 219 বাইট

R=function(n){for(a='',i=5;i--;t=a+=s+'\n')for(s='**',j=6;j--;b=['|../\\..|./\\/\\.|/\\/\\/\\','|\\/\\/\\/|.\\/\\/.|..\\/..'])s=i<j?'/'+s+'\\':' '+s+' ';for(;a+='+=*=*=*=*=*=*+\n',n;)a+=(b[n&1]+b[--n&1]).replace(/[^|]+/g,'$&$&|\n');return a+t}

1 SyntaxError: function statement requires a name:, 2: ভুল আউটপুট, শরীরের অংশগুলি সমস্ত সমান হবে না (বিজোড় এবং এমনকি আলাদা)
edc65

1. কারণ এটি ফাংশনএক্সপ্রেসনের উদ্দেশ্য। তবে আমি একটি অ্যাসাইনমেন্ট যোগ করেছি, সুতরাং এটি এখন কাজ করা উচিত। 2. ধন্যবাদ! আমি প্রথমে তা খেয়াল করিনি।
subzey
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.