Embaralhe e negocie!

14

É sexta-feira e eu estou cansado, então vamos fazer um rápido! Não aceite nenhuma entrada, no entanto, você deve enviar todas as treze cartas numeradas diferentes em um baralho de cartas padrão. Você deve imprimir 2 através de Ace (agnóstico de naipe).

Cada cartão tem uma parte superior que é indicada com um espaço e dez _e outro espaço .

A segunda linha do topo é indicada com um /e dez espaços e um\

A terceira linha é igual a todas as linhas do meio que excedem o (s) caractere (s) indicando que o valor do cartão aparece dois espaços à direita (se estiver no topo) ou dois espaços à esquerda (se estiver no fundo) da borda.

Cada linha do meio é um espaço simples |e dez e mais um|

Finalmente, a última linha é um \e dez _e, finalmente, um/

Se o valor for de vários dígitos, a largura total pela altura do cartão não deve mudar. (ou seja, os 10 não ampliarão os lados do cartão)

Rei Exemplo:

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

9 Exemplo

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

10 Exemplo

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

Produza-os na ordem do menor para o maior (ases são altos!).

Isso é código-golfe, então o código mais curto vence.

Divirta-se e tenha um fim de semana divertido!

jacksonecac
fonte
2
Podemos ter um exemplo 10 para ver se os 10 inferiores estão na borda direita ou não?
Sunny Pun
@SunnyPun por que, é claro
jacksonecac
1
Os cartões devem ser organizados verticalmente, horizontalmente ou isso importa?
21316 DLosc
Escolha da esquerda para a direita ou de cima para baixo.
jacksonecac

Respostas:

10

PowerShell v2 +, 120 116 114 108 bytes

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

Constrói um intervalo 2..10e concatenação de matriz com char-array JQKA. Alimenta isso em um loop |%{...}. A cada iteração, definimos $zigual a um número apropriado de espaços (com base no fato de estarmos no card 10ou não), definimos $xcomo 10sublinhados e definimos $ycomo 10espaços.

Então, começamos nossos canais. Vamos alavancar o padrão Write-Outputpara inserir uma nova linha entre os elementos do pipeline, portanto, precisamos colocar o material no pipeline. Observe que na maioria dos lugares, estamos usando uma nova linha literal em vez de fechar e reabrir nossas strings para economizar alguns bytes.

O primeiro é apenas $xcom dois espaços, depois $ycom duas barras, depois | $_$z|"o tubo, um espaço, o número apropriado de espaços e outro tubo. Isso forma a parte superior dos cartões até e incluindo a linha de valor.

Temos que ponto e vírgula aqui, já que o próximo usa uma matriz. Ele ,"|$y|"*5constrói uma matriz de cadeias, com o operador de vírgula, do tubo com espaços - na saída, cada elemento dessa matriz recebe uma nova linha gratuitamente.

Em seguida, a "|$z$_ |marcação para o valor inferior e, finalmente, $xcom barras para a parte inferior do cartão.

Snippet de saída

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
fonte
1
É um dia estranho quando o PowerShell está ganhando! Bom trabalho :)
Kade
@Shebang Thanks! Sub-100 é tão perto, mas não tenho certeza se posso fazê-lo.
AdmBorkBork
[aperta o punho] você está me batendo em 3 bytes. TRÊS BYTES !!
Gabriel Benamy 22/10
6

Python, 161 160 156 156 149 bytes

Um byte salvo por Shebang

Isso poderia usar algum trabalho, mas aqui está:

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

Explicação

