Giao dịch sàn ASCII


13

Chưa bao giờ thực sự có một thử thách thẻ ASCII dứt khoát AFAIK. Vì vậy, bằng cách sử dụng bộ thẻ ASCII sau đây:

.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): |
| ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'

Lấy hai số nguyên, pqlàm đầu vào; nơi plà số lượng người chơi và qlà số lượng thẻ mỗi người chơi được.

  • Ngẫu nhiên xáo trộn bộ bài (điều này không rõ ràng, nhưng có nghĩa là tất cả các thẻ phải có khả năng xuất hiện như nhau ở bất cứ đâu một lần).
  • Giải quyết 1 vòng thẻ cho mỗi người chơi, xuất ra qcác hàng pthẻ mỗi hàng.

Quy tắc:

  • Các kết quả phải được thống nhất ngẫu nhiên, mỗi thẻ sẽ có khả năng xuất hiện như nhau ở bất cứ đâu.
  • Nó được đảm bảo rằng 0 < p*q <= 52 and p < 10, bạn có thể có hành vi không xác định cho các tình huống không được đáp ứng.
  • Bạn nên xuất qhàng thẻ với pthẻ mỗi hàng.
  • Mỗi cột phải được ngăn cách bởi | (một ống char được bao quanh bởi các khoảng trắng); nếu bạn chọn một char khác với cái này, hãy giải thích tại sao. Không gian xung quanh ở đây KHÔNG phải là tùy chọn.
  • Mỗi hàng phải có 1 hoặc nhiều dòng mới xen giữa chúng, nhiều hơn một dòng được chấp nhận, 0 không (1 dòng mới có nghĩa là dòng mới ở đó theo mặc định).
  • Mỗi hàng phải được gắn nhãn với người chơi sở hữu nó ở định dạng "Người chơi N" (0 hoặc 1 chỉ mục là tốt).
  • Không một thẻ nào có thể xuất hiện nhiều hơn một lần.
  • T là dành cho Mười.

Ví dụ:

Hàm ( p=1,q=1):

Player 1 # Can also be 0.
.------.
|2.--. |
| (\/) |
| :\/: |
| '--'2|
'------'

Hàm ( p=2,q=1):

Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|2.--. | | |T.--. |
| (\/) | | | (\/) |
| :\/: | | | :\/: |
| '--'2| | | '--'T|
'------' | '------'

Hàm ( p=2,q=2):

Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|J.--. | | |3.--. |
| (\/) | | | :/\: |
| :\/: | | | :\/: |
| '--'J| | | '--'3|
'------' | '------'
.------. | .------.
|8.--. | | |6.--. |
| :(): | | | :/\: |
| ()() | | | (__) |
| '--'8| | | '--'6|
'------' | '------'

Tín dụng nghệ thuật cho một phông chữ trên: http://patorjk.com/software/taag


5
Bạn có định đăng nhiều thử thách thẻ từ các thẻ bạn tìm thấy tại patorjk.com/software/taag không?

1
Soooo ... Chúng ta có thể "sử dụng" trang web này để đưa ra kết quả không ???
J42161217

1
Ý tôi là: Tôi có thể tạo một chương trình xuất ra patorjk.com/software/taag/ khuyên này cho trường hợp thử nghiệm cuối cùng của bạn không?
J42161217

5
Ngoài ra, Each row must have 1 or more newlines inbetween them, more than one is acceptable, 0 is not.... Nhưng trường hợp thử nghiệm của bạn không có dòng mới giữa các thẻ ..?
hoàn toàn là

1
Có gần một thử thách trên thẻ ASCII: Thời gian chơi do tôi đăng.
sergiol

Câu trả lời:


6

Than , 142 133 125 byte

