Xáo trộn và thỏa thuận!


14

Hôm nay là thứ Sáu và tôi mệt mỏi, vì vậy hãy làm nhanh lên! Không có đầu vào, tuy nhiên bạn nên xuất tất cả mười ba thẻ được đánh số khác nhau trong một cỗ bài tiêu chuẩn. Bạn nên xuất 2 thông qua Ace (Phù hợp với thuyết bất khả tri).

Mỗi thẻ có một đỉnh được biểu thị bằng một khoảng trắng và mười _và một khoảng trắng khác .

Hàng thứ hai từ trên xuống được biểu thị bằng một /và mười khoảng trắng và một\

Hàng thứ ba giống như tất cả các hàng ở giữa chấp nhận (các) ký tự biểu thị giá trị thẻ xuất hiện hai khoảng trắng ở bên phải (nếu ở trên cùng) hoặc hai khoảng trắng ở bên trái (nếu ở dưới cùng) của cạnh.

Mỗi hàng giữa là một |không gian đơn giản và mười không gian và một không gian nữa|

Cuối cùng, dòng cuối cùng là một \và mười _và cuối cùng là một/

Nếu giá trị là nhiều chữ số, chiều rộng tổng thể theo chiều cao của thẻ sẽ không thay đổi. (tức là số 10 sẽ không làm cho các cạnh của thẻ rộng hơn)

Ví dụ vua:

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

9 Ví dụ

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

10 ví dụ

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

Xuất chúng theo thứ tự từ ít nhất đến lớn nhất (Aces rất cao!).

Đây là môn đánh gôn nên mã ngắn nhất sẽ thắng.

Hãy vui vẻ và có một ngày cuối tuần vui vẻ!


2
Chúng ta có thể có 10 Ví dụ để xem 10 dưới có dán cạnh phải hay không?
Nắng Pun

@SunnyPun tại sao tất nhiên
jacksonecac

1
Các thẻ nên được sắp xếp theo chiều dọc, chiều ngang, hoặc nó có vấn đề?
DLosc

Trái sang phải hoặc từ trên xuống dưới lựa chọn người chơi.
jacksonecac

Câu trả lời:


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

Xây dựng một phạm vi 2..10và thực hiện nối mảng với char-array JQKA. Cho ăn vào một vòng lặp |%{...}. Mỗi lần lặp, chúng tôi đặt $zbằng một số khoảng trắng thích hợp (dựa trên việc chúng tôi có thẻ 10hay không), được đặt $xthành 10dấu gạch dưới và đặt $ythành 10khoảng trắng.

Sau đó, chúng tôi bắt đầu vị trí của chúng tôi. Chúng tôi sẽ tận dụng mặc định Write-Outputđể chèn một dòng mới giữa các thành phần đường ống, vì vậy chúng tôi chỉ cần lấy nội dung trên đường ống. Lưu ý rằng ở hầu hết các nơi, chúng tôi đang sử dụng một dòng mới theo nghĩa đen thay vì đóng và mở lại chuỗi của chúng tôi để lưu một vài byte.

Đầu tiên chỉ là $xvới hai khoảng trắng, sau đó là $yhai dấu gạch chéo, sau đó | $_$z|"là đường ống, một khoảng trắng, số lượng khoảng trống thích hợp và một đường ống khác. Điều này tạo thành đầu của các thẻ lên đến và bao gồm cả dòng giá trị.

Chúng ta phải có dấu chấm phẩy ở đây, vì tiếp theo sử dụng một mảng. Cấu ,"|$y|"*5trúc của một chuỗi chuỗi, với toán tử dấu phẩy, của đường ống có khoảng trắng - trên đầu ra, mỗi phần tử của mảng này sẽ có một dòng mới miễn phí.

Sau đó, "|$z$_ |đánh dấu cho giá trị dưới cùng, và cuối cùng $xvới dấu gạch chéo cho dưới cùng của thẻ.

Đoạn đầu ra

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
Đó là một ngày kỳ lạ khi PowerShell chiến thắng! Làm tốt lắm :)
Kade

@Shebang Cảm ơn! Sub-100 rất gần, nhưng không chắc là tôi có thể làm được không.
admBorkBork

[lắc nắm tay] bạn đang đánh tôi 3 byte. BA B BYNG !!
Gabriel Benamy

6

Python, 161 160 156 149 byte

Một byte được lưu bởi Shebang

Điều này có thể sử dụng một số công việc nhưng đây là:

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

Giải trình

