फेरबदल और डील!


14

यह शुक्रवार है और मैं थका हुआ हूं, तो चलो जल्दी करो! कोई इनपुट न लें, हालाँकि आपको सभी तेरह अलग-अलग नंबरों वाले कार्ड को एक मानक डेक कार्ड में आउटपुट करना चाहिए। आपको ऐस (सूट अज्ञेयवादी) के माध्यम से 2 आउटपुट चाहिए।

प्रत्येक कार्ड में एक शीर्ष होता है जिसे एक स्थान और दस _और दूसरे स्थान के साथ दर्शाया जाता है

शीर्ष से दूसरी पंक्ति को ए /और दस रिक्त स्थान और ए के साथ चिह्नित किया जाता है\

तीसरी पंक्ति समान है क्योंकि सभी मध्य-ईश पंक्तियाँ वर्ण (ओं) को दर्शाती हैं, जो कार्ड वैल्यू को दर्शाते हुए दाएं (यदि शीर्ष पर) को दो रिक्त स्थान या बाईं ओर (यदि नीचे की ओर) दो जगह दिखाई देती हैं।

प्रत्येक मध्य-ईश पंक्ति एक सरल |और दस रिक्त स्थान है और एक अधिक है|

अंत में अंतिम पंक्ति एक \और दस _और अंत में एक है/

यदि मूल्य बहु-अंक है तो कार्ड की ऊंचाई से समग्र चौड़ाई नहीं बदलनी चाहिए। (यानी 10 कार्ड के पक्षों को व्यापक नहीं बनाएगा)

राजा उदाहरण:

 __________ 
/          \
| K        |
|          |
|          |
|          |
|          |
|          |
|        K |
\__________/

9 उदाहरण

 __________ 
/          \
| 9        |
|          |
|          |
|          |
|          |
|          |
|        9 |
\__________/

10 उदाहरण

 __________ 
/          \
| 10       |
|          |
|          |
|          |
|          |
|          |
|       10 |
\__________/

कम से कम सबसे बड़ी (इक्के उच्च हैं!) के क्रम में उन्हें आउटपुट दें।

यह कोड-गोल्फ है इसलिए सबसे छोटा कोड जीतता है।

मज़े करो और मज़े करो सप्ताहांत!


2
क्या हमारे पास 10 उदाहरण हैं, यह देखने के लिए कि निचले 10 दाहिने किनारे से चिपका हुआ है या नहीं?
सनी पुण्ठ

@SunnyPun बेशक क्यों
जैक्सनसेक

1
क्या कार्ड को लंबवत, क्षैतिज रूप से व्यवस्थित किया जाना चाहिए, या इससे कोई फर्क नहीं पड़ता है?
DLosc

बाएं से दाएं या ऊपर से नीचे के खिलाड़ियों की पसंद।
जैक्सनसेक

जवाबों:


10

PowerShell v2 +, 120 116 114 108 बाइट्स