NθFN«F¬¬ι«→↑×⁶θ| »Player IιFθ«↙↓.↓⁴←'←⁶↑'↑⁴.P⁶↓≔‽⁵²εW№υε≔‽⁵²ε⊞υε≔§”w↘τ[⁵PkxτG”εδδ.--.¶✂”{➙aETê;s∨Hμ⁼⎚↑Z~SÀd~⌀Tê”﹪ε⁴φ⁴'--'δ↘

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Chỉnh sửa: Đã lưu 9 byte bằng cách cải thiện mã lấy mẫu ngẫu nhiên của tôi. Đã lưu thêm 8 byte bằng cách cải thiện mã in phù hợp của tôi. Giải trình:

Nθ

Đọc số lượng thẻ vào q.

FN«

Vòng qua từng người chơi.

F¬¬ι«→↑×⁶θ| »

Nếu đây không phải là trình phát đầu tiên, hãy in dòng dọc giữa trình phát trước và trình phát này.

Player Iι

In số người chơi.

Fθ«

Vòng qua mỗi thẻ.

↙↓.↓⁴←'←⁶↑'↑⁴.P⁶↓

In cạnh của thẻ.

≔‽⁵²εW№υε≔‽⁵²ε⊞υε

Chọn một chỉ mục thẻ chưa được chọn và thêm nó vào danh sách các chỉ số thẻ đã chọn.

≔§”w↘τ[⁵PkxτG”εδδ

Chọn và in thứ hạng của thẻ bằng cách lập chỉ mục theo chu kỳ thành một chuỗi các cấp bậc thẻ hợp lệ ( 2-9, T, J, Q, K, A).

.--.¶

In phần trên của bộ đồ.

✂”{➙aETê;s∨Hμ⁼⎚↑Z~SÀd~⌀Tê”﹪ε⁴φ⁴

In phần giữa của bộ đồ bằng cách cắt thành một chuỗi. Lát bắt đầu ở chỉ số thẻ modulo 4 và lấy mỗi ký tự thứ 4 cho đến khi hết chuỗi (hoặc fđạt được ký tự thứ 1000). Vì 4 và 13 là đồng thời, điều này đảm bảo rằng tất cả 52 thẻ đều có thể.

'--'δ↘

In phần dưới của bộ đồ và một bản sao của thứ hạng, sau đó di chuyển đến một điểm thuận tiện không quá xa so với bản sao của thứ hạng, bắt đầu của thẻ tiếp theo hoặc bắt đầu của đường phân chia cho người chơi tiếp theo.


Khi tôi nhìn thấy điều này trong hộp cát, đó là một thử thách kc để in bộ bài, điều này khiến tôi mất 102 byte: Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã.
Neil

3

Python 2 , 357 byte

from random import*
p,q=input()
A,V=':/\:',':\/:'
c=sample([(""".------.
|%s.--. |
| %s |
| %s |
| '--'%s|
'------'"""%(n,s,t,n)).split('\n')for s,t in('(\/)',V),(A,V),(A,'(__)'),(':():','()()')for n in'123456789TJQKA'],p*q)
print' | '.join('Player '+`i`for i in range(p))
for i in range(0,p*q,p):print'\n'.join(map(' | '.join,zip(c[i:i+p][0],c[i:i+p][1])))

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

Tôi không có ý tưởng nào.


3

Thạch , 126 byte

³‘Ḷj“×ṁẹHY»;⁶¤ṫ5W;
2r9;“TJQKA”
“¡ẏ%TZ=ẹaɦAY’ṃ“(\/)_:”s4s2
“E¬ƭḊHẈḢ“ðİ“|e*Ḳ?BḤ’ṃ“. -|1¶'”żÐ€¢FỴ$€p2£j/€Ẋ
¢ssḢµṣ€”1Zj€“ | ”Yµ€ÑY

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


3

JavaScript (ES6), 328 ... 312 byte

Đưa đầu vào theo cú pháp currying (p)(q). Người chơi được lập chỉ mục 0.

p=>g=(q,i=p*q*6,d=[...Array(52).keys(a=`:\\/:,(__),()(),(\\/),:/\\:,:():, | ,
,.3.,|0.--. |,| 1 |,| 2 |,| '--'0|,'3',Player 4`.split`,`)].sort(_=>Math.random()-.5))=>i--+p?g(q,i,d)+a[i%p?6:7]+a[i<0?14:i/p%6|8].replace(/\d/,c=>['TJQKA'[j=x>>2]||j-3,a['3454'[x&=3]],a[x%3],'------',p+i][c],x=d[i%p+p*(i/p/6|0)]):''

Bản giới thiệu

Làm sao?

Đây là một hàm đệ quy, xây dựng đầu ra từ dưới lên trên. Trong phần chính trong đó các thẻ được rút ra, iđược khởi tạo p*q*6và giảm dần cho đến khi đạt được 0. Sau đó chúng tôi vẽ tiêu đề bằng cách giảm dần icho đến khi nó đạt-p .

Nghệ thuật ASCII được chia thành các phần nhỏ được lưu trữ trong mảng a[]. Bảng dưới đây mô tả nội dung của a[], làm cho phần còn lại của mã dễ hiểu hơn.

 Index | Content    | Description
-------+------------+------------------------------------------------
    0  | ":\\/:"    | bottom of 'diamonds' and 'hearts'
    1  | "(__)"     | bottom of 'spades'
    2  | "()()"     | bottom of 'clubs'
    3  | "(\\/)"    | top of 'hearts'
    4  | ":/\\:"    | top of 'diamonds' and 'spades'
    5  | ":():"     | top of 'clubs'
    6  | " | "      | player separator
    7  | "\n"       | line-feed
    8  | ".3."      | card row #1, "3" --> "------"
    9  | "|0.--. |" | card row #2, "0" --> symbol of card value
   10  | "| 1 |"    | card row #3, "1" --> top of color ASCII art
   11  | "| 2 |"    | card row #4, "2" --> bottom of color ASCII art
   12  | "| '--'0|" | card row #5, "0" --> symbol of card value
   13  | "'3'"      | card row #6, "3" --> "------"
   14  | "Player 4" | header, "4" --> player ID

Định dạng và nhận xét

p => g = (                                // p = number of players
  q,                                      // q = number of cards
  i = p * q * 6,                          // i = counter
  d = [...Array(52).keys(                 // d = deck
    a = `:\\/:,(__),...`.split`,`         // a = ASCII art pieces (truncated, see above)
  )].sort(_ => Math.random() - .5)        // shuffle the deck
) =>                                      //
  i-- + p ?                               // if i is greater than -p:
    g(q, i, d) +                          //   do a recursive call and append ...
    a[i % p ? 6 : 7] +                    //   separator or line-feed
    a[i < 0 ? 14 : i / p % 6 | 8]         //   header or card row
    .replace(/\d/, c => [                 //   where digits are replaced with:
        'TJQKA'[j = x >> 2] || j - 3,     //     0: symbol of card value
        a['3454'[x &= 3]],                //     1: top of color ASCII art
        a[x % 3],                         //     2: bottom of color ASCII art
        '------',                         //     3: horizontal border
        p + i                             //     4: player ID
      ][c],                               //
      x = d[i % p + p * (i / p / 6 | 0)]  //   x = current card with: bits 0-1 = color
    )                                     //                          bits 2-5 = value
  :                                       // else:
    ''                                    //   stop recursion

2

Python 2 , 382 358 346 338 332 byte

from random import*
p,n=input()
d=zip([0,1,2,3]*13,'23456789TJQKA'*4)
shuffle(d)
C=""".------.
|%s.--. |
| %s |
| %s |
| '--'%s|
'------'"""
print' | '.join('Player '+`i`for i in range(p))
exec"for l in zip(*[(C%(v,'(:::\/(//\)\):::'[s::4],':((:\_)\/_(/:)):'[s::4],v)).split('\\n')for s,v in d[:p]]):print' | '.join(l)\nd=d[p:]\n"*n

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


2

SOGL V0.12 , 106 byte

E⁽⁰⅜║(Ηe─t¦4»\$²‘8n{"1<ω⅛┘‘4n╬¡;4n33žASUjk"TJQKA”+{a;22žF75ž}}'#δ№{ψ⌡≤οc+C}c_.∫:"▓⅛▲ŗ‘Κ⁽e{≤+};H?;lƧ |Γ∙┼;┼

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

Tạo thẻ:

...‘                     push "(\/):\/::/\::\/::/\:(__):():()()" - the suits
    8n                   split to line lengths of 8 - individual suits
      {                  for each suit
       "...‘               push ".---| .-|   " - a quarter of a suit
            4n             split to line lengths of 4 - [".---", "| .-", "|   "]
              έ           quad palindromize - empty card
                ;          get the suit on top
                 4n        split to line lengths of 4
                   33ž     insert in the card at [3; 3]
                      A    save on variable A - card template
SU                         push "1234567890"
  jk                       remove the first and last digits
    "TJQKA”+               append "TJQKA"
            {         }    for each number - "23456789TJQKA"
             a               load the template
              ;22ž           at [2; 2] insert the current number
                  F75ž       at [7; 5] insert the current number

Xáo trộn:

'#             push 52
  δ            lower range - [0, 1, ..., 50, 51]
   №           reverse - [51, 50, ..., 1, 0]
    {       }  for each, pushing the current item
     ψ           get a random number from 0 to ToS (inclusive)
      ⌡          that many times
       ≤           put the first item of the stack on the top
        οc+C     prepend that to the variable C, predefined with an empty array

Xử lý:

c_              push Cs contents on the stack - the stack is now a mess of cards
  .∫            repeat input times - each player - pushing the current player number
    :             duplicate the number
     "..‘         push "player "
         Κ        prepend "player " to the number
          ⁽       uppercase the 1st letter
           e{  }  repeat 2nd input times
             ≤      put the first stack item on the top
              +     append it to "Player X" vertically (making an array)
;                 get the other copy of the player number
 H?               if POP-1 (aka if it's not 1)
   ;                swap the top 2 items - the current collumn and all the previous ones (by then they've been joined together)
    l               get its (vertical) length
     Ƨ |            push " |"
        Γ           palindromize - [" | "]
         ∙          multiply " | " vertically that length times
          ┼         append it horizontally (to the previous collumns)
           ;┼       append the current collumn

2

Ruby, 262 byte

->p,q{a=[*0..51].shuffle
puts ["Player %d"]*p*(d=" | ")%[*1..p],(1..q*6).map{|i|(["'------'
.------.
|%X.--. |
| %s |
| %s |
| '--'%X|".split($/)[i%6]]*p*d%a[i/6*p,p].map{|j|["(\\/):()::/\\:"[u=j%4*4-4,4],":\\/:()():\\/:(__)"[u,4],j/4][i%3]}).tr("01BC","TJQK")}}

Khó theo dõi hơn, nhưng ngắn hơn!

Ruby, 279 byte

->p,q{puts [*1..p].map{|k|"Player #{k}"}*" | "
a=[*0..51].shuffle
(q*6).times{|i|puts [".------.
|%s.--. |
| %s |
| %s |
| '--'%s|
'------'".split($/)[i%6]]*p*" | "%a[i/6*p,p].map{|j|[":\\/:()():\\/:(__)"[u=j%4*4-4,4],("%X"%(j/4)).tr("01BC","TJQK"),"(\\/):()::/\\:"[u,4]][i%3]}}}

Xây dựng một định dạng cho mỗi hàng, sau đó sử dụng %toán tử nhưsprintf điền vào nó.

Thực tế là giá trị thẻ xuất hiện trên mỗi hàng thứ 3 là tiện dụng. Các giá trị thẻ được trình bày dưới dạng thập lục phân với các chữ số được 01BCthay thế bằng TJQK.

Đã lưu 4 byte từ các ký hiệu phù hợp bằng cách xem xét rằng đỉnh của kim cương và spades giống nhau nhưng được thêm 2 trở lại vào -4cuối j%4*4-4mã Suit là -4 0 4 hoặc 8 trong đó [-4,4]có nghĩa là 4 ký tự bắt đầu ký tự thứ 4 cuối cùng trong chuỗi.

Có lẽ có thể tiết kiệm thêm một vài byte. Phải lặp lại mã cho các nhận dạng người chơi là xấu.


2

PHP, 509 byte

<?$hu='(\/}';$hv=$dv=':\/:';$du=$su=':/\:';$sv='(__)';$cu=':():';$cv='()()';$q="------";$t=$argv[1];foreach([h,d,s,c]as$a)foreach([2,3,4,5,6,7,8,9,T,J,Q,K,A]as$b)$c[]=[$b,$a];shuffle($c);$h=$a=0;for(;$a<$t;$a++)$e[]="Player $a";$f[]=join(" | ",$e);for($g=$argv[2];$g--;){$p=$i=$k=$l=$m=$r=[];$j=$h+$t;for(;$h<$j;$h++){$n=$c[$h][0];$o=$c[$h][1];$p[]=".$q.";$i[]="|$n.--. |";$k[]="| ${$o.u} |";$l[]="| ${$o.v} |";$m[]="| '--'$n|";$r[]="'$q'";}foreach([p,i,k,l,m,r]as$b)$f[]=join(" | ",${$b});}echo join('
',$f);

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

Đây là nỗ lực đầu tiên của tôi tại môn đánh gôn, vì vậy nó có thể được cải thiện rất nhiều. Tôi hình dung mình phải bắt đầu từ đâu đó. :)


1

Java (OpenJDK 8) , 784 835 843 826 815 781 775 byte

String k(String s){return s.replaceAll("...$","\n");}
p->q->{int c=0,l=0,s[]=new int[p*q],i=0,j,t,b;java.util.List e=new java.util.Stack();String v="TJQK",o="",n[]=new String[p*q],x=o;for(;i<p;o+="Player "+i+++" | ",x+=v);o=k(o);for(i=0;i<q;i++){o=k(o+x.replace(v,".------. | "));for(j=0;j<p;j++){do{t=(int)(Math.random()*13)+1;b=(int)(Math.random()*4);}while(e.contains(t+""+v.charAt(b)));e.add(t+""+v.charAt(b));s[c]=b;n[c]=t<2?"A":t<10?""+t:""+v.charAt(t-10);o+="|2.--. | | ".replace("2",n[c++]);}o=k(o);for(j=0;j<p;j++,l++)o+="| "+(s[l]<1?"(\\/)":s[l]<3?":/\\:":":():")+" | | ";o=k(o);for(j=0;j<p;j++)o+="| "+(s[i*p+j]<2?":\\/:":s[i*p+j]<3?"(__)":"()()")+" | | ";o=k(o);for(j=0;j<p;)o+="| '--'2| | ".replace("2",n[i*p+j++]);o=k(k(o)+x.replace(v,"'------' | "));}return o;}

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

Tại sao downvote, nó tuân thủ thông số kỹ thuật


Ngoài ra, bạn nên tạo các phương thức thay thế thay vì tạo Function<String,String>: phương pháp sau rất, rất tốn kém. Cả lúc sáng tạo và khi sử dụng.
Olivier Grégoire

Tôi cho rằng downvote là cho câu trả lời sai lầm ban đầu, nhưng hiện tại có vẻ đúng, vì vậy tôi đã ủng hộ để vô hiệu hóa nó. Một số điều nhỏ để chơi gôn: dấu ngoặc đơn có thể được loại bỏ tại n[c]=t<2?"A":t<10?""+t:""+"TJQK".charAt(t-10); for(j=0;j<p;j++){o+=...;l++;}có thể được for(j=0;j<p;l++,j++)o+=...;; bạn có thể return o;thay vì System.out.print(o);sử dụng một giây Functionthay vì Consumer; ,y=p*qcó thể được gỡ bỏ và bạn có thể sử dụng p*qhai lần trực tiếp thay vì y. Không còn nghi ngờ gì nữa về golf, nhưng tôi không có thời gian để xem xét điều đó ngay bây giờ ..
Kevin Cruijssen

1
@KevinCruijssen Thật ra, không. Tôi đã hạ cấp sau lần chỉnh sửa đầu tiên vì "không cần nỗ lực trong việc chơi gôn" ngoài việc xóa khoảng trắng và sử dụng tên biến 1-char. Tôi đoán là Roberto Graham hoàn toàn nên đọc lại Mẹo chơi golf trong Java . Vấn đề là nó thực sự tuân thủ thông số kỹ thuật của thử thách, nhưng không tuân theo thông số kỹ thuật của thẻ golf-code.
Olivier Grégoire

Làm thế nào tôi biết nó có thể được chơi golf hơn nữa? Tôi đã có khoảng 400 byte khi tôi bỏ cuộc sau khi thấy câu trả lời này và tôi ước tính khoảng 50 byte còn lại để hoàn thành nó. 450 byte so với 850, hầu như không có bất kỳ golf nào tham gia.
Olivier Grégoire

s[l]<2?":/\\:":s[l]<3?":/\\:"có thể s[l]<3?":/\\:"s[i*p+j]<1?":\\/:":s[i*p+j]<2?":\\/:"có thể s[i*p+j]<2?":\\/:". @ OlivierGrégoire Và tôi biết rằng rất có thể nó gần như giảm một nửa, vì vậy tôi hiểu downvote. Nhưng điều này chủ yếu là thiếu kinh nghiệm, và thực sự không đọc tất cả các mẹo nhiều lần. Một số điều trong câu trả lời tôi cũng đã làm trong quá khứ và đây không phải là một thách thức dễ dàng đặc biệt đối với Java. Btw, nếu bạn có câu trả lời 400-450 byte, tại sao bạn không đăng nó dưới dạng câu trả lời riêng biệt (nếu đủ khác biệt đáng kể)? Bạn sẽ có upvote của tôi. ;)
Kevin Cruijssen

1

Python 3, 332 byte

from random import*
P=lambda x:print(*x,sep=' | ')
R=range
def f(p,c):
 P(f"Player {i}"for i in R(p))
 d=[f".------.,|{n}.--. |,| {a[:4]} |,| {a[4:]} |,| '--'{n}|,'------'".split(",")for a,n in sample([*zip(r':/\:(__) (\/):\/: :/\::\/: :():()()'.split()*13,'A23456789TJQK'*4)],p*c)]
 for i in R(c):
  for t in zip(*d[i::c]):
   P(t)
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.