কিছু ASCII রত্ন খোদাই!


25

13 মার্চ জাতীয় জুয়েল দিবস হিসাবে স্বীকৃত , যা এই চ্যালেঞ্জের প্রতিপাদ্য। সুতরাং, 0 এর চেয়ে বড় nযেখানে পূর্ণসংখ্যা দেওয়া nহয়, এটি একটি ASCII রত্ন তৈরি করুন। উদাহরণ স্বরূপ:

n = 1          n = 2             n = 3
                                       ______
                     ____             /      \
 __                 /    \            \      /
/  \                \    /             \    /
\  /                 \  /               \  /
 \/                   \/                 \/

নীচের অংশটি রত্নের একেবারে নীচের অংশে সর্বাধিক জোড়া হিসাবে সংজ্ঞায়িত করা হয় \/ । বাকীটি শীর্ষে রয়েছে। উপরের উদাহরণের জন্য যেখানে n = 1:

Bottom: \  /    Top:   __
         \/           /  \

আপনি দেখতে পাচ্ছেন, নীচের অংশটি সর্বাধিকের সাথে ফাঁকা স্থানগুলির n + 1স্তরগুলি দিয়ে তৈরি\/(1 * lines from the bottom) * 2n মণি নিচ থেকে লাইন। আমরা যদি দ্বিতীয় রত্নটি নিয়ে যাই ( n = 2), আমরা দেখতে পাব:

 ____
/    \      
\    /  2 (or n) layers from the bottom with 1*2*2 or 4 spaces in between \/
 \  /   1 layer from the bottom with 1*1*2 or 2 spaces in between \/
  \/    The bottom (0 layers) with 1*0*2 spaces or 0 spaces in between \/

উপরেরটি এক জোড়া দিয়ে তৈরি /\ আন্ডারস্কোরগুলির সাথে শীর্ষে n*2ফাঁক দিয়েn*2 হয়।

বিধি

  • ব্যবহারকারীর ইনপুট হিসাবে কোনও ননজারো ধনাত্মক পূর্ণসংখ্যার নিতে সক্ষম হতে হবে
  • উপরে বর্ণিত চশমাগুলির সাথে অবশ্যই একটি রত্ন তৈরি করতে হবে (এখানে পুনরুদ্ধার করা):
    • উপরের অংশটি ফাঁক /\দিয়ে এক জোড়া দিয়ে n*2তৈরি করা হয়n*2 আন্ডারস্কোরগুলির সাথে শীর্ষে হয়।
    • নীচে জুয়েলের নীচ থেকে সর্বাধিক লাইনগুলির মধ্যে ফাঁক দিয়ে n + 1স্তরগুলির তৈরি করা হয় ।\/(1 * lines from the bottom) * 2n
  • রত্নের পরে ট্র্যাকিং করা নিউলাইনগুলি, বা প্রতিটি লাইনের পিছনে স্থানগুলি অনুমোদিত allowed
  • কোনও স্ট্যান্ডার্ড লুফোল অনুমোদিত নয়

বিজয়ী মানদণ্ড

সর্বনিম্ন বাইট জয়!


4
কঠোরভাবে "ননজারো পজিটিভ" বলা অপ্রয়োজনীয় - আপনি যদি 0 টি অন্তর্ভুক্ত করতে চান তবে আপনাকে "ননজেটিভ" বলতে হবে।
ফান্ড মনিকার লসুইট

উত্তর PETSCII এ থাকতে পারে?
শন বেবারস ২ 8

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

উত্তর:


27

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

কোড:

NβG←β_↙↙¹→↘⁺β¹‖M→

ব্যাখ্যা:

Nβ                      # Place the input into β
   G←β_                 # Draw a line of length β with _ as the filling character
        ↙                # Move the cursor one down and one left
         ↙¹              # Draw a line from the cursor position to one position ↙
           →             # Move the cursor 1 to the right
             ⁺β¹         # Add one to the input and..
            ↘            # Create a line pointing ↘, with the size calculated above
                ‖M→     # Mirror to the right

একটি খুব ঝরঝরে কমান্ডটি ‖Mযা স্বয়ংক্রিয়ভাবে মিরর /হয় \

চারকোল এনকোডিং ব্যবহার করে ।

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


আয়নার কমান্ডটি সত্যিই দুর্দান্ত! এটি বন্ধনী এবং অন্যান্য অক্ষরগুলিকেও মিরর করে? এবং সেই আচরণকে ওভাররাইড করার কোনও উপায় আছে কি?
DJMcMayhem

