আই সো দ্যাট কামিং


19

একটি প্রোগ্রাম বা ফাংশন লিখুন যা 1 বা তার বেশি -1 এর চেয়ে কম পূর্ণসংখ্যায় নিয়ে যায়। অর্থাৎ ইনপুটটি 0, 1 বা -1 হবে না।

যদি ইনপুট হয় 2তবে আউটপুটটি হওয়া উচিত:

|\_/|
|___|

যদি ইনপুট হয় 3তবে আউটপুটটি হওয়া উচিত:

|\_/\_/|
|______|

যদি ইনপুট হয় 4তবে আউটপুটটি হওয়া উচিত:

|\_/\_/\_/|
|_________|

বৃহত্তর ইনপুটগুলির জন্য প্যাটার্নটি একই সঠিক পদ্ধতিতে অব্যাহত রয়েছে। উদাহরণস্বরূপ, যদি ইনপুট হয় 10তবে আউটপুটটি হওয়া উচিত:

|\_/\_/\_/\_/\_/\_/\_/\_/\_/|
|___________________________|

যদি ইনপুট হয় -2তবে আউটপুটটি হওয়া উচিত:

 ____
|    |
|_/\_|

যদি ইনপুট হয় -3তবে আউটপুটটি হওয়া উচিত:

 _______
|       |
|_/\_/\_|

যদি ইনপুট হয় -4তবে আউটপুটটি হওয়া উচিত:

 __________
|          |
|_/\_/\_/\_|

প্যাটার্নটি ছোট ইনপুটগুলির জন্য একই সঠিক পদ্ধতিতে অব্যাহত থাকে। উদাহরণস্বরূপ, যদি ইনপুট হয় -10তবে আউটপুটটি হওয়া উচিত:

 ____________________________
|                            |
|_/\_/\_/\_/\_/\_/\_/\_/\_/\_|

আউটপুট একটি beচ্ছিক ট্রেলিং নিউলাইন সহ স্ট্রিং হিসাবে মুদ্রিত বা ফিরে আসতে পারে। নেতিবাচক ইনপুটগুলির জন্য আউটপুটটির উপরের ডানদিকে "খালি" কোণটি একটি স্থান হতে পারে বা এটি খালি থাকতে পারে।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


12
আমি সেখানে আপনি কি কি দেখেছি
অ্যালেক্স এ।

উত্তর:


1

পাইথ, 45 বাইট

