Kocok dan Tangani!

14

Ini hari Jumat dan saya lelah, jadi mari kita lakukan yang cepat! Jangan ambil input, namun Anda harus mengeluarkan semua tiga belas kartu bernomor berbeda dalam setumpuk kartu standar. Anda harus mengeluarkan 2 melalui Ace (Suit agnostik).

Setiap kartu memiliki bagian atas yang dilambangkan dengan spasi dan sepuluh _dan ruang lainnya .

Baris kedua dari atas dilambangkan dengan a /dan sepuluh spasi dan a\

Baris ketiga sama dengan semua baris ish-tengah kecuali karakter yang menunjukkan nilai kartu muncul dua spasi ke kanan (jika di atas) atau dua spasi ke kiri (jika di bagian bawah) tepi.

Setiap baris tengah ish adalah sederhana |dan sepuluh spasi dan satu lagi|

Akhirnya baris terakhir adalah a \dan sepuluh _dan akhirnya a/

Jika nilainya multi-digit, lebar keseluruhan berdasarkan tinggi kartu tidak boleh berubah. (yaitu 10 tidak akan membuat sisi kartu lebih lebar)

Contoh Raja:

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

9 Contoh

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

10 Contoh

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

Keluarkan mereka secara berurutan dari yang terkecil hingga yang terbesar (Aces tinggi!).

Ini adalah kode-golf sehingga kode terpendek menang.

Selamat bersenang-senang dan bersenang-senang di akhir pekan!

jacksonecac
sumber
2
Bolehkah kita memiliki 10 Contoh untuk melihat apakah 10 yang lebih rendah menempel di tepi kanan atau tidak?
Sunny Pun
@SunnyPun mengapa tentu saja
jacksonecac
1
Haruskah kartu disusun secara vertikal, horizontal, atau apakah itu penting?
DLosc
Pilihan pemain dari kiri ke kanan atau atas ke bawah.
jacksonecac

Jawaban:

10

PowerShell v2 +, 120 116 114 108 byte

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

Membangun jangkauan 2..10dan melakukan penggabungan array dengan char-array JQKA. Umpan itu ke dalam satu lingkaran |%{...}. Setiap iterasi, kami set $zsama dengan jumlah ruang yang sesuai (berdasarkan apakah kami di kartu 10atau tidak), ditetapkan $xke 10garis bawah, dan diatur $yke 10ruang.

Kemudian, kami memulai penempatan kami. Kita akan meningkatkan standar Write-Outputuntuk menyisipkan baris baru di antara elemen-elemen pipa, jadi kita hanya perlu memasukkan barang-barang di pipa. Perhatikan bahwa di sebagian besar tempat, kami menggunakan baris literal alih-alih menutup dan membuka kembali string kami untuk menghemat beberapa byte.

Yang pertama hanya $xdengan dua spasi, kemudian $ydengan dua garis miring, lalu | $_$z|"pipa, spasi, jumlah ruang yang sesuai, dan pipa lainnya. Ini membentuk bagian atas kartu hingga dan termasuk garis nilai.

Kita harus titik koma di sini, karena selanjutnya menggunakan array. The ,"|$y|"*5membangun string-array, dengan koma operator, pipa dengan ruang - pada output, setiap elemen dari array ini mendapat baris baru secara gratis.

Kemudian, "|$z$_ |untuk menandai nilai bawah, dan akhirnya $xdengan garis miring untuk bagian bawah kartu.

Cuplikan Keluaran

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        |
...
AdmBorkBork
sumber
1
Ini hari yang aneh ketika PowerShell menang! Kerja bagus :)
Kade
@ Shang Terima kasih! Sub-100 begitu dekat, tetapi tidak yakin apakah saya bisa melakukannya.
AdmBorkBork
[getar tangan] Anda mengalahkan saya dengan 3 byte. TIGA Byte !!
Gabriel Benamy
6

Python, 161 160 156 149 byte

Satu byte disimpan oleh Shebang

Ini bisa menggunakan beberapa pekerjaan tetapi ini dia:

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+"/"

Penjelasan