2
@ ডিজেএমসিএমহেম হ্যাঁ এবং হ্যাঁ :)
আদনান ২

27
Lol, আপনি কাঠকয়লা বাইরে হীরা তৈরি করেছেন!
স্টিভড্রোজ

8

05 এ বি 1 ই , 27 20 বাইট

ƒN·ð×…\ÿ/}¹·'_×)R.c

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

ব্যাখ্যা

ƒ                      # for N in range[0 ... n]
 N·ð×                  # push N*2 spaces
     …\ÿ/              # push the string "\ÿ/" with "ÿ" replaced by the spaces 
         }             # end loop
          Â            # push a reversed copy of the top of the stack 
                       # (the largest row of the bottom of the diamond)
           ¹·'_×       # push input*2 underscores
                )      # wrap the stack in a list
                 R     # reverse the list
                  .c   # join the list on newlines, padding each row to equal length

হাহা সুন্দর! আমি বিশ্বাস করি আপনি পরিবর্তন করতে পারেন D„/\„\/‡থেকে Â
আদনান

@ আদনান: হ্যাঁ, আমি বুঝতে পেরেছিলাম যে আমি নিজে যখন উন্নতি করার সময় কাজ করেছি: পি
এমিগনা

8

পাইথন 2, 101 98 95 বাইট

lambda n:'\n'.join([' '+'__'*n,'/'+'  '*n+'\\']+[' '*i+'\\'+'  '*(n-i)+'/'for i in range(n+1)])

অনলাইনে চেষ্টা করে দেখুন!

বেনামে ফাংশন যা ইতিবাচক পূর্ণসংখ্যায় নিয়ে যায় এবং একটি স্ট্রিং দেয়

পাইথন 3.6, 92 বাইট (বেন ফ্রাঙ্কেলকে ধন্যবাদ)

lambda n:f' {"__"*n}\n/{"  "*n}\\\n'+'\n'.join(' '*i+'\\'+'  '*(n-i)+'/'for i in range(n+1))

আমি এই সংস্করণটির জন্য একটি অনলাইন দোভাষী খুঁজে পেল না, তবে v3.6 এফ-স্ট্রিংয়ের কারণে এটি কিছুটা খাটো


আপনি পাইথন 3.6 তিনটি বাইট সংরক্ষণ করতে পারেন: lambda n:f' {"__"*n}\n/{" "*n}\\\n'+'\n'.join(' '*i+'\\'+' '*(n-i)+'/'for i in range(n+1))। এফ-স্ট্রিংয়ের সুবিধা নিচ্ছেন।
বেন ফ্রাঙ্কেল

আমি বেশ নিশ্চিত যে repl.it এর পাইথন 3
অ্যান্টনি ফ্যাম

@ অ্যান্টনিফ্যাম repl.it এবং ট্রাইআইটলাইন উভয় পাইথন 3.5 ব্যবহার করেন, আমি পরীক্ষা করেছি
গণিত জাঙ্কি

ওহ, অবশেষে! আমি অবাক হয়েছি পাইথনকে এতক্ষণ কী নিয়েছিল? প্রতিটি ভাষাই স্ট্রিং ইন্টারপোলেশনের দাবিদার ...
ফেলিক্স ডমব্যাক

7

পিএইচপি, 123 বাইট

echo($s=str_pad)(" ",$z=1+2*$a=$argv[1],_).$s("\n/",$z+1," ")."\\\n";for($i=0;$i<=$a;)echo$s($s("",$i)."\\",$z-$i++)."/\n";

143 বাইট প্রথম সংস্করণ

for(;$i<3+$a=$argv[1];$i++)echo 1-$i?str_pad("",$i?$i-2:1):"/",str_pad($i>1?"\\":"",$i<2?2*$a:2*($a-$i+2)+1,$i?" ":_),$i<2?$i?"\\":"":"/","\n";

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


আমি কোথায় এটি চেষ্টা করতে পারি?
অ্যান্টনি ফ্যাম

@AnthonyPham এখানে
আদনান

আপনি এটি 119 বাইট তৈরি করতে পারেন: আদর্শ one.com/RPCVZe
স্যাচললাকা

@ শ্যাচল্লাকা যদি আমি ধরে নিই যে আমি কেবল একটি লিনাক্স
সিমেট