2..10+[char[]]'JQKA'|%{$z=' '*(8-!($_-10));$x='_'*10;$y=' '*10;" $x 
/$y\
| $_$z|";,"|$y|"*5;"|$z$_ |
\$x/"}

एक सीमा का निर्माण 2..10करता है और सरणी के साथ सरणी को charव्यवस्थित करता है JQKA। एक पाश में खिलाती है |%{...}। प्रत्येक यात्रा, हम सेट $zएक उपयुक्त स्थानों की संख्या (हम कार्ड पर हों के आधार पर करने के लिए बराबर 10है या नहीं), सेट $xकरने के लिए 10अंडरस्कोर सेट, और $yकरने के लिए 10रिक्त स्थान।

फिर, हम अपना प्लेसमेंट शुरू करते हैं। हम Write-Outputपाइपलाइन तत्वों के बीच एक नई रेखा सम्मिलित करने के लिए डिफ़ॉल्ट का लाभ उठाने जा रहे हैं, इसलिए हमें पाइपलाइन पर सामान प्राप्त करने की आवश्यकता है। ध्यान दें कि अधिकांश स्थानों पर, हम एक जोड़े बाइट को बचाने के लिए अपने तारों को बंद करने और फिर से खोलने के बजाय एक शाब्दिक नई रेखा का उपयोग कर रहे हैं।

पहला सिर्फ $xदो स्थानों के साथ है, फिर $yदो स्लैश के साथ, फिर | $_$z|"पाइप, एक स्थान, उपयुक्त स्थान और दूसरा पाइप। यह मूल्य रेखा के ऊपर और शामिल कार्डों का शीर्ष बनाता है।

हमें यहाँ अर्धविराम देना है, क्योंकि अगला एक सरणी का उपयोग करता है। ,"|$y|"*5एक स्ट्रिंग-सरणी का निर्माण करता है, कॉमा-ऑपरेटर के साथ, रिक्त स्थान के साथ पाइप का - आउटपुट पर, इस सरणी के प्रत्येक तत्व को मुफ्त में एक नई लाइन मिलती है।

फिर, "|$z$_ |नीचे मूल्य अंकन के लिए, और अंत $xमें कार्ड के नीचे के लिए स्लैश के साथ।

आउटपुट स्निपेट

PS C:\Tools\Scripts\golfing> 2..10+[char[]]'JQKA'|%{$z=' '*(8,7)[$_-eq10];" $(($x='_'*10)) ";"/$(($y=' '*10))\";"| $_$z|";,"|$y|"*5;"|$z$_ |";"\$x/"}
 __________ 
/          \
| 2        |
|          |
|          |
|          |
|          |
|          |
|        2 |
\__________/
 __________ 
/          \
| 3        |
|          |
|          |
|          |
|          |
|          |
|        3 |
\__________/
 __________ 
/          \
| 4        |
...

1
यह एक अजीब दिन है जब PowerShell जीत रहा है! अच्छा काम :)
केड

@ साहेब धन्यवाद! सब -१०० इतना करीब है, लेकिन यकीन नहीं होता कि मैं इसे बना सकता हूं।
AdmBorkBork

[मुट्ठी हिलाता है] आप मुझे 3 बाइट्स से मार रहे हैं। तीन BYTES !!
गैब्रियल बेनामी

6

पायथन, 161 160 156 149 बाइट्स

एक बाइट शेबंग द्वारा बचाई गई

यह कुछ काम का उपयोग कर सकता है लेकिन यहाँ यह है:

o=" ";v="_"*10
for x in map(str,range(2,11)+list("JKQA")):print o+v+"\n/",o*9+"\\\n|",x.ljust(8),"|"+("\n|"+o*10+"|")*5+"\n|",o*6+x.ljust(3)+"|\n\\"+v+"/"

व्याख्या

हम क्रम में सभी रैंकों की एक सूची बनाते हैं map(str,range(2,11)। फिर हम प्रत्येक रैंक के माध्यम से लूप करते हैं और एक कार्ड बनाते हैं।

print o+"_"*10+"\n/",o*9+"\\\n|",x.ljust(8),"|"+("\n|"+o*10+"|")*5+"\n|",o*6+x.ljust(3)+"|\n\\"+"_"*10+"/"

हम कार्ड का शीर्ष बनाते हैं:

o+v+"\n"

फिर बाईं ओर रैंक जाता है:

"/",o*9+"\\\n|",x.ljust(8),"|"

हम उपयोग करते हैं .ljustक्योंकि 10दो लंबे हैं और अन्य सभी एक विस्तृत हैं।

फिर हम बीच में 5 पंक्तियों को प्रिंट करते हैं:

"|"+("\n|"+o*10+"|")*5+"\n|"

और नीचे रैंक:

"\n|",o*6+x.ljust(3)+"|\n"

अंत में हम कार्ड के नीचे प्रिंट करते हैं:

"\\"+v+"/"

2
पवित्र मोली जो जल्दी था
जैक्सनसेक

आपकी बाइट की गिनती बंद लगती है (मैं 155 की गिनती करता हूं)। हालांकि, यदि आप एक चर बनाते हैं v="_"*10और उन उदाहरणों को प्रतिस्थापित करते हैं , तो आप एक और बाइट बचा लेंगे!
केड

5

जावास्क्रिप्ट (ईएस 6), 151 बाइट्स

f=
_=>`2345678910JQKA`.replace(/.0?/g,s=>` __________
/          \\
| `+(s+=`   `+s).slice(0,4)+`     |
|     `.repeat(6)+s.slice(-4)+` |
\\__________/
`)
;
document.write('<pre>'+f());


@Emigna धन्यवाद, मैं इसे अपने अन्य उत्तर में भी भूल गया।
नील

4

पर्ल, 128 117 111 बाइट्स

map{printf$"."_"x10 ."
/".$"x10 .'\
| %-9s|
'.("|".$"x10 ."|
")x5 ."|%9s |
\\"."_"x10 ."/
",$_,$_}2..10,J,Q,K,A

6 शाब्दिक newlines 1 बाइट बचाते हैं। यह कमांड लाइन से सीधे नहीं चलाया जा सकता क्योंकि लाइनों 2 और 4 में एकल कोट्स में 1 बाइट को बचाने के लिए बैकस्लैश से बचने के लिए नहीं है।

संपादित करें: मैंने ऐस को शुरुआत में रखा था, लेकिन यह अंत में माना जाता है। यह बाइट काउंट को नहीं बदलता है।

2 संपादित करें: -11 बाइट्स: कुछ अनावश्यक बयानों से छुटकारा पा लिया और एक और शाब्दिक नई रेखा जोड़ी। सब कुछ अब एक ही प्रिंट के माध्यम से आउटपुट है।

एडिट 3: -5 बाइट्स @ थॉन हास्पेल का धन्यवाद। लेकिन किसी कारण से, मुझे काम पर तुलना करने पर घर पर 112 के बजाय 111 बाइट्स मिल रहे हैं, इसलिए मैं बाइट की गिनती के साथ जा रहा हूं मेरा घर का कंप्यूटर मुझे दे रहा है।


आपको ऐसे शाब्दिक उद्धरण नहीं देने होंगे जो एक मान्य प्रतीक नाम हैं, इसलिए _ x10इसके बजाय "_"x10। इसके अलावा qwलगभग कभी उपयोगी नहीं है। गोल्फ में। J,Q,K,Aइसके बजाय ()
अयोग्य का

जब मैं अंडरस्कोर के आसपास के उद्धरण हटाता हूं तो मुझे एक दुभाषिया त्रुटि मिलती है: Can't locate object method "_" via package "x10" (perhaps you forgot to load "x10"?) at shuffle.pl line 1. निश्चित नहीं कि क्यों, लेकिन मैं दुभाषिया से नहीं लड़ूंगा :(
गेब्रियल बेनामी

1
थोड़ा और गोल्फ ( \nअसली न्यूलाइन द्वारा प्रतिस्थापित ):printf' %2$s\n/%3$10s\\n| %-9s|\n'.'|%3$10s|\n'x5 .'|%1$9s |\n\%s/\n',$_,"_"x10for 2..10,J,Q,K,A
टन हास्पेल

4

PHP, 233 बाइट्स

foreach([2,3,4,5,6,7,8,9,10,J,Q,K,A]as$k){for($c="",$i=0;$i<10;$i++)$c.=str_pad($i?$i>1&$i<9?"|":($i<2?"/":"\\"):" ",11,$i%9?" ":_).($i?$i>1&$i<9?"|":($i<2?"\\":"/"):" ")."\n";$c[113]=$c[28]=$k;$k>9&&$c[29]=$c[113]=0&$c[112]=1;echo$c;}

1
कुछ बाइट्स को बचाने के लिए आपके अंतिम ifको बदला जा सकता है $k>9&&$c[29]=$c[113]=0&$c[112]=1;। इसके अलावा, नोटपैड ++ कह रहा है कि आपका कोड वास्तव में 241 बाइट्स लंबा है। मुझे पता है कि उन बाइट्स में से 1 न्यूलाइन से है। लेकिन दूसरा मेरे लिए एक मिस्टी है।
इस्माईल मिगुएल

3

///, 182 180 बाइट्स

/+/_____//*/# |
&//&/@@@@@|# //%/ |
\\\\++\\\/
//$/ ++
\\\/!\\\\
| //#/       //!/#   //@/|!|
/$2*2%$3*3%$4*4%$5*5%$6*6%$7*7%$8*8%$9*9%$10#|
@@@@@|#10 |
\\++\/
$J*J%$K*K%$Q*Q%$A*A%

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

M-chrzan को -2 बाइट्स धन्यवाद


आप +केवल 5 _एस के विकल्प के रूप में दो बाइट्स बचा सकते हैं , और फिर दो +एस होने से जहां आपके पास एकल +एस है।
एम-क्रेज़न

3

पायथन 3.5, 110 बाइट्स

u='_'*10
for c in[*range(2,11),*'JQKA']:print(' %s\n/%%11s\n'%u%'\\'+'| %-6s%2s |\n'*7%(c,*' '*12,c)+'\%s/'%u)

प्रिंटों

  • शीर्ष दो लाइनें ' %s\n/%%11s\n'%u%'\\'कहाँ uहै'_'*10
  • मध्य 7 लाइनें '| %-2s %2s |\n', जिनमें से प्रत्येक में दो स्ट्रिंग स्वरूपण स्लॉट हैं। पहला और अंतिम कार्ड मूल्य से भरा है, और बाकी बिना किसी प्रभाव के रिक्त स्थान के साथ भरा गया है
  • नीचे की रेखा '% s /'% u

पायथन 3.5 के नए अनपैकिंग फीचर दो स्थानों पर उपयोग किए जाते हैं। लेबल की सूची [*range(2,11),*'JQKA']एक सूची में संख्याओं और अक्षरों को अनपैक करती है। और, टपल (c,*' '*12,c)केंद्र में बारह स्थानों की प्रविष्टियाँ खोल देता है।


2

स्काला, 161 बाइट्स

val a=" "*7
val u="_"*10
((2 to 10)++"JQKA")map(_+"")map{x=>val p=" "*(2-x.size)
s" $u \n/$a   \\\n| $x$p$a|\n" + s"|$a   |\n" * 5 + s"|$a$p$x |\n\\$u/\n"}

2

बैच, 236 बाइट्स

@echo off
for %%v in (2 3 4 5 6 7 8 9 10 J Q K A)do call:v %%v
exit/b
:v
set s=%1       %1
echo  __________
echo /          \
echo ^| %s:~0,8% ^|
for /l %%l in (1,1,5)do echo ^|          ^|
echo ^| %s:~-8% ^|
echo \__________/

मैंने इसे तीन अलग-अलग तरीकों से आज़माया लेकिन हर बार एक ही बाइट के साथ समाप्त हुआ ...


2

05AB1E , 71 70 68 66 65 64 बाइट्स

CP-1252 एन्कोडिंग का उपयोग करता है ।

TL¦"JQKA"S«vð'_TשððT×…/ÿ\9yg-ð×y"| ÿÿ|"ÂðT×…|ÿ|5×sT‡®…\ÿ/JTä»,

थोड़ा संशोधित लिंक के रूप में TIO एटीएम पर काम नहीं करता है ÿ

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

व्याख्या

TL¦"JQKA"S« सूची को आगे बढ़ाता है [2,3,4,5,6,7,8,9,10,J,Q,K,A]

हम तब के साथ प्रत्येक कार्ड मूल्य पर लूप v

ð'_Tשðकंस्ट्रक्शन " __________ "
ðT×…/ÿ\कंस्ट्रक्शन "/ \"
9yg-ð×y"| ÿÿ|"Âकार्ड वैल्यू के साथ 2 पंक्तियों का निर्माण करता है (दूसरी पंक्ति पहली उलट है)
ðT×…|ÿ|5×फॉर्म की 5 पंक्तियों का निर्माण करता है"| |"

तब हम

s     # move the 2nd card value row after the 5 "middle rows"
 T‡  # and replace 1 with 0 and vice versa

®…\ÿ/ नीचे की पंक्ति बनाता है

J       # join everything into 1 string
 Tä     # split into 10 parts
   »,   # merge by newline and print with newline

2

वी , 87 बाइट्स

i ±_ 
/± \Ypr|$.Y6P3|r2Lhhr2o\±_/
H8ñy}GP2j6j? _ñ2j$X6jxG"04p/9
rJn.nrQn,nrKn.nrAn.

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

चूँकि इसमें कुछ unprintables शामिल हैं, यहाँ एक हेक्सडम्प है:

0000000: 6920 b15f 200a 2fb1 205c 1b59 7072 7c24  i ._ ./. \.Ypr|$
0000010: 2e59 3650 337c 7232 4c68 6872 326f 5cb1  .Y6P3|r2Lhhr2o\.
0000020: 5f2f 0a1b 4838 f179 7d47 5032 6a01 366a  _/..H8.y}GP2j.6j
0000030: 013f 205f f132 6a24 5836 6a78 4722 3034  .? _.2j$X6jxG"04
0000040: 702f 390a 724a 6e2e 6e72 516e 2c6e 724b  p/9.rJn.nrQn,nrK
0000050: 6e2e 6e72 416e 2e                        n.nrAn.

2

PHP, 135 131 158 134 बाइट्स

उम्मीद है, मैं इसे थोड़ा और छोटा करने का एक तरीका खोज सकता हूं।

foreach([2,3,4,5,6,7,8,9,10,J,Q,K,A]as$C)printf(" %'_9s
/%12s| %-8s|%s
|%8s |
\\%'_9s/
",_,'\
',$C,str_repeat('
|         |',5),$C,_);

यह printfकई पात्रों को दोहराने और सब कुछ अच्छी तरह से प्रारूपित करने का लाभ उठाता है ।


पुराना संस्करण:

सुंदरता का एक टुकड़ा नहीं, लेकिन काम करता है!

$L=__________;$S='        ';foreach([2,3,4,5,6,7,8,9,10,J,Q,K,A]as$C)echo" $L
/  $S\
| $C".($P=substr($S,$C>9))."|
",str_repeat("|  $S|
",5),"|$P$C |
\\$L/
";

एक बग का पता लगाने के लिए और मुझे अपने कोड के हिस्से का उपयोग करने देने के लिए Jörg Hülsermann का धन्यवाद , जिसने इसे 4 बाइट्स से कम कर दिया ! और एक घातक बग खोजने के लिए।


10 अजीब लगता है। मेरा मानना ​​है कि आपको अतिरिक्त काम करना चाहिए
Jörg Hülsermann

@ JörgHülsermann तुम सही हो। 10Bugged है। अगर मैं आपकी सरणी का उपयोग करूँ तो क्या यह ठीक है? [2,3,4,5,6,7,8,9,10,J,Q,K,A]उस विभाजन के बजाय का उपयोग करके मुझे 4 बाइट्स बचाता है। यदि आप इसे अधिकृत नहीं करते हैं, तो मैं समझूंगा।
इस्माईल मिगुएल

ले लो। आपने PHP में बेहतर तरीका बनाया है और मैं आपकी सभी जरूरतों का समर्थन करता हूं।
जोर्ग हल्सरमैन

@ JörgHülsermann धन्यवाद। मैं आपके उत्तर को देख रहा हूं और मुझे कुछ स्थान मिल रहे हैं जहां कुछ बाइट्स को शेव करना है।
इस्माइल मिगुएल

इसके बजाय $C$S $C".($P=substr($S,$C>9))."रिक्त स्थान मूल्य 10 के साथ और के बजाय संभाल करने $S$Cकी जरूरत है तो$P$C
Jörg Hülsermann

1

रूबी, 115 बाइट्स

का बहुत सीधा उपयोग printf

([*(?2.."10")]+%w{J Q K A}).map{|e|printf" #{u=?_*10} 
/%11s
| %-9s|
#{(?|+' '*10+"|
")*5}|%9s |
\\#{u}/
",?\\,e,e}

1

रैकेट 327 बाइट्स

(let*((ms make-string)(p #\space)(e? equal?)(sa string-append)(f(λ(s)(display(sa" "(ms 10 #\_)" \n""/"(ms 10 p)"\\\n""| "s
(ms(if(e? s"10")7 8)p)"|\n"(apply sa(for/list((i 6))"|          |\n"))"| "(ms(if(e? s"10")6 7)p)s" |\n"
"\\"(ms 10 #\_)"/\n")))))(for((i(range 2 11)))(f(number->string i)))(for((i'("J""Q""K""A")))(f i)))

Ungolfed:

(define (main)
(let* ((ms make-string)
       (e? equal?)
       (sa string-append)
      (f(lambda(s)
  (display
   (sa
    " "
    (ms 10 #\_)
    " \n"
    "/"
    (ms 10 #\space)
    "\\\n"
    "| " s   (ms (if(e? s "10") 7 8) #\space)   "|\n"
    (apply sa (for/list ((i 6)) "|          |\n"))
    "| "  (ms (if(e? s "10") 6 7) #\space)  s " |\n"
    "\\" (ms 10 #\_) "/\n")
   ))))
(for ((i(range 2 11)))
  (f (number->string i)))
(for ((i '("J" "Q" "K" "A")))
  (f i))
))

परिक्षण:

(main)

आउटपुट:

 __________ 
/          \
| 2        |
|          |
|          |
|          |
|          |
|          |
|          |
|        2 |
\__________/
 __________ 
/          \
| 3        |
|          |
|          |
|          |
|          |
|          |
|          |
|        3 |
\__________/
 __________ 
/          \
| 4        |
|          |
|          |
|          |
|          |
|          |
|          |
|        4 |
\__________/
 __________ 
/          \
| 5        |
|          |
|          |
|          |
|          |
|          |
|          |
|        5 |
\__________/
 __________ 
/          \
| 6        |
|          |
|          |
|          |
|          |
|          |
|          |
|        6 |
\__________/
 __________ 
/          \
| 7        |
|          |
|          |
|          |
|          |
|          |
|          |
|        7 |
\__________/
 __________ 
/          \
| 8        |
|          |
|          |
|          |
|          |
|          |
|          |
|        8 |
\__________/
 __________ 
/          \
| 9        |
|          |
|          |
|          |
|          |
|          |
|          |
|        9 |
\__________/
 __________ 
/          \
| 10       |
|          |
|          |
|          |
|          |
|          |
|          |
|       10 |
\__________/
 __________ 
/          \
| J        |
|          |
|          |
|          |
|          |
|          |
|          |
|        J |
\__________/
 __________ 
/          \
| Q        |
|          |
|          |
|          |
|          |
|          |
|          |
|        Q |
\__________/
 __________ 
/          \
| K        |
|          |
|          |
|          |
|          |
|          |
|          |
|        K |
\__________/
 __________ 
/          \
| A        |
|          |
|          |
|          |
|          |
|          |
|          |
|        A |
\__________/

1

जावा 7, 287 बाइट्स

String c(){String r="",l="__________",c=(" "+l+" \n/s\\\n| z       |\nxxxxxx|       y|\n\\"+l+"/\n").replace("x","|s|\n").replace("s","          ");for(int i=0;i++<13;r+=c.replace("z",i==10?"10":(l=i<2?"A ":i>12?"K ":i>11?"Q ":i>10?"J ":i+" ")).replace("y",i==10?"10 ":" "+l));return r;}

ठीक है, यह बदसूरत है और बहुत कुशल नहीं है, लेकिन यह काम करता है .. कि 10शीर्ष पर पहले और बाद में निचले स्थान पर वास्तव में सभी के साथ शिकंजा के साथ एक विशेष मामले के रूप में।

Ungolfed और परीक्षण कोड:

इसे यहाँ आज़माएँ।

class M{
  static String c(){
    String r = "",
           l = "__________",
           c = (" " + l + " \n/s\\\n| z       |\nxxxxxx|       y|\n\\" + l + "/\n")
                 .replace("x", "|s|\n")
                 .replace("s", "          ");
    for(int i = 0; i++ < 13; r += c
        .replace("z", i == 10
                       ? "10"
                       : (l = i < 2
                               ? "A "
                               : i > 12
                                  ? "K "
                                  : i > 11
                                     ? "Q "
                                     : i > 10
                                        ? "J "
                                        : i+" "))
        .replace("y", i == 10
                       ? "10 "
                       : " "+l));
    return r;
  }

  public static void main(String[] a){
    System.out.println(c());
  }
}

आउटपुट:

 __________ 
/          \
| A        |
|          |
|          |
|          |
|          |
|          |
|          |
|        A |
\__________/
 __________ 
/          \
| 2        |
|          |
|          |
|          |
|          |
|          |
|          |
|        2 |
\__________/
 __________ 
/          \
| 3        |
|          |
|          |
|          |
|          |
|          |
|          |
|        3 |
\__________/
 __________ 
/          \
| 4        |
|          |
|          |
|          |
|          |
|          |
|          |
|        4 |
\__________/
 __________ 
/          \
| 5        |
|          |
|          |
|          |
|          |
|          |
|          |
|        5 |
\__________/
 __________ 
/          \
| 6        |
|          |
|          |
|          |
|          |
|          |
|          |
|        6 |
\__________/
 __________ 
/          \
| 7        |
|          |
|          |
|          |
|          |
|          |
|          |
|        7 |
\__________/
 __________ 
/          \
| 8        |
|          |
|          |
|          |
|          |
|          |
|          |
|        8 |
\__________/
 __________ 
/          \
| 9        |
|          |
|          |
|          |
|          |
|          |
|          |
|        9 |
\__________/
 __________ 
/          \
| 10       |
|          |
|          |
|          |
|          |
|          |
|          |
|       10 |
\__________/
 __________ 
/          \
| J        |
|          |
|          |
|          |
|          |
|          |
|          |
|        J |
\__________/
 __________ 
/          \
| Q        |
|          |
|          |
|          |
|          |
|          |
|          |
|        Q |
\__________/
 __________ 
/          \
| K        |
|          |
|          |
|          |
|          |
|          |
|          |
|        K |
\__________/

1

आर, 175 बाइट्स

for(x in c(2:10,"J","Q","K","A")){r=c("|"," ",x,rep(" ",9-nchar(x)),"|");cat(" __________ \n/          \\\n",r,"\n",rep("|          |\n",5),rev(r),"\n\\__________/\n",sep="")}

आर में इस समय एक बहुत ही प्रतिस्पर्धी जवाब एक आस्की-कला चुनौती के लिए और निश्चित रूप से गोल्फ होना चाहिए।

इसे आर-फिडल पर आज़माएं

अनगढ़ और समझाया गया

for(x in c(2:10,"J","Q","K","A")){          # For each card in vector 1,...,10,J,Q,K,A
    r=c("|"," ",x,rep(" ",9-nchar(x)),"|")  # Create variable for 3rd row called "r".
    ;cat(" __________ \n/          \\\n",   # Print: hardcoded top two rows,
    r,"\n",                                 # 3rd row,
    rep("|          |\n",5),                # Repeat middle section 5 times,
    rev(r),                                 # Reversed 3rd row,
    "\n\\__________/\n",                    # Hardcoded bottom row
    sep="")                                 # Set separator to empty string
}

सबसे दिलचस्प पहलू जहां कुछ बाइट्स बचाई जाती हैं, वह तीसरी पंक्ति का काम है:

r=c("|"," ",x,rep(" ",9-nchar(x)),"|")

क्योंकि 8कार्ड के मान को दर्शाने वाले वर्ण और अंतिम |(को छोड़कर 10) के बीच कुल मिलाकर रिक्त स्थान हैं, हम 9रिक्त स्थान को दोहरा सकते हैं और वर्तमान में मुद्रित कार्ड में वर्णों की संख्या घटा सकते हैं ।

3rdस्ट्रिंग वेक्टर में अपने स्वयं के तत्व के रूप में पंक्ति में प्रत्येक वर्ण को संग्रहीत करके rहम वेक्टर को उलट सकते हैं और इसे 9thपंक्ति के लिए पुन: उपयोग कर सकते हैं ।


1

सी #, 385 बाइट्स

मेरी पहली ASCII कला चुनौती - यह मजेदार था!

golfed:

string D(){var d=new string[15];for(int i=2;i<15;i++){var a=i>10?new Dictionary<int,string>(){{ 11,"J"},{12,"Q"},{13,"K"},{14,"A"},}[i]:i+"";var r="|          |";d[i]=string.Join("\n",new string[]{" __________",@"/          \",a.Length>1?"| "+a+"       |":"| "+a+"        |",r,r,r,r,r,a.Length>1?"|       " + a +" |" : "|        "+a+" |",@"\__________/"});}return string.Join("\n",d);}

Ungolfed:

public string D()
{
  var d = new string[15];

  for (int i = 2; i < 15; i++)
  {
    var a = i > 10 ? new Dictionary<int, string>() {
    { 11, "J" },
    { 12, "Q" },
    { 13, "K" },
    { 14, "A" },
    }[i] 
      : i+"";

    var r = "|          |";

    d[i] = string.Join("\n", new string[] {
      " __________",
      @"/          \",
      a.Length > 1 ? "| " + a + "       |" : "| " + a + "        |",
      r,
      r,
      r,
      r,
      r,
      a.Length > 1 ? "|       " + a +" |" : "|        " + a +" |",
      @"\__________/"});
  }

  return string.Join("\n", d);
}

1

दरअसल , 91 बाइट्स

"JQKA"#9⌐2x+`;k' ;'_9u*@++'\' 9u*'/++"| {:<9}|"5'|;' 9u*@++n"|{:>9} |"'/'_9u*'\++kp@'
jf`Mi

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

व्याख्या

भाग 1: चेहरे के मूल्यों की सूची स्थापित करना:

"JQKA"#9⌐2x+`PART 2 CODE`Mi
       9⌐2x                  range(2,11) ([2, 10])
"JQKA"#    +                 extend with ["J", "Q", "K", "A"]
            `PART 2 CODE`M   do Part 2 for each item in list
                          i  flatten resulting list and implicitly print

भाग 2: कार्ड बनाना ( \nपठनीयता के साथ प्रतिस्थापित नई पंक्ति):

;k' ;'_9u*@++'\' 9u*'/++"| {:<9}|"5'|;' 9u*@++n"|{:>9} |"'/'_9u*'\++kp@'\njf
;k                                                                            duplicate the face value, push both copies to a list
  ' ;'_9u*@++                                                                 construct the top line
             '\' 9u*'/++                                                      construct the second line
                        "| {:<9}|"                                            create a format string to place the value in a left-aligned 9-width field in the top left of the card, one space away from the edge
                                  5'|;' 9u*@++n                               create 5 copies of the blank middle section
                                               "|{:>9} |"                     like before, but right-align the face value
                                                         '/'_9u*'/++          construct the bottom of the card
                                                                    kp@'\nj   push entire stack to a list, pop the list containing the face values out of that list, and join the rest (the card strings) with newlines
                                                                           f  format the card with the face values
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.