jtW!J<Q0.b+.[YN+h*3t.aQJY.>[d.<"\_/"J\_)J" ||

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা:

jtW!J<Q0.b+.[YN+h*3t.aQJY.>[d.<"\_/"J\_)J" ||  implicit: Q = input number
    J<Q0                                       assign Q < 0 to J
                           [           )       create a list with
                            d                    * the string " "
                             .<"\_/"J            * the string "\_/" rotated to 
                                                   the left by J
                                     \_          * the string "_"
                         .>             J      rotate to the right by J
                                         " ||  the string " ||"
        .b                                     binary mapping, N iterates
                                               over list, Y over string:
           .[YN+h*3t.aQJ                         pad Y with N to reach a string
                                                 of length 3*(abs(Q)-1)+1-J
          +             Y                        and append Y
 tW!J                                           remove the first line if Q > 0
j                                               print each on separate line

4

সিজেম, 56 50 49 বাইট

ri_(z"\_/"*'_@0>{\4>W<_,@*SooNoS}|1$,*]${'|\'|N}/

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন

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

ri     e# Read an integer from STDIN and push it on the stack.
_(z    e# Push a copy, decrement it and apply absolute value.
       e# For positive n, (n -> n-1) and (-n -> n+1).
"\_/"* e# Repeat the string that many times.
'_     e# Push an underscore.
@0>    e# Check if the original integer is positive.
{      e# If it isn't:
  \    e#   Swap the generated string with the underscore.
  4>W< e#   Discard the string's first 4 and last character.
       e#   This makes the pattern of the bottom row start and end with an
       e#   underscore, truncating it to the correct length in the process.
  _,   e#   Push the length of a copy.
  @*   e#   Repeat the underscore that many times.
  So   e#   Print a space.
  oNo  e#   Print the underscores, then a linefeed.
  S    e#   Push a space.
}|     e#
1$,    e# Retrieve the strings length.
*      e# Repeat the underscore or space that many times.
]$     e# Wrap the two generated strings in an array and sort it.
{      e# For each string:
  '|\  e#   Push a vertical bar and swap the string on top of it.
  '|N  e#   Push a vertical bar and a linefeed.
}/     e#

3

পাইথ, 56 54 বাইট

আমি অনলাইন দোভাষী দিয়ে একটি ফোনে পাইথ গল্ফ করছি। এটি একটি সম্পূর্ণ দুর্দান্ত ধারণা।

2015-10-15 আপডেট করুন: আমি জিনিসটি আবার লিখেছি (এখনও আমার ফোনে, লোল) এবং 2 বাইট সংরক্ষণ করেছি, যার মধ্যে একটি আসলটি দিয়েও করা যেতে পারে।

J<Q0Ljb"||"jPW!J_WJ[y<>*K+J*3t.aQ"\_/"JKy*K?Jd\_+d*K\_

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


2

মিনকোলাং 0.8 , 100 বাইট

"|"nd0`u!vbd3*["_"]"|"25*"|"1g["\_/"]"|"(O).
"[d~g1"_"<.)O(" "D*3R~1"_"*52"|"D*3R1dg2"| "*52"|"]"\/_

কেবল স্ট্যাকটি তৈরি করে এবং তারপরে এটি একবারে প্রিন্ট করে। আমি নিশ্চিত যে এটি গল্ফ করা যেতে পারে তবে আমি ইতিমধ্যে এটিতে প্রচুর সময় ব্যয় করেছি ...


1

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

অনুকূল কৌশল আবিষ্কার! টেম্পলেট স্ট্রিংগুলি থেকে সেই সমস্ত ইন্টারপোলটারগুলি সরিয়ে ফেলা হয়েছে প্রচুর বাইট সংরক্ষণ করে । সম্ভবত এটি আরও খাটো করা যেতে পারে, সম্ভবত না। যাই হোক না কেন, ES6 টেম্পলেট স্ট্রিং (এবং তীর ফাংশন) দুর্দান্ত। :)

x=>(x>0?`|\\_/A|
|___A|`:` ___A_
|   A |
|_/\\A_|`).replace(/(...)A/g,(_,y)=>y.repeat(x>0?x-1:~x))

0

পাইথন 2.7, 144 বাইট

এটি প্রত্যাশার চেয়ে বেশি বাইট নিয়েছে। এখানে কোড।

c=int(input())
p,w,n,u=list('| \n_')
a=abs(c)-1
d=3*a
if c>0:
 s=p+"\\_/"*a+p+n+p+u*d+p
else:
 d=d+1
 s=w+u*d+n+p+w*d+p+n+p+"_/\\"*a+u+p
print s

0

জাভা, 272 বাইট

String f(int i) {
String p = i>0?"\\_/":"_/\\_",x = "|"+new String(new char[(i<0?-i:i)-1]).replace("\0",p)+"|",
l=new String(new char[x.length()-2]).replace("\0","_");
return i>0?x+"\n|"+l+"|":" "+l+" \n|"+new String(new char[x.length()-2]).replace("\0"," ")+"|\n"+x;
}

0

স্পেসবিএএস - 167 বাইট

1 INPUT n: DIM s$="\_/","_/\": LET t$=s$(2-(n>0))*(ABS n-1)+("_"*(n<0)),u$="_"*LEN t$
2 TEXT IIF$(n>0,"|"+t$+"|"#13"|"+u$+"|"," "+u$+#13"|"+" "*LEN t$+"|"#13"|"+t$+"|")

IIF$এটি একটি ইনলাইন IFবিবৃতি, #13একটি স্ট্রিংয়ে নতুনলাইনগুলি এম্বেড করার একটি উপায় (এটি হার্ডকোডযুক্ত স্ট্রিংগুলির মধ্যে থাকলে এবং সর্বদা "+" প্রয়োজন হয় না)।

কয়েকটি প্রকাশের আগে, স্পেসবিএএস আপনাকে একটি LETবিবৃতিতে একাধিক অ্যাসাইনমেন্ট দেয় , যা কিছু অক্ষর সংরক্ষণ করতে সহায়তা করে।


0

পাইথন 2.7, 118 বাইট

n=input()*3-3
a=-n-6
s=' %s_\n| %s|\n|%s_|'%(a*'_',a*' ',a/3*'_/\\')
if n>0:s='|%s|\n|%s|'%(n/3*'\\_/',n*'_')
print s

120 থেকে 118 থেকে নামা মজা ছিল!


0

রুবি - 113 বাইট

খুব দীর্ঘ মনে হচ্ছে। আমি এটিকে আরও কিছুটা গল্ফ দেওয়ার চেষ্টা করব।

n=gets.to_i;p,h=n.abs-1,?|;n>0 ? (puts h+'\\_/'*p+h,h+'___'*p+h):(k=p*3+1;puts' '+?_*k,h+' '*k+h,'|_'+'/\\_'*p+h)

0

সি #, 185 বাইট

সি # গল্ফিং পুনরাবৃত্তি স্ট্রিংগুলির সাথে লড়াই করে।

সম্পূর্ণ গল্ফড:

string S(int n){int m=n>0?n:-n;return string.Format(n>0?"|{0}\n|{1}|":" {1}\n|{2}|\n|_{0}","|".PadLeft(m).Replace(" ",n>0?@"\_/":@"/\_"),"".PadLeft(m=m*3-(n>0?3:2),'_'),"".PadLeft(m));}

স্পষ্টতার জন্য ইনডেন্টেশন এবং নতুন লাইন যুক্ত হয়েছে:

string S(int n){
    int m=n>0?n:-n;
    return string.Format(n>0?"|{0}\n|{1}|":" {1}\n|{2}|\n|_{0}",
        "|".PadLeft(m).Replace(" ",n>0?@"\_/":@"/\_"),
        "".PadLeft(m=m*3-(n>0?3:2),'_'),
        "".PadLeft(m)
    );
}

0

পাওয়ারশেল - 200 190 186 168 154

কিছু এক্সট্রান্সিয়াস পেরেনস এবং সেমিকোলন সহ সমীকরণ (4 - (($ n-2) 3)) থেকে (3 $ n-6) গল্ফ করেছেন।

পাওয়া গেছে যে `n এর সমতুল্য [Environment]::NewLineএবং এটি $s -f [args]হ'ল [String]::Format:

$n=$args;if($n-gt0){$s="|{1}|{0}|{2}|";$a=$n;$b=$n*3}else{$n*=-1;$s=" {2}{0}|{3}|{0}|_/{1}\_|";$a=$n-2;$b=$c=3*$n-2};$s-f"`n",("\_/"*$a),("_"*$b),(" "*$c)

ব্যাখ্যা স্পষ্টকরণক প্রথম বন্ধনী ধরে রাখে:

$n=$args;

// Basically a way of coming up with a string to format and the 
// necessary counts of repeated characters
if($n-gt0){
  // Placeholder format
  $s="|{1}|{0}|{2}|{3}";
  // Number of repeated "\_/" instances
  $a=$n;
  // Number of repeated "_" instances
  $b=$n*3
} else { 
  $n*=-1;
  $s=" {2}{0}|{3}|{0}|_/{1}\_|";
  $a=($n-2);
  $b=(4+(($n-2)*3));
  // Number of repeated " " instances .. not needed for "positive" saw
  $c=$b;
};
[String]::Format($s,[Environment]::NewLine,"\_/"*$a,"_"*$b," "*$c)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.