কিছু 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.