ঠিক আছে, যতক্ষণ না আপনি নোটপ্যাড.এক্সে দিয়ে সম্পাদনা করবেন না বেশিরভাগ সম্পাদকের লিনাক্স লাইনের সমাপ্তি রয়েছে ... i.imgur.com/QZsmf4r.png উইন্ডোজ কনসোল আনন্দের সাথে a n একটি আসল নিউলাইন হিসাবে প্রদর্শন করবে। সুতরাং হ্যাঁ, আপনি আপনার উত্তরের কয়েকটি বাইট শেভ করতে পারেন।
স্যাচল্লাকা

6

ভি , 28 27 26 বাইট

1 ডি বাইট >পরিবর্তে ব্যবহার করে @ ডিজেএমসিমেহেমকে ধন্যবাদ বাঁচিয়েছেÉ

Ài__<esc>É ÙÒ r/Á\Ùr\$r/òÙlxx>

<esc> হয় 0x1b

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

Hexdump:

00000000: c069 5f5f 1bc9 20d9 d220 722f c15c d972  .i__.. .. r/.\.r
00000010: 5c24 722f f2d9 6c78 783e                 \$r/..lxx>

ব্যাখ্যা

শীর্ষ:

Ài__<esc>              " Write argument times __
É<space>               " Prepend a space to the line
Ù                      " Duplicate line below cursor, cursor also moves down
Ò<space>               " Replace every character with a space
r/                     " Change the first character in the line to a /
Á\                     " Append a \ to the end of the line

নীচে:

Ù                      " Duplicate
r\                     " Change the first character in the line to a \
$r/                    " Replace the last character with a /
ò                      " Until a breaking error occurs do:
  Ù                    "  Duplicate
  lxx                  "  Remove 2 middle characters (spaces)
  >                    "  Indent by one space (implicit ending >)
                       " Implicit ending ò

চমৎকার উত্তর! আপনি পরিবর্তন করতে পারেন É<space>থেকে >যা ম্যাক্রো শেষে পরোক্ষভাবে করার জন্য ভরা হয়>>
DJMcMayhem

@ ডিজেএমসিএমহেম চমৎকার পরামর্শ! সুতরাং >একটি ট্যাব পরিবর্তে একটি স্থান স্পর্শ করে?
ক্রিটসি লিথোস

হাঁ! এর কারণ হচ্ছে, আমি আছে set expandtabএবংset shiftwidth=1
DJMcMayhem



3

পাইথন 3, 107 105 বাইট

n,s=int(input())," "
print(s+n*"__","/"+n*2*s+"\\",*[i*s+"\\"+2*(n-i)*s+"/"for i in range(n+1)],sep="\n")

স্টিডিনের কাছ থেকে একটি ইনট নেয়


3

এমএটিএল , 34 বাইট