Kami membuat daftar semua peringkat dalam menggunakan map(str,range(2,11). Kemudian kita mengulang setiap peringkat dan membuat kartu.

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

Kami membuat bagian atas kartu:

o+v+"\n"

Kemudian pangkat berada di sebelah kiri:

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

Kita gunakan .ljust karena 10panjangnya dua dan yang lainnya lebar.

Lalu kami mencetak 5 baris di tengah:

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

dan peringkat bawah:

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

Akhirnya kami mencetak bagian bawah kartu:

"\\"+v+"/"
Posting Rock Garf Hunter
sumber
2
Holy Moly yang cepat
jacksonecac
Hitungan byte Anda tampaknya tidak aktif (saya hitung 155). Namun, jika Anda membuat variabel v="_"*10dan mengganti instance tersebut akan menghemat byte lain!
Kade
5

JavaScript (ES6), 151 byte

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

Neil
sumber
@Emigna Terima kasih, saya lupa di jawaban saya yang lain juga.
Neil
4

Perl, 128 117 111 byte

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

6 baris baru literal masing-masing menghemat 1 byte. Ini tidak dapat dijalankan langsung dari baris perintah karena tanda kutip tunggal pada baris 2 dan 4 untuk menghemat 1 byte dengan tidak harus melarikan diri backslash.

Sunting: Saya menempatkan Ace di awal, tetapi seharusnya di akhir. Itu tidak mengubah jumlah byte.

Sunting 2: -11 byte: Singkirkan beberapa pernyataan yang tidak perlu dan tambahkan baris baru literal lainnya. Semuanya sekarang di-output melalui satu printf.

Sunting 3: -5 byte berkat @Ton Hospel. Tetapi untuk beberapa alasan, saya mendapatkan 111 byte daripada 112 di rumah bila dibandingkan dengan di tempat kerja, jadi saya akan menghitung byte yang diberikan oleh komputer rumah saya.

Gabriel Benamy
sumber
Anda tidak perlu mengutip literal yang merupakan nama simbol yang valid, jadi _ x10alih-alih "_"x10. Juga qwhampir tidak pernah berguna. dalam golf. Gunakan tanda kutip J,Q,K,Asebagai gantinya (bahkan tidak termasuk ())
Ton Hospel
Saya mendapatkan kesalahan juru bahasa ketika saya menghapus tanda kutip di sekitar garis bawah: Can't locate object method "_" via package "x10" (perhaps you forgot to load "x10"?) at shuffle.pl line 1. Tidak yakin mengapa, tapi saya tidak akan melawan penerjemah :(
Gabriel Benamy
1
Sedikit lebih golf (digantikan \noleh baris baru):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
Ton Hospel
4

PHP, 233 Bytes

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;}
Jörg Hülsermann
sumber
1
Terakhir Anda ifdapat diganti dengan $k>9&&$c[29]=$c[113]=0&$c[112]=1;, untuk menghemat beberapa byte. Notepad ++ juga mengatakan bahwa kode Anda sebenarnya berukuran 241 byte. Saya tahu 1 byte tersebut berasal dari baris baru. Tapi yang lain adalah misteri bagiku.
Ismael Miguel
3

///, 182 180 byte

/+/_____//*/# |
&//&/@@@@@|# //%/ |
\\\\++\\\/
//$/ ++
\\\/!\\\\
| //#/       //!/#   //@/|!|
/$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%

Cobalah online!

-2 byte berkat m-chrzan

akrolit
sumber
Anda dapat menyimpan dua byte dengan memiliki +pengganti hanya 5 _detik, dan kemudian memiliki dua +detik di mana Anda memiliki satu +sekarang.
m-chrzan
3

Python 3.5, 110 byte

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

Cetakan

  • Atas dua baris ' %s\n/%%11s\n'%u%'\\'mana uadalah'_'*10
  • 7 baris tengah '| %-2s %2s |\n', yang masing-masing memiliki dua slot pemformatan string. Yang pertama dan terakhir diisi dengan nilai kartu, dan sisanya dengan spasi tanpa efek
  • Intinya '\% s /'% u

Fitur unpacking baru Python 3.5 digunakan di dua tempat. Daftar label [*range(2,11),*'JQKA']membongkar angka dan huruf menjadi satu daftar. Dan, tuple (c,*' '*12,c)membongkar dua belas entri spasi ke tengah.

Tidak
sumber
2

Scala, 161 byte

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"}
corvus_192
sumber
2

Batch, 236 byte

@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 \__________/

Saya mencoba bermain golf ini dengan tiga cara berbeda tetapi berakhir dengan jumlah byte yang sama setiap kali ...

Neil
sumber
2

05AB1E , 71 70 68 66 65 64 byte

Menggunakan pengodean CP-1252 .

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

