इस हीरे के पैटर्न को ड्रा करें


24

नीचे दिया गया पैटर्न इस चुनौती का आधार बनेगा।

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

एक इनपुट चौड़ाई और ऊंचाई को देखते हुए, प्रत्येक >=1, उपरोक्त ASCII कला पैटर्न को दोहराया गया है कि कई बार, छोटे हीरे में शामिल होने (और अतिव्यापी)।

उदाहरण के लिए, यहाँ एक इनपुट है width = 2और height = 1:

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

यहाँ एक इनपुट है width = 3और height = 2:

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

नियम और आई / ओ

  • इनपुट और आउटपुट किसी भी सुविधाजनक विधि द्वारा दिया जा सकता है ।
  • आप इसे STDOUT में प्रिंट कर सकते हैं या इसे फ़ंक्शन परिणाम के रूप में वापस कर सकते हैं।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं।
  • विलुप्त हो रही व्हाट्सएप की कोई भी राशि स्वीकार्य है, इसलिए जब तक पात्र उचित रूप से पंक्तिबद्ध न हो जाएं।
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

जवाबों:


10

कैनवस , 26 25 24 21 18 बाइट्स

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

यहाँ यह कोशिश करो!

कैनवास को न दोहराते हुए -3 बाइट्स

स्पष्टीकरण:

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

वाह O_o कैनवास बहुत छोटा है
केवल

6

जावास्क्रिप्ट (ईएस 8), 167 161 159 बाइट्स

NB: यह पैटर्न एन्कोडिंग है। एक छोटे गणितीय दृष्टिकोण के लिए मेरा अन्य उत्तर देखें ।

के रूप में इनपुट लेता है (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 मतलब है/
  • n=2 से मतलब रिक्त स्थान है7n1

यह देता है:

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

जावास्क्रिप्ट (ईएस 6), 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)

इसे ऑनलाइन आज़माएं!

कैसे?

चौड़ाई और ऊँचाई को देखते हुए , हम एक ग्रिड पर वर्ण द्वारा आउटपुट वर्ण बनाते हैं जो है:wh

  • 10w+3 वर्ण चौड़ा
  • 10h+2 वर्ण ऊँचा

साथ से जा रहा करने के लिए और (बाएं से दाएं) से जा रहा करने के लिए (ऊपर से नीचे)।x10w+20y10h+109

उदाहरण के लिए और :w=3h=2

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

x=0

अन्य सभी कोशिकाओं के लिए, हम गणना करते हैं:

  • a=(xy)mod10
  • d=(x+y)mod10 (विकर्णों पर स्थिर)

हम एक आकर्षित करते हैं "/":

((ymod10)>3 and d=5) or ((ymod10)<6 and d=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   | ....../........./........./.....

हम एक आकर्षित करते हैं "\":

((ymod10)>3 and a=8) or ((ymod10)<6 and a=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   | .....\.........\.........\......

या अगर हम इनमें से कोई भी शर्त पूरी नहीं करते हैं, तो हम एक स्थान बनाते हैं।


यह वास्ताव में अच्छा है।
AdmBorkBork


@Arnauld मुझे पता था कि यह आपका जवाब सिर्फ कोड को देखकर था: D
दोष

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
लेकिन, बहुत अच्छा तरीका है
एएससीआईआई-केवल

1
कौन से उत्तर वास्तव में पूर्ण कार्यक्रम या कार्य नहीं हैं? (बस पूछ रहा है, यह याद किया जा सकता है) ध्यान दें कि कुछ भाषाओं (जैसे स्क्रिप्टिंग भाषाओं) को पूर्ण कार्यक्रमों के लिए बॉयलरप्लेट की आवश्यकता नहीं है
ASCII- केवल


1
159 , लेकिन निश्चित नहीं है कि किसी फ़ंक्शन से आउटपुट करना वैध है (यह शायद है)
ASCII-only

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 बाइट्स बचाता है।
ბიმო

1
आह, और 2 में 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

PHP, 159 बाइट्स

mazzy से लिया गया पैटर्न; 1-2-3 से अनुवादित, बेस 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,"\ /")),"
";

PHP 5.5 या बाद के संस्करण की आवश्यकता है। इसे ऑनलाइन चलाएं -nrया इसके लिए प्रयास करें

गणना कम हो सकती है (जैसा कि यह अरनॉल्ड के लिए था)। मैं उस पर गौर कर सकता हूं।


1

कोटलिन , 196 135 बाइट्स

AZTECCO के C ++ एल्गोरिथ्म का उपयोग करने के लिए ASCII-only के सुझाव के लिए 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 , नए C ++ उत्तर से चोरी
ASCII- केवल

1

पायथन 3 , 194 192 187 127 बाइट्स

@ ASCII- केवल समाधान:

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]

इसे ऑनलाइन आज़माएं!

-2 बाइट्स @ थैंक्स उल्लू काई के लिए धन्यवाद कि टॉप और बॉटम्स को अलग-अलग वेरिएबल्स की बजाय जेनरेट की गई ऐरे से एक्सेस किया जा सकता है।

-5 और बाइट्स हीरे को स्टोर करने के लिए एक और अधिक रचनात्मक तरीके का उपयोग करके @ उल्लू काई धन्यवाद

प्रत्येक हीरे के इस हिस्से को उत्पन्न करता है:

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

/\इसे पूरा करने के लिए प्रत्येक पंक्ति के अंत में एक जोड़ा गया। फिर, प्रत्येक हीरे के शीर्ष को बनाने के लिए /एस और \एस की अदला-बदली की जाती है, और रेखाओं के क्रम को नीचे आधा बनाने के लिए उलटा किया जाता है। अंत में, यह /\s की शीर्ष पंक्ति में जोड़ता है और \/छवि को पूरा करने के लिए बहुत नीचे पंक्ति है ।


192 बाइट्स का उपयोग नहीं करके चर बी और सी
ब्लैक उल्लू काई

187 बाइट्स दो +=/ *=असाइनमेंट्स को हटाकर और पूरे हीरे को उल्टा-पुल्टा करके, अंतिम स्ट्रिंग को स्टोर करना आसान बनाता है
ब्लैक उल्लू काई


147 , सी + + समाधान का उपयोग करता है
एएससीआईआई-केवल

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.