Chúng tôi lập một danh sách tất cả các cấp bậc theo thứ tự sử dụng map(str,range(2,11). Sau đó, chúng tôi lặp qua từng cấp bậc và tạo một thẻ.

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

Chúng tôi làm đầu thẻ:

o+v+"\n"

Sau đó, thứ hạng ở bên trái:

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

Chúng tôi sử dụng .ljust10là hai dài và tất cả những cái khác là một rộng.

Sau đó, chúng tôi in 5 hàng ở giữa:

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

và thứ hạng dưới cùng:

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

Cuối cùng, chúng tôi in dưới cùng của thẻ:

"\\"+v+"/"

2
Holy Moly đã nhanh chóng
jacksonecac

Số byte của bạn dường như tắt (tôi đếm 155). Tuy nhiên, nếu bạn tạo một biến v="_"*10và thay thế các thể hiện đó sẽ giúp bạn tiết kiệm một byte khác!
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());


@Emigna Cảm ơn, tôi cũng quên nó trong câu trả lời khác của tôi.
Neil

4

Perl, 128 117 111 byte

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

Các dòng mới 6 chữ tiết kiệm mỗi byte 1 byte. Điều này không thể được chạy trực tiếp từ dòng lệnh vì các dấu ngoặc đơn trong dòng 2 và 4 để tiết kiệm 1 byte bằng cách không phải thoát dấu gạch chéo ngược.

Chỉnh sửa: Tôi đặt Ace ở đầu, nhưng nó được cho là ở cuối. Nó không thay đổi số byte.

Chỉnh sửa 2: -11 byte: Loại bỏ một số câu lệnh không cần thiết và thêm một dòng mới theo nghĩa đen. Tất cả mọi thứ bây giờ là đầu ra thông qua một printf duy nhất.

Chỉnh sửa 3: -5 byte nhờ @TonMedel. Nhưng vì một số lý do, tôi nhận được 111 byte thay vì 112 ở nhà khi so sánh với tại nơi làm việc, vì vậy tôi sẽ sử dụng số byte mà máy tính ở nhà của tôi đưa cho tôi.


Bạn không phải trích dẫn nghĩa đen là một tên biểu tượng hợp lệ, vì vậy _ x10thay vì "_"x10. Cũng qwgần như không bao giờ hữu ích. trong golf. J,Q,K,AThay vào đó, hãy sử dụng không trích dẫn (thậm chí bỏ qua ())
TonMedel

Tôi nhận được một lỗi thông dịch viên khi tôi loại bỏ các dấu ngoặc kép quanh gạch dưới: Can't locate object method "_" via package "x10" (perhaps you forgot to load "x10"?) at shuffle.pl line 1. Không chắc tại sao, nhưng tôi sẽ không chống lại dịch :(
Gabriel Benamy

1
Chơi gôn nhiều hơn một chút (thay thế \nbằng dòng mới thực sự):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
TonMedel

4

PHP, 233 byte

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
Cuối cùng của bạn ifcó thể được thay thế bằng $k>9&&$c[29]=$c[113]=0&$c[112]=1;, để tiết kiệm một vài byte. Ngoài ra, Notepad ++ đang nói rằng mã của bạn thực sự dài 241 byte. Tôi biết 1 trong số các byte đó là từ dòng mới. Nhưng cái kia là một điều sai lầm với tôi.
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%

Hãy thử trực tuyến!

-2 byte nhờ m-chrzan


Bạn có thể lưu hai byte bằng cách +thay thế chỉ trong 5 _giây và sau đó có hai +s trong đó bạn có một +s bây giờ.
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)

Bản in

  • Phía trên hai dòng ' %s\n/%%11s\n'%u%'\\'nơi u'_'*10
  • 7 dòng ở giữa '| %-2s %2s |\n', mỗi dòng có hai khe định dạng chuỗi. Đầu tiên và cuối cùng được lấp đầy với giá trị thẻ và phần còn lại không gian không có hiệu lực
  • Dòng dưới cùng '\% s /'% u

Các tính năng giải nén mới của Python 3.5 được sử dụng ở hai nơi. Danh sách các nhãn [*range(2,11),*'JQKA']giải nén các số và chữ cái thành một danh sách. Và, bộ dữ liệu (c,*' '*12,c)giải nén mười hai mục của không gian vào trung tâm.


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

2

Hàng loạt, 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 \__________/

Tôi đã thử chơi golf theo ba cách khác nhau nhưng cuối cùng lại có cùng số byte mỗi lần ...


2

