কিছু ASCII তারা আঁকুন


15

একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি ASCII তারকা আঁকবে, অস্ত্রগুলির আকারটিকে ইনপুট হিসাবে দেওয়া হবে।

আকারের একটি তারা এখানে 1

_/\_
\  /
|/\|

আকারের একটি তারা এখানে 2

   /\
__/  \__
\      /
 \    /
 | /\ |
 |/  \|

আকারের একটি তারা এখানে 3

     /\
    /  \
___/    \___
\          /
 \        /
  \      /
  |  /\  |
  | /  \ |
  |/    \|

ইত্যাদি।

ইনপুট

একটি একক ধনাত্মক পূর্ণসংখ্যা কোনো সুবিধাজনক বিন্যাসে , n > 0।

আউটপুট

উপরের নিয়মগুলি অনুসরণ করে একটি তারকার একটি ASCII- শিল্প উপস্থাপনা। শীর্ষস্থানীয় / পিছনের নিউলাইনগুলি বা অন্যান্য শ্বেতস্পেস optionচ্ছিক, যদি পয়েন্টগুলি যথাযথভাবে লাইন করে।

বিধি

  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরে আসতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

6
এটি কি কেবল আমার পর্দা, বা তারারগুলি অস্বাভাবিক লম্বা এবং পাতলা দেখাচ্ছে?
— 2:30 এয়ারড কোয়েনেরিংহিং

2
বোকা এএসসিআইআই এবং এর অগভীর
— স্লেন্টের

@Cairdcoinheringaahing এসই দ্বারা ব্যবহৃত ফন্টটি বর্গক্ষেত্র নয় - লাইনগুলির মধ্যে উল্লেখযোগ্য শ্বেতস্থান রয়েছে যা বিকৃতি বাড়িয়ে তোলে।
— অ্যাডমবর্কবার্ক

উত্তর:


12

কাঠকয়লা , 20 17 বাইট

-3 বাইট ধন্যবাদ নীলকে।

Nν↙ν↑↑ν↖ν ×_ν↗ν‖M

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

আমি এই গল্ফ তাই খুব খুশি ...

ব্যাখ্যা

Nν                 take a number as input and store in ν
  ↙ν               print / ν times downwards to the left
    ↑              move up once
     ↑ν            print | ν times upwards
       ↖ν          print \ ν times upwards to the left
                   print a space
          ×_ν      print _ ν times
             ↗ν    print / ν times upwards to the right
               ‖M  reflect horizontally
     /\                           
    /  \    "No, this is Patrick!"
___/    \___                      
\   ☉ ☉    /                      
 \   𝐷    /                       
  \      /                        
  |  /\  |                        
  | /  \ |                        
  |/    \| 

নীচে শীর্ষে আঁকলে 2 বাইট সাশ্রয় হয়।
— নিল


এর কারণ Polygonকার্সারটি সর্বশেষ চরিত্রটিতে Polygonফেলেছে , তবে আমি ব্যবহার করছিলাম না ... আসলে আমি সেরা কোডটি ব্যবহার করছিলাম না, এখন আমি নীচে নেমেছি।
— নীল

আমি যদি 17 টিরকমভাবে পেতাম তবেই করতাম না ... ধন্যবাদ!
— সম্পূর্ণমানবিক

যথেষ্ট কাছে। আমি আসলে ছিল Move(:Right); for (n) Print("_");।
— নিল

5

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

╔*¹.╚№┼№.╝+ø┐.∙.1ž.╚┼+╬³

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

ব্যাখ্যা:

╔*                        push a string with input amount of underscores
  ¹                       wrap that in an array
   .╚                     push a "/" diagonal of the size of the input (the top lines)
     №                    reverse vertically
      ┼                   add horizontally the underscores behind the array
       №                  reverse vertically back
        .╝+               below that add a "\" diagonal (middle lines)
           ø              push an empty string as the base of the vertical bars
            ┐.∙           get an array of "|" with the length of the input
               .1ž        at [input; 1] in the empty string insert that
                  .╚┼     horizontally append a "/" diagonal
                     +    add that below everything else
                      ╬³  palindromize horizontally

4

পাইথন 2 ,  166 160 157 155  152 বাইট

execপদ্ধতির ঠিক একই বাইট গণনা করা হয়।

i=input();t,z=" \\";y=t*2
for k in range(i*3):s=k%i;o=i+~s;p=i+o;g="_ "[i>k+1]*p;print[g+"/"+y*k+z+g,t*s+z+y*p+"/",~-i*t+"|"+o*t+"/"+y*s+z+o*t+"|"][k/i]

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

জোনাথন ফ্রেচের জন্য 3 বাইট সংরক্ষণ করা ।


আপনি প্রতিস্থাপন করে কিছু বাইট বাঁচাতে পারে t=" ";y,z=t*2,"\\"সঙ্গে t,z=" \\";y=t+t।
— জনাথন ফ্রেচ