Fazemos uma lista de todas as classificações em ordem usando map(str,range(2,11). Depois, percorremos cada uma das fileiras e fazemos um cartão.

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

Nós fazemos o topo do cartão:

o+v+"\n"

Então a classificação vai à esquerda:

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

Usamos .ljustporque 10tem dois longos e todos os outros são um de largura.

Em seguida, imprimimos as 5 linhas no meio:

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

e a classificação inferior:

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

Finalmente, imprimimos a parte inferior do cartão:

"\\"+v+"/"
Post Rock Garf Hunter
fonte
2
Holy Moly que foi rápido
jacksonecac
Sua contagem de bytes parece desativada (conto 155). No entanto, se você criar uma variável v="_"*10e substituir essas instâncias, economizará outro byte!
Kade
5

JavaScript (ES6), 151 bytes

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

Neil
fonte
@ Emigna Obrigado, eu esqueci na minha outra resposta também.
Neil
4

Perl, 128 117 111 bytes

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

As 6 novas linhas literais economizam 1 byte cada. Isso não pode ser executado diretamente a partir da linha de comando devido às aspas simples nas linhas 2 e 4 para salvar 1 byte, sem a necessidade de escapar uma barra invertida.

Edit: Eu coloquei Ace no começo, mas deveria estar no final. Não altera a contagem de bytes.

Editar 2: -11 bytes: Livre-se de algumas declarações desnecessárias e adicione outra nova linha literal. Agora tudo é produzido através de um único printf.

Edite 3: -5 bytes graças a @Ton Hospel. Mas, por alguma razão, estou obtendo 111 bytes em vez de 112 em casa quando comparado ao trabalho, portanto, vou com a contagem de bytes que meu computador doméstico está me fornecendo.

Gabriel Benamy
fonte
Você não precisa citar literais que são nomes de símbolos válidos, portanto, em _ x10vez de "_"x10. Também qwquase nunca é útil. no golfe. Use não cotadas J,Q,K,Aem vez (mesmo deixando de fora o ())
Ton Hospel
Eu recebo um erro intérprete quando eu remover as aspas em torno do sublinhado: Can't locate object method "_" via package "x10" (perhaps you forgot to load "x10"?) at shuffle.pl line 1. Não sei por que, mas eu não vou lutar o intérprete :(
Gabriel Benamy
1
Um pouco mais jogado (substitua \npela nova linha real):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
fonte
1
Seu último ifpode ser substituído por $k>9&&$c[29]=$c[113]=0&$c[112]=1;, para salvar alguns bytes. Além disso, o Notepad ++ está dizendo que seu código tem, na verdade, 241 bytes. Eu sei que 1 desses bytes é da nova linha. Mas o outro é um mistério para mim.
Ismael Miguel
3

///, 182 180 bytes

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

Experimente online!

-2 bytes graças a m-chrzan

acrólito
fonte
Você pode salvar dois bytes +substituindo apenas 5_ dois +se tiver apenas +um agora.
m-Chrzan
3

Python 3.5, 110 bytes

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

Impressões

  • As duas principais linhas ' %s\n/%%11s\n'%u%'\\'onde uestá'_'*10
  • As 7 linhas do meio '| %-2s %2s |\n', cada uma com dois slots de formatação de string. O primeiro e o último são preenchidos com o valor do cartão e o restante com espaços sem efeito
  • A linha inferior '\% s /'% u

Os novos recursos de descompactação do Python 3.5 são usados ​​em dois lugares. A lista de etiquetas[*range(2,11),*'JQKA'] descompacta os números e as letras em uma lista. E a tupla (c,*' '*12,c)descompacta doze entradas de espaços no centro.

xnor
fonte
2

Scala, 161 bytes

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
fonte
2

Lote, 236 bytes

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

Tentei jogar isso de três maneiras diferentes, mas acabei com a mesma contagem de bytes cada vez ...

Neil
fonte
2

05AB1E , 71 70 68 66 65 64 bytes

Usa a codificação CP-1252 .

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

Link ligeiramente modificado como não funciona comÿ no ATM de TIO.

Experimente online!

Explicação

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

Em seguida, passamos o loop sobre cada valor de cartão com v

ð'_Tשðconstrói " __________ "
ðT×…/ÿ\constrói "/ \"
9yg-ð×y"| ÿÿ|"Âas 2 linhas com valores de cartão (a segunda linha é a primeira invertida)
ðT×…|ÿ|5× constrói 5 linhas do formulário"| |"

Então nós

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

®…\ÿ/ constrói a linha inferior

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

V , 87 bytes

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

Experimente online!

Como isso contém alguns imprimíveis, aqui está um 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
fonte
2

PHP, 135 131 158 134 bytes

Felizmente, posso encontrar uma maneira de encurtar isso um pouco mais.

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

Isso aproveita printfa repetição de vários caracteres e formata tudo muito bem.


Versão antiga:

Não é exatamente um pedaço de beleza, mas funciona!

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

Agradeço a Jörg Hülsermann por detectar um bug e por me deixar usar parte de seu código, que o reduziu em 4 bytes! E por encontrar um bug fatal.

Ismael Miguel
fonte
Os 10 parecem estranhos. Eu acredito que você deve fazer um trabalho extra
Jörg Hülsermann 22/10
@ JörgHülsermann Você está certo. O 10está com erros. Está tudo bem se eu usar sua matriz? Usar em [2,3,4,5,6,7,8,9,10,J,Q,K,A]vez dessa divisão economiza 4 bytes. Se você não autorizar, eu entenderei.
Ismael Miguel
Pegue. Você fez o melhor caminho em PHP e eu apoio tudo o que você precisa.
Jörg Hülsermann 22/10
@ JörgHülsermann Obrigado. Estou olhando para a sua resposta e estou encontrando alguns lugares onde cortar alguns bytes.
Ismael Miguel
Em vez de $C$S $C".($P=substr($S,$C>9))."lidar com os espaços com valor 10 e, em vez de $S$Cvocê precisa, então$P$C
Jörg Hülsermann
1

Ruby, 115 bytes

Uso bastante direto de printf.

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

Raquete 327 bytes

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

Teste:

(main)

Resultado:

 __________ 
/          \
| 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 |
\__________/
rnso
fonte
1

Java 7, 287 bytes

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, isso é feio e não muito eficiente, mas funciona .. Isso 10 como um caso especial, com um espaço antes na parte superior e depois na posição inferior realmente estraga tudo.

Ungolfed & código de teste:

Experimente aqui.

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

Resultado:

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

R, 175 bytes

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

Uma resposta bastante competitiva em R desta vez para um desafio de arte ascii e definitivamente deve ser jogável.

Experimente no R-fiddle

Ungolfed e explicou

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
}

O aspecto mais interessante em que alguns bytes são salvos é a atribuição da terceira linha:

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

Como existem 8espaços no total entre o personagem que indica o valor da carta e o final |(exceto 10), podemos repetir9 espaços e subtrair o número de caracteres no cartão atualmente impresso.

Armazenando cada caractere na 3rdlinha como seu próprio elemento no vetor string r, podemos reverter o vetor e reutilizá-lo na 9thlinha.

Billywob
fonte
1

C #, 385 bytes

Meu primeiro desafio de arte ASCII - foi divertido!

Golfe:

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

Na verdade , 91 bytes

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

Experimente online!

Explicação

Parte 1: configurando a lista de valores de face:

"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

Parte 2: criando os cartões (nova linha substituída por \npara facilitar a leitura):

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