এই হীরা প্যাটার্ন আঁকুন


24

নীচের প্যাটার্নটি এই চ্যালেঞ্জের ভিত্তি তৈরি করবে।

     /\
     \/
     /\
    /  \
   /    \
/\/      \/\
\/\      /\/
   \    /
    \  /
     \/
     /\
     \/

প্রতিটি ইনপুট প্রস্থ এবং উচ্চতা দেওয়া, >=1উপরের ASCII শিল্প প্যাটার্ন আউটপুট পুনরাবৃত্তি যে বহুবার, ছোট হীরাতে যোগদান (এবং ওভারল্যাপিং)।

উদাহরণস্বরূপ, এখানে একটি ইনপুট হয় width = 2এবং height = 1:

     /\        /\
     \/        \/
     /\        /\
    /  \      /  \
   /    \    /    \
/\/      \/\/      \/\
\/\      /\/\      /\/
   \    /    \    /
    \  /      \  /
     \/        \/
     /\        /\
     \/        \/

এখানে একটি ইনপুট width = 3এবং height = 2:

     /\        /\        /\
     \/        \/        \/
     /\        /\        /\
    /  \      /  \      /  \
   /    \    /    \    /    \
/\/      \/\/      \/\/      \/\
\/\      /\/\      /\/\      /\/
   \    /    \    /    \    /
    \  /      \  /      \  /
     \/        \/        \/
     /\        /\        /\
     \/        \/        \/
     /\        /\        /\
    /  \      /  \      /  \
   /    \    /    \    /    \
/\/      \/\/      \/\/      \/\
\/\      /\/\      /\/\      /\/
   \    /    \    /    \    /
    \  /      \  /      \  /
     \/        \/        \/
     /\        /\        /\
     \/        \/        \/

বিধি এবং I / O

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

উত্তর:


10

ক্যানভাস , 26 25 24 21 18 বাইট