জনাথনফ্রেচ
— মিঃ এক্সকোডার 6

3

জাভা 8, 385 376 344 304 285 280 268 264 252 250 + 19 বাইট

n -> {int s = 2 * n, w = 2 * s, e = n-1, i = 0, o, l [] [] = নতুন ইনট [এন * 3] [ডাব্লু]; এর জন্য (; i <এন; ঠ [আমি] [গুলি + + ~ আমি] = ঠ [এন + I] [W + + ~ আমি] = ঠ [ণ] [S + ~ আমি] = 47, ঠ [আমি] [ণ] = ঠ [ণ] [ ণ] = ঠ [এন + I] [আমি] = 92, L [ই] [আমি] = ঠ [ই] [W - ++, আমি] = 95, ঠ [ণ] [ই] = ঠ [ণ] [ s + n] = 124) o = s + i; for (int [] b: l) System.out.println (নতুন স্ট্রিং (বি, 0, ডাব্লু))। স্থান (" ", ""));}

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


আপনি এটি 10 ​​টি বাইট দ্বারা বিটওয়াইজ ট্রিকস ব্যবহার করে এবং আপনার সমস্ত
— ধাপের


ফোর-লুপ বন্ধনীগুলি থেকে মুক্তি পেয়ে এবং ++সরাসরি এর শেষ ঘটনাটিতে সরাসরি ব্যবহার করে আপনি আরও 4 টি বাইট সংরক্ষণ করতে পারেন i: 264 বাইট ।
— কেভিন ক্রুইজসেন


@ নেভা খুব চালাক, আপনাকে ধন্যবাদ
— রবার্তো গ্রাহাম

2

গণিত, 189 বাইট

n(
  s_±x_±y_:=s->Array[If[x==y,s," "]&,{n,n}];
  StringRiffle[Characters@{"_/\\_","\\  /","|/\\:"}/.
    {"_"±#±n,"|"±#2±n,":"±#2±1,"\\"±#±#2,"/"±(n-#+1)±#2," "±0±1}
    /.":"->"|"//ArrayFlatten,"
",""])

লাইন 2 সাহায্যকারী অপারেটরটিকে সংজ্ঞায়িত করে ±, যা 4 লাইনটি মূল্যায়ন করতে ব্যবহৃত হয়:

{"_"  -> Array[If[#1 == n,          "_", " "] &, {n, n}], 
 "|"  -> Array[If[#2 == n,          "|", " "] &, {n, n}], 
 ":"  -> Array[If[#2 == 1,          ":", " "] &, {n, n}], 
 "\\" -> Array[If[#1 == #2,         "\\"," "] &, {n, n}], 
 "/"  -> Array[If[1 + n - #1 == #2, "/", " "] &, {n, n}], 
 " "  -> Array[If[0 == 1,           " ", " "] &, {n, n}]}

লাইন 3-এ, ReplaceAll( /.) 1 মাপের তারার পাশাপাশি উপরের নিয়মের তালিকার প্রতিনিধিত্ব করে একটি ম্যাট্রিক্স গ্রহণ করে। চূড়ান্ত পদক্ষেপের জন্য, আমরা ব্যবহার করি ArrayFlattenযা কম SubstitutionSystemএবং এর চেয়ে কম StringRiffle।


2

জাভা 7, 295 বাইট

সমাধান পদ্ধতি f।

String s(String s,int n){while(n-->0)s=" "+s;return s;}String f(int x){String n="\n",s="/",b="\\",o="",u="_";int i=0;for(x--;i<x;u+="_")o+=s(s,2*x-i+1)+s(b,2*i++)+n;o+=u+s+s(b,2*i)+u+n;while(i>=0)o+=s(b,x-i)+s(s,4*x-2*(x+~i--))+n;while(i++<x)o+=s("|",x)+s(s,x-i)+s(b,2*i)+s("|",x-i)+n;return o;}

এটি অনলাইনে চেষ্টা করুন (জেডিকে 8)

Ungolfed

String s(String s, int n) {
    while (n-- > 0)
        s = " " + s;
    return s;
}

String f(int x) {
    String
        n = "\n",
        s = "/",
        b = "\\",
        o = "",
        u = "_"
    ;
    int i = 0;
    for (x--; i < x; u += "_")
        o += s(s, 2*x - i + 1) + s(b, 2 * i++) + n;
    o += u + s + s(b, 2 * i) + u + n;
    while (i >= 0)
        o += s(b, x - i) + s(s, 4*x - 2*(x + ~i--)) + n;
    while (i++ < x)
        o += s("|", x) + s(s, x - i) + s(b, 2 * i) + s("|", x - i) + n;
    return o;
}

প্রাপ্তি স্বীকার

  • -1 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ


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