QE:qgOO(t~E3O(GQXy3*tPgEhv'_/\ 'w)

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

ব্যাখ্যা

QE:qg   % Create array [0 1 1 ... 1 1] of size2*(n+1)
OO(     % Turns last 1 into a 0: [0 1 1 ... 1 0]
t~      % Duplicate and negate: [1 0 0 ... 0 1]
E3O(    % Multiply by 2, turn last 2 into 3: [2 0 0 ... 0 3]
GQXy    % Push identity matrix of size n+1
3*      % Multiply by 3
tPgE    % Duplicate, flip, turn 3 into 2
h       % Concatenate the two matrices horizontally
v       % Concatenate all arrays vertically into a matrix
'_/\ '  % Push this string
w)      % Index (modular, 1-based) with the matrix into the string. Implicitly display

3

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

param($n)" "+'_'*2*$n;"/$(' '*$n*2)\";$n..0|%{' '*($n-$_)+"\$(' '*$_*2)/"}

দ্রষ্টব্য: অনলাইন উদাহরণটিতে বিক্ষোভ হিসাবে কিছুটা মোড়ানো রয়েছে। কার্যকর করার জন্য কোনও PoSH ফাংশন বা স্ক্রিপ্টে রাখুন।

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


পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম উত্তর, এবং চারপাশে অন্য একটি পাওয়ারশেলার দেখে ভাল লাগল! ' '*$i++পরিবর্তে লুপে ইনক্রিমেন্টিং ভেরিয়েবল ব্যবহার করে আপনি একটি দম্পতি বাইট সংরক্ষণ করতে পারেন ' '*($n-$_)
অ্যাডমবর্কবার্ক

3

সি, 131 বাইট

i;f(n){for(printf(" ",i=0);i++<n*2;)printf("_");for(printf("\n/%*c\n",n*2+1,92,i=0);i++<n+1;)printf("%*c%*c\n",i,92,(n-i)*2+3,47);}

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


আমি এটি কোথায় পরীক্ষা করতে পারি?
অ্যান্থনি ফ্যাম

@ অ্যান্থনিফ্যাম টিও লিঙ্কটি যুক্ত হয়েছে।
স্টেডিবক্স

শূন্যস্থানগুলি পূরণ করতে প্রিন্টফের প্রস্থ ব্যবহার করে দুর্দান্ত পন্থা। আপনি প্রিন্টএফের জন্য ম্যাক্রো তৈরি করলে আপনি আরও 9 টি বাইট সংরক্ষণ করতে পারবেন, প্রথম i = 0 টি সরিয়ে এবং দ্বিতীয় রানের সময় i- তে পুনরায় সূচনা করার পরিবর্তে একটি নতুন ভেরিয়েবল জে যুক্ত করুন:i,j;f(n){for(p(" ");i++<n*2;p("_"));for(p("\n/%*c\n",n*2+1,92);j++<n+1;p("%*c%*c\n",j,92,(n-j)*2+3,47));}
ক্লাদিউ

@ ক্লাডিউ ধন্যবাদ, তবে তারপরে এই ফাংশনটি সঠিকভাবে আউটপুট তৈরি করতে পারে যখন এটি প্রথমবারের জন্য বলা হয়েছিল, এবং আইআইআরসি যা এখানে বিধিগুলির বিপরীতে রয়েছে। ফাংশনটি যতবার বলা হোক না কেন এটি কাজ করা উচিত।
স্টেডিবক্স

@ স্টেডিবক্স ওহ আমি দেখতে পেয়েছি, এর জন্য দুঃখিত। এটি কি সমস্ত কোডগলফ প্রশ্নের জন্য প্রযোজ্য? এই নির্দিষ্ট প্রশ্নটি দেখলে মনে হয় না যে এটি একাধিক ইনপুট চায়।
ক্লদিউ

2

পাইথ, 44 বাইট

+" "*Q"__"++\/**2Qd\\jm+++*d\ \\**2-Qd\ \/hQ

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

ব্যাখ্যা

কোডটি 3 টি অংশ নিয়ে গঠিত:

+" "*Q"__"               # pretty straightforward " "+input()*"__"
++\/**2Qd\\              # d is defined as " ":  "/"+2*input()*d+"\"
jm+++*d\ \\**2-Qd\ \/hQ  # The third part is a bit more complex so I'll explain it further:

jm                   hQ  # Map some lambda function onto range(input()+1) and join the result on newlines
  +++*d\ \\**2-Qd\ \/    # Here d is the lambda argument (so I can't use it for spaces -.-) 
  +++*d\ \\**2-Qd\ \/    # In Python: d*" "+"\\"+2*(Q-d)*" "+"/"

2

পাইথন 3, 104 বাইট

n=int(input());print(" "+"__"*n+"\n/"+"  "*n+"\\")
for i in range(n+1):print(" "*i+"\\"+"  "*(n-i)+"/")

প্রোগ্রামটি STDIN থেকে পূর্ণসংখ্যা নেয় এবং রত্নটিকে STDOUT এ ফিরিয়ে দেয়।


2

বীচি , 43 বাইট

কোডের 42 বাইট, -nপতাকাটির জন্য +1 ।

Ps.'_Xa*2P"/\"JsXa*2sX_.'\.sXa-_X2.'/M,a+1

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

আলাদাভাবে প্রথম দুটি লাইন তৈরি করে, তারপরে মানচিত্রের ক্রিয়াকলাপ দিয়ে রত্নের বাকি অংশ:

Ps.'_Xa*2
      a*2  Cmdline arg, times 2
   '_X     That many underscore characters
 s.        Concatenated to a space character
P          Print (with newline)

P"/\"JsXa*2
        a*2  Cmdline arg, times 2
      sX     That many space characters
 "/\"J       Join the string "/\" with the above as the separator
P            Print (with newline)

sX_.'\.sXa-_X2.'/M,a+1
                  ,a+1  Numbers from 0 up to and including a
                 M      Map the following lambda function:
sX_                      Space, repeated (fn arg) times
   .'\                   Concatenate \
      .                  Concatenate:
       sXa-_              Space, repeated (a - (fn arg)) times
            X2            repeated twice
              .'/        Concatenate /
                         Print result list, newline separated (implicit, -n flag)

আরেকটি সমাধান

এছাড়াও 42 + 1 বাইট, -lপতাকা সহ এবার :

Ys.tAL'_.sX2+,a.0(yALRVyRXD1-_)R0'\R1'/ZDs

Tio



2

সি, 115 বাইট

#define p printf(
i;j;f(n){for(p" ");i++<n;p"__"));for(p"\n/%*c",2*n+1,92);j<=n;p"\n%*c%*c",++j,92,n*2-j*2+3,47));}

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

সি, 123 বাইট

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

#define p printf(
i;f(n){for(i=0,p" ");i++<n;p"__"));for(i=0,p"\n/%*c\n",2*n+1,92);i<=n;p"%*c%*c\n",++i,92,n*2-i*2+3,47));}

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


2

ব্যাচ, 152 বাইট

@set s=
@for /l %%i in (1,1,%1)do @call set s=  %%s%%
@echo  %s: =_%
@echo /%s%\
@set s=\%s%/
:l
@echo %s%
@if %s:~-2%==/ set s=%s:\  = \%&goto l

পরীক্ষা:

n = 1
 __
/  \
\  /
 \/

n = 2
 ____
/    \
\    /
 \  /
  \/

n = 3
 ______
/      \
\      /
 \    /
  \  /
   \/

এটি পরীক্ষা করার জন্য আমার একটি টেস্ট স্যুট লাগবে।
অ্যান্থনি ফ্যাম 21

2

সি #, 187 বাইট

আমি নিশ্চিত যে সেখানে আরও একটি কমপ্যাক্ট সমাধান রয়েছে তবে এটি আমার প্রথম প্রচেষ্টা:

var a=" "+new string('_',2*n)+"\n/"+new string(' ',2*n)+"\\\n";for(int i=n;i>0;i--){a+=new string(' ',n-i)+"\\"+new string(' ',2*i)+"/\n";}a+=new string(' ',n)+"\\/";Console.Write(a);

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


এটি পরীক্ষা করার জন্য আমার একটি টেস্ট স্যুট লাগবে।
অ্যান্থনি ফ্যাম 21

1

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

n=>(` 0
/2\\`+`
1\\4/`.repeat(k=++n)).replace(/\d/g,c=>' _'[+!+c].repeat(c&1?k-n-2:+c+--n*2))

ডেমো



1

পার্ল 5 109 94 + 1 (পতাকা -p এর জন্য) = 95 বাইট

অনলাইনে চেষ্টা করে দেখুন!

$l=$_*2;$s=" "."_"x$l."\n/"." "x$l."\\\n";$s.=" "x$_."\\"." "x($l-$_*2)."/\n"for 0..$_;print$s

এভাবে চালানো যেতে পারে:

perl -p <name of file> <<< n

Ungolfed

$l=$_*2;
$s=" "."_"x$l."\n/"." "x$l."\\\n";
$s.=" "x$_."\\"." "x($l-$_*2)."/\n"for 0..$_;
print$s

ব্যাখ্যা

#Sets $l to twice the value of the input 'n'
$l=$_*2;  

#Top 2 rows of jewel adding $l underscores then newline  
#followed by '/' and $l spaces.  The '\\\n' is an escaped '\' and a newline
$s=" "."_"x$l."\n/"." "x$l."\\\n";

#The meat of the jewel generation.  It contains a for-loop
#that iterates from 0 to $_ (the input value 'n')
#The loop uses its iterator value ($_ (which overrides the outer $_))
#to determine how many leading spaces it needs to apply.
#Then it adds a '\' with '\\' followed by $l-$_*2 number of spaces
#(the inside of the jewel).  Again, while under the umbrella of the for-loop,
#the $_ refers to the iterator value of the for-loop.
#After the inner spaces, it goes on to add in the '/' and a new line
$s.=" "x$_."\\"." "x($l-$_*2)."/\n"for 0..$_;

#Lastly, it prints the compiled Scalar value $s.  (In Perl, Strings are Scalar values or references
print$s

এটি পরীক্ষা করার জন্য আমার একটি পরীক্ষার স্যুট লাগবে কারণ সবাই যেভাবে বলেছে ঠিক তেমন বোঝে না বা চালানোর দক্ষতা নেই
অ্যান্থনি ফ্যাম ২

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