05AB1E , 71 70 68 66 65 64 byte

Sử dụng mã hóa CP-1252 .

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

Liên kết được sửa đổi một chút vì không hoạt động với ÿTIO atm.

Hãy thử trực tuyến!

Giải trình

TL¦"JQKA"S« đẩy danh sách [2,3,4,5,6,7,8,9,10,J,Q,K,A]

Sau đó chúng tôi lặp lại từng giá trị thẻ với v

ð'_Tשðcấu trúc xây dựng cấu trúc " __________ "
ðT×…/ÿ\xây "/ \"
9yg-ð×y"| ÿÿ|"Âdựng 2 hàng với giá trị thẻ (hàng thứ hai là hàng đầu tiên được đảo ngược)
ðT×…|ÿ|5×xây dựng 5 hàng của biểu mẫu"| |"

Sau đó chúng ta

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

®…\ÿ/ xây dựng hàng dưới cùng

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

2

V , 87 byte

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

Hãy thử trực tuyến!

Vì điều này có chứa một số không thể in được, đây là một 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.

2

PHP, 135 131 158 134 byte

Hy vọng, tôi có thể tìm ra cách rút ngắn điều này hơn một chút.

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

Điều này tận dụng printfđể lặp lại nhiều ký tự và định dạng mọi thứ độc đáo.


Phiên bản cũ:

Không chính xác là một phần của vẻ đẹp, nhưng hoạt động!

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

Cảm ơn Jörg Hülsermann vì đã phát hiện ra một lỗi và cho phép tôi sử dụng một phần mã của mình, điều đó đã giảm 4 byte! Và để tìm một lỗi nghiêm trọng.


Số 10 có vẻ lạ. Tôi tin rằng bạn phải làm thêm
Jörg Hülsermann

@ JörgHülsermann Bạn nói đúng. Cái 10bị lỗi. Có ổn không nếu tôi sử dụng mảng của bạn? Sử dụng [2,3,4,5,6,7,8,9,10,J,Q,K,A]thay vì phân chia đó giúp tôi tiết kiệm 4 byte. Nếu bạn không cho phép nó, tôi sẽ hiểu.
Ismael Miguel

Lấy nó. Bạn đã làm cho cách tốt hơn trong PHP và tôi hỗ trợ tất cả những gì bạn cần.
Jörg Hülsermann

@ JörgHülsermann Cảm ơn bạn. Tôi đang xem câu trả lời của bạn và tôi đang tìm một số nơi để loại bỏ một số byte.
Ismael Miguel

Thay vì $C$S $C".($P=substr($S,$C>9))."xử lý các khoảng trắng có giá trị 10 và thay vào đó $S$Cbạn cần$P$C
Jörg Hülsermann

1

Ruby, 115 byte

Sử dụng khá đơn giản printf.

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

1

Vợt 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)))

Ung dung:

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

Kiểm tra:

(main)

Đầu ra:

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

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, điều này là xấu xí và không hiệu quả lắm, nhưng nó hoạt động .. Điều đó 10 là trường hợp đặc biệt với một không gian trước ở trên cùng và sau ở vị trí dưới cùng thực sự vít với mọi người ..

Mã thử nghiệm & mã hóa:

Hãy thử nó ở đây.

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

Đầu ra:

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

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

Một câu trả lời khá cạnh tranh trong R lần này cho một thử thách nghệ thuật ascii và chắc chắn là có thể chơi được.

Hãy thử nó trên R-fiddle

Ung dung và giải thích

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
}

Khía cạnh thú vị nhất mà một vài byte được lưu là sự gán của hàng thứ ba:

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

Vì có 8tổng khoảng trắng giữa ký tự biểu thị giá trị thẻ và cuối cùng |(ngoại trừ 10), chúng ta có thể lặp lại9 khoảng trắng và trừ đi số lượng ký tự trong thẻ hiện được in.

Bằng cách lưu trữ mỗi ký tự trong 3rdhàng làm phần tử riêng của nó trong vectơ chuỗi, rchúng ta có thể đảo ngược vectơ và sử dụng lại cho 9thhàng.


1

C #, 385 byte

Thử thách nghệ thuật ASCII đầu tiên của tôi - thật vui!

Chơi gôn

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

Ung dung:

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

Trên thực tế , 91 byte

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

Hãy thử trực tuyến!

Giải trình

Phần 1: thiết lập danh sách các giá trị khuôn mặt:

"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

Phần 2: tạo thẻ (dòng mới được thay thế bằng \nđể dễ đọc):

;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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.