4/╬/╬⁰r:⤢n↷⁸{A×├m↷

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

ক্যানভাস পুনরাবৃত্তি না করে স্থির করে -৩ বাইট

ব্যাখ্যা:

4/╬                 quad-palindromize a 4-long diagonal - big inner diamond
   /╬               quad-palindromize "/" - small diamond
     ⁰r             join the two vertically, centered
       :⤢n          overlap with transpose
           ↷        and rotate the thing clockwise
            ⁸{      for each input
              A×      times 10
                ├     plus 2
                 m    mold the canvas to that width
                  ↷   and rotate clockwise, setting up for the next iteration

বাহ ও_নো ক্যানভাস খুব ছোট
ASCII কেবল

6

জাভাস্ক্রিপ্ট (ES8), 167 161 159 বাইট

এনবি: এটি প্যাটার্নটি এনকোড করছে। সংক্ষিপ্ত গাণিতিক পদ্ধতির জন্য আমার অন্য উত্তরটি দেখুন ।

হিসাবে ইনপুট লাগে (width)(height)

w=>h=>(g=h=>h?g(--h)+`
`+([4106,4016,31305,21504,17010]['0102344320'[h%=10]]+'').replace(/./g,c=>'\\/'[c^h>5]||''.padEnd(c-1)).repeat(w+1).slice(8):'')(h*10+2)

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

কিভাবে?

আমরা অঙ্কগুলি সহ প্যাটার্নের উপরের অর্ধেকটি এনকোড করি:

  • 0 অর্থ\
  • 1 অর্থ/
  • এন=2 থেকে7 অর্থএন-1 স্পেস

এটি দেয়:

0  ···/\·····  -->  [3 spaces] [/] [\] [5 spaces]             -->  4106
1  ···\/·····  -->  [3 spaces] [\] [/] [5 spaces]             -->  4016
0  ···/\·····  -->  [3 spaces] [/] [\] [5 spaces]             -->  4106
2  ··/··\····  -->  [2 spaces] [/] [2 spaces] [\] [4 spaces]  -->  31305
3  ·/····\···  -->  [1 space] [/] [4 spaces] [\] [3 spaces]   -->  21504
4  /······\/\  -->  [/] [6 spaces] [\] [/] [\]                -->  17010

নীচে অর্ধেক জন্য, আমরা সারি ব্যবহার 4,3,2,0 সঙ্গে /এবং \উল্টানো।


6

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

এটি আমার প্রাথমিক উত্তর থেকে একেবারে ভিন্ন পদ্ধতির ব্যবহার করছে, তাই আমি এটি আলাদাভাবে পোস্ট করছি।

হিসাবে ইনপুট লাগে (width)(height)

w=>h=>(g=x=>y>8?` /\\
`[a=(x+y*9)%10,d=(x+y)%10,x?(y%10>3&&2*(a==8)|d==5)|(y%10<6&&2*(a==6)|d==7):3]+g(x--?x:--y&&w):'')(w=w*10+2,y=-~h*10)

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

কিভাবে?

W

  • 10W+ +3
  • 10+ +2

এক্স10W+ +20Y10+ +109 (নিচ)।

W=3=2

(32,30)(31,30)...(0,30)(32,29)(31,29)(0,29)(32,9)(31,9)...(0,9)

এক্স=0

অন্যান্য সমস্ত কক্ষের জন্য, আমরা গণনা:

  • একটি=(এক্স-Y)গেলিক ভাষার10
  • =(এক্স+ +Y)গেলিক ভাষার10

আমরা একটি আঁকো "/"যদি:

((Yগেলিক ভাষার10)>3 এবং =5) অথবা ((Yগেলিক ভাষার10)<6 এবং =7)

 y  | y % 10 | output (w = 3, h = 1)
----+--------+----------------------------------
 20 |    0   | ...../........./........./......
 19 |    9   | ....../........./........./.....
 18 |    8   | ...../........./........./......
 17 |    7   | ..../........./........./.......
 16 |    6   | .../........./........./........
 15 |    5   | /./......././......././......./.
 14 |    4   | ./......././......././......././
 13 |    3   | ......../........./........./...
 12 |    2   | ......./........./........./....
 11 |    1   | ....../........./........./.....
 10 |    0   | ...../........./........./......
  9 |    9   | ....../........./........./.....

আমরা একটি আঁকো "\"যদি:

((Yগেলিক ভাষার10)>3 এবং একটি=8) অথবা ((Yগেলিক ভাষার10)<6 এবং একটি=6)

 y  | y % 10 | output (w = 3, h = 1)
----+--------+----------------------------------
 20 |    0   | ......\.........\.........\.....
 19 |    9   | .....\.........\.........\......
 18 |    8   | ......\.........\.........\.....
 17 |    7   | .......\.........\.........\....
 16 |    6   | ........\.........\.........\...
 15 |    5   | .\.......\.\.......\.\.......\.\
 14 |    4   | \.\.......\.\.......\.\.......\.
 13 |    3   | ...\.........\.........\........
 12 |    2   | ....\.........\.........\.......
 11 |    1   | .....\.........\.........\......
 10 |    0   | ......\.........\.........\.....
  9 |    9   | .....\.........\.........\......

অথবা এই শর্তগুলির কোনওটি যদি পূরণ না হয় তবে আমরা একটি স্থান আঁকি।


এটা সত্যিই দুর্দান্ত।
অ্যাডমবর্কবার্ক


@ আরনাউল্ড আমি জানতাম যে আপনার উত্তরটি কেবল কোডটি দেখে: ডি
ফ্লাওয়ার

6

সি ++ (জিসিসি) , 137 বাইট

#include<cstdio>
auto p(int x,int y){int n=10,t=x=++x*n;for(++y*=n;y>8;)t>7?putchar(t<9?y--,n:t%n-y%n+4&7?t%n+y%n-5&7?32:47:92),t--:t=x;}

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

ব্যাখ্যা

_______________________________
   098765432109876.... 
   9    \/    .     factor =y%10 - x10
   8    /\    .     if factor = -4 || 4. Print --> '\'  47
   7   /  \   . 
   6  /    \  .     factor =x%10+y%10;  
   5\/      \/*-.   if factor = 5 || 13 --> /  92
   4/\      /\   `.
   3  \    /       `->  * is 9,5 => \
   2   \  /      
   1    \/   
   0    /\       
   9

1
অবৈধ, একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন নয়
ASCII-

1
তবে, 3x একটি খুব দুর্দান্ত পদ্ধতি
ASCII- শুধুমাত্র

1
কোন উত্তরগুলি পুরো প্রোগ্রাম বা ফাংশন নয়? (কেবল জিজ্ঞাসা করা, এটি এটি মিস করেছে) নোট করুন যে কয়েকটি ভাষার (যেমন স্ক্রিপ্টিং ভাষাগুলি) পুরো প্রোগ্রামগুলির জন্য বয়লারপ্লেটের প্রয়োজন নেই
ASCII-


1
159 , তবে কোনও ফাংশন থেকে আউটপুট প্রদান বৈধ কিনা তা নিশ্চিত নয় (এটি সম্ভবত)
ASCII-

4

হাস্কেল , 179 বাইট

k '\\'='/'
k '/'='\\'
k x=x
f x=take(10*x+2)
w#h=map(f w.cycle).f h.drop 9.cycle$(++).reverse=<<map(map k)$["\\/\\      /","   \\    / ","    \\  /  ","     \\/   ","     /\\   "]

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


হাস্কেল , 181 বাইট

k '\\'='/'
k '/'='\\'
k x=x
f x=take(10*x+2)
w#h=map(f w.cycle).f h.drop 9.cycle$(++).reverse=<<map(map k)$map t[49200,36058,31630,30010,29038]
t 0=""
t n="\\ /"!!mod n 3:t(div n 3)

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


1
reverse.map(map k)<>idওভার ব্যবহার করা (++).reverse=<<map(map k)উভয় সমাধানে আপনাকে 3 বাইট সাশ্রয় করে ।
22

1
আহ, এবং 2nd এক map tহতে পারে t<$>এবং take$10*x+2খুব অন্য বাইট সংরক্ষণ করে এবং পরিশেষে আপনি ব্যবহার করতে পারেন cycle"\\ /"!!nউপর "\\ /"!!mod n 3- এখন দ্বিতীয় খাটো :) এটি অনলাইন ব্যবহার করে দেখুন!
ბიმო

3

কাঠকয়লা , 24 22 20 বাইট

\/↘²‖M↘LF⊖NCχ⁰F⊖NC⁰χ

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

´\/↘²

মূল প্যাটার্নের এক অষ্টম আঁকুন।

‖M↘L

আসল প্যাটার্নটি সম্পূর্ণ করতে এটি তিনবার নকল করুন।

F⊖NCχ⁰

অনুভূমিকভাবে প্রয়োজনীয় সংখ্যাটি অনুলিপি করুন।

F⊖NC⁰χ

প্রয়োজনীয় সংখ্যাটি উল্লম্বভাবে অনুলিপি করুন।


3

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

param($w,$h)0..9*$h+0,1|%{$y=$_
-join(0..9*$w+0,1|%{('3  /\33  \/33  /\33 /  \3  /3 \ /\/33\\/\33/3\3 /3  \  /33 \/3'-replace3,'   ')[$y*10+$_]})}

ব্যাখ্যা

প্যাটার্নটি 10x10 অক্ষরের অ্যারে:

     /\   
     \/   
     /\   
    /  \  
   /    \ 
/\/      \
\/\      /
   \    / 
    \  /  
     \/   

এই পান্ডুলিপি:

  • প্যাটার্ন পুনরাবৃত্তি;
  • প্রতিটি লাইনের শেষে কলামগুলি [0,1] যুক্ত করে;
  • আউটপুট শেষে লাইনগুলি [0,1] সংযোজন করে।

গল্ফ জন্য দুটি জিনিস:

  1. প্যাটার্ন অ্যারে দৈর্ঘ্য 100 বাইট সঙ্গে স্ট্রিং ম্যাপ করা;
  2. স্ট্রিং সহজ দ্বারা হ্রাস replace


1

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

ম্যাজি থেকে নেওয়া প্যাটার্ন; 1-2-2- এ অনুবাদ, বেস 26 -> প্রোগ্রামে ডিকোডে রূপান্তরিত

while($y<$argv[2]*10+2)echo str_pad("",$argv[1]*10+2,strtr(base_convert([jng1,jnnb,jng1,jofn,k333,"1h4p5",23814,k94d,k02h,jnnb][$y++%10],26,4),312,"\ /")),"
";

পিএইচপি 5.5 বা তার পরে প্রয়োজন। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

গণনা সংক্ষিপ্ত হতে পারে (যেমন এটি আরনাউল্ডের জন্য ছিল)। আমি এটি সন্ধান করতে পারে।


1

কোটলিন , 196 135 বাইট

এজেডটেকোর সি ++ অ্যালগরিদম ব্যবহারের জন্য কেবলমাত্র ASCII- এর পরামর্শের জন্য 61 বাইট সংরক্ষণ করা হয়েছে।

{h,w->var r=""
for(l in 9..h*10+10){for(c in 9..w*10+10){r+=when{(l%10+c%10)%8==5->'/'
(l%10-c%10+8)%8==4->'\\'
else->' '}}
r+='\n'}
r}

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


1
136 , নতুন সি ++ উত্তর থেকে চুরি হচ্ছে
ASCII- শুধুমাত্র

1

পাইথন 3 , 194 192 187 127 বাইট

@ এএসসিআইআই-এর সমাধান:

lambda w,h,n=10:"\n".join("".join([" /","\\"][(j%n-i%n)%8==4][(j%n+i%n)%8==5]for i in range(-1,w*n+1))for j in range(-1,h*n+1))

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


মূল সমাধান

n="\n"
def f(w,h):a=[r"     /\   "*w,r"     \/   "*w,r"    \  /  "*w,r"   \    / "*w,r"\/\      /"*w+r"\/"];return a[0]+n+n.join(([i.translate({47:92,92:47})for i in a]+a[::-1])*h)+n+a[1]

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

-২ বাইট @ ব্ল্যাক আউল কাইকে ধন্যবাদ জানায় যে শীর্ষগুলি এবং বোতলগুলি পৃথক ভেরিয়েবলের পরিবর্তে উত্পন্ন অ্যারে থেকে অ্যাক্সেস করা যায়।

-5 আরও বাইটস ব্ল্যাক আউল কাইকে হীরা সঞ্চয় করার জন্য আরও সৃজনশীল পদ্ধতি ব্যবহার করে ধন্যবাদ জানায়

প্রতিটি হীরকের এই অংশটি উত্পন্ন করে:

     /\
     \/
    \  /
   \    /
\/\      /\/

/\এটি সম্পূর্ণ করার জন্য প্রতিটি সারির শেষে একটি যুক্ত করা হয়েছে। তারপরে, প্রতিটি হীরার শীর্ষটি তৈরি করতে /s এবং \sগুলি অদলবদল করা হয়, এবং রেখার ক্রমটি বিপরীতভাবে নীচের অর্ধেকটি তৈরি হয়। অবশেষে, এটি চিত্রের সম্পূর্ণরূপে s /\এর একেবারে শীর্ষ সারিতে এবং এর নীচের সারিতে যুক্ত হয় \/


বি এবং সি ভেরিয়েবল ব্যবহার না করে 192 বাইট
ব্ল্যাক আউল কাই

দুটি +=/ *=অ্যাসাইনমেন্ট সরিয়ে এবং সম্পূর্ণ হীরা উল্টে উল্টিয়ে 187 বাইট শেষ স্ট্রিংটি সঞ্চয় করা সহজ করে তোলে
ব্ল্যাক আউল কাই


147 , সি ++ সমাধান ব্যবহার করে
ASCII-

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