Tautan yang sedikit dimodifikasi karena tidak berfungsi dengan baik ÿpada TIO atm.

Cobalah online!

Penjelasan

TL¦"JQKA"S« mendorong daftar [2,3,4,5,6,7,8,9,10,J,Q,K,A]

Kami kemudian mengulang setiap nilai kartu dengan v

ð'_Tשðkonstruk konstruk " __________ "
ðT×…/ÿ\konstruk "/ \"
9yg-ð×y"| ÿÿ|"Âmembangun 2 baris dengan nilai kartu (baris kedua adalah terbalik pertama)
ðT×…|ÿ|5×membangun 5 baris formulir"| |"

Lalu kita

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

®…\ÿ/ membangun baris bawah

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

V , 87 byte

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

Cobalah online!

Karena ini mengandung beberapa unsintables, berikut adalah hexdump:

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.
DJMcMayhem
sumber
2

PHP, 135 131 158 134 byte

Mudah-mudahan, saya dapat menemukan cara untuk mempersingkat ini lebih sedikit.

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,_);

Ini memanfaatkan printfuntuk mengulang beberapa karakter dan memformat semuanya dengan baik.


Versi lama:

Bukan sepotong kecantikan, tapi berhasil!

$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/
";

Terima kasih kepada Jörg Hülsermann untuk mendeteksi bug dan mengizinkan saya menggunakan bagian dari kodenya, yang menguranginya sebesar 4 byte! Dan untuk menemukan bug yang fatal.

Ismael Miguel
sumber
10 terlihat aneh. Saya percaya Anda harus melakukan pekerjaan ekstra
Jörg Hülsermann
@ JörgHülsermann Anda benar. The 10disadap. Apakah saya boleh menggunakan array Anda? Menggunakan [2,3,4,5,6,7,8,9,10,J,Q,K,A]bukannya membagi itu menghemat saya 4 byte. Jika Anda tidak mengotorisasi itu, saya akan mengerti.
Ismael Miguel
Ambil. Anda telah membuat cara yang lebih baik dalam PHP dan saya mendukung semua yang Anda butuhkan.
Jörg Hülsermann
@ JörgHülsermann Terima kasih. Saya melihat jawaban Anda dan saya menemukan beberapa tempat untuk memotong beberapa byte.
Ismael Miguel
Alih-alih $C$S $C".($P=substr($S,$C>9))."menangani ruang dengan nilai 10 dan bukannya $S$CAnda butuhkan$P$C
Jörg Hülsermann
1

Ruby, 115 byte

Penggunaan cukup mudah printf.

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

Racket 327 byte

(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)))

Tidak Disatukan:

(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))
))

Pengujian:

(main)

Keluaran:

 __________ 
/          \
| 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 |
\__________/
juga
sumber
1

Java 7, 287 byte

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;}

Ok, ini jelek dan tidak terlalu efisien, tetapi berfungsi .. Itu 10sebagai kasus khusus dengan ruang sebelum di atas dan setelah di posisi bawah benar-benar kacau dengan semua orang ..

Tidak digabungkan & kode uji:

Coba di sini.

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());
  }
}

Keluaran:

 __________ 
/          \
| 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 |
\__________/
Kevin Cruijssen
sumber
1

R, 175 byte

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="")}

Jawaban yang cukup kompetitif di R kali ini untuk tantangan ascii-art dan pasti harus golf.

Cobalah R-biola

Tidak diikat dan dijelaskan

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
}

Aspek yang paling menarik di mana beberapa byte disimpan adalah penugasan baris ketiga:

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

Karena ada 8spasi total antara karakter yang menunjukkan nilai kartu dan final |(kecuali untuk 10) kita dapat mengulangi 9spasi dan mengurangi jumlah karakter dalam kartu yang dicetak saat ini.

Dengan menyimpan setiap karakter di 3rdbaris sebagai elemennya sendiri dalam vektor string, rkita dapat membalikkan vektor dan menggunakannya kembali untuk 9thbaris.

Billywob
sumber
1

C #, 385 Bytes

Tantangan Seni ASCII pertama saya - itu menyenangkan!

Golf:

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);}

Tidak Disatukan:

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);
}
Pete Arden
sumber
1

Sebenarnya , 91 byte

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

Cobalah online!

Penjelasan

Bagian 1: mengatur daftar nilai wajah:

"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

Bagian 2: membuat kartu (baris baru diganti dengan \nagar mudah dibaca):

;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
Mego
sumber