Explicação
Um baralhamento perfeito é onde um baralho de cartas é dividido exatamente ao meio e as cartas de cada pilha são intercaladas alternadamente. Os cartões inferiores originais e o cartão superior original devem ser preservados após um embaralhamento perfeito.
Depois de 8 baralhos perfeitos, um baralho de 52 cartas retorna ao seu pedido original.
Desafio
Escreva um programa que exiba o estado de um baralho de cartas, durante 8 baralhões perfeitos consecutivos. Você pode usar qualquer representação legível por humanos de um baralho, desde que ele mostre o número e o naipe de cada carta no baralho em ordem seqüencial. Ele deve exibir uma representação de todos os cartões, para todos os nove estados.
Isso é código de golfe , então a solução mais curta vence.
Saída de exemplo
Aqui está um exemplo de saída produzido por este exemplo de implementação em Javascript
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
AS,7D,AC,7H,AD,8S,AH,8C,2S,8D,2C,8H,2D,9S,2H,9C,3S,9D,3C,9H,3D,10S,3H,10C,4S,10D,4C,10H,4D,JS,4H,JC,5S,JD,5C,JH,5D,QS,5H,QC,6S,QD,6C,QH,6D,KS,6H,KC,7S,KD,7C,KH
AS,4C,7D,10H,AC,4D,7H,JS,AD,4H,8S,JC,AH,5S,8C,JD,2S,5C,8D,JH,2C,5D,8H,QS,2D,5H,9S,QC,2H,6S,9C,QD,3S,6C,9D,QH,3C,6D,9H,KS,3D,6H,10S,KC,3H,7S,10C,KD,4S,7C,10D,KH
AS,9S,4C,QC,7D,2H,10H,6S,AC,9C,4D,QD,7H,3S,JS,6C,AD,9D,4H,QH,8S,3C,JC,6D,AH,9H,5S,KS,8C,3D,JD,6H,2S,10S,5C,KC,8D,3H,JH,7S,2C,10C,5D,KD,8H,4S,QS,7C,2D,10D,5H,KH
AS,5S,9S,KS,4C,8C,QC,3D,7D,JD,2H,6H,10H,2S,6S,10S,AC,5C,9C,KC,4D,8D,QD,3H,7H,JH,3S,7S,JS,2C,6C,10C,AD,5D,9D,KD,4H,8H,QH,4S,8S,QS,3C,7C,JC,2D,6D,10D,AH,5H,9H,KH
AS,3S,5S,7S,9S,JS,KS,2C,4C,6C,8C,10C,QC,AD,3D,5D,7D,9D,JD,KD,2H,4H,6H,8H,10H,QH,2S,4S,6S,8S,10S,QS,AC,3C,5C,7C,9C,JC,KC,2D,4D,6D,8D,10D,QD,AH,3H,5H,7H,9H,JH,KH
AS,2S,3S,4S,5S,6S,7S,8S,9S,10S,JS,QS,KS,AC,2C,3C,4C,5C,6C,7C,8C,9C,10C,JC,QC,KC,AD,2D,3D,4D,5D,6D,7D,8D,9D,10D,JD,QD,KD,AH,2H,3H,4H,5H,6H,7H,8H,9H,10H,JH,QH,KH
AS,AD,2S,2D,3S,3D,4S,4D,5S,5D,6S,6D,7S,7D,8S,8D,9S,9D,10S,10D,JS,JD,QS,QD,KS,KD,AC,AH,2C,2H,3C,3H,4C,4H,5C,5H,6C,6H,7C,7H,8C,8H,9C,9H,10C,10H,JC,JH,QC,QH,KC,KH
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
fonte
Respostas:
J,
66655452504743 caracteresResultado:
Estou sendo forçado mais e mais nos tutoriais e manuais de referência de J para ficar à frente aqui. : -S
fonte
AS
e o último é o tempo todoKH
.Haskell, 103
Resultado:
Não sei se há algum problema UTF-8 por aqui, não deveria ... este é um despejo hexadecimal do programa
e da primeira linha de saída
(as cartas de jogar unicode )
fonte
Python 2, 79 caracteres
A saída é um pouco feia, mas acredito que deve contar.
fonte
product
!Python2, 104
Isso é semelhante à solução do Ev_Genus. Eu coloquei o terno antes da classificação porque me permite salvar um personagem.
Resultado
fonte
[r,'10'][r>"Q"]
é bacana. Não acho que você precise de reticências em torno do10
. Citações seria bom.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
A saída é de cima para baixo, em vez de esquerda-direita (mas ainda é legível por humanos, acho que não é contra as regras).
Resultado:
fonte
K,
555351Raspou 2 caracteres mudando da representação do símbolo para a string
resultado
fonte
(2;26)
para2 26
Ruby 1.9 (
9593(87)Resultado:
fonte
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
vez deslice!
e salvar 6 caracteres.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Gera linhas como na tarefa.
Formato nativo 151
A saída é como na versão Ruby.
fonte
import
e*
: ideone.com/kQTbsGolfScript,
515046 caracteresEste código GolfScript produz a seguinte saída (veja aqui ):
fonte
{...}%
por4*
.Perl, 91 caracteres
Alguma sugestão sobre uma maneira mais concisa de construir o deck inicial? Minha abordagem usa 2 substituições para criar
$_
e, em seguida, uma correspondência global no contexto da lista para inicializar@_
.O embaralhamento é então feito repetidamente
splice
ing@_
para@a
e intercalação as duas listas commap
volta em@_
.fonte
Mathematica
13112912011410086 caracteresCom a ajuda de Mr.Wizard:
Resultado:
fonte
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 bytes
Como o CJam é mais recente que a pergunta, essa resposta não concorre com a marca de seleção verde, mas achei que seria um bom problema para tentar no CJam.
Teste aqui.
Imprime a saída como
Explicação
fonte
A,2>
para obter os números, bom pensamento!R , 97 bytes
Economizou alguns bytes com um conveniente deck fora de ordem
Experimente online!
fonte
/// , 753 bytes
Experimente online!
Usa o exemplo de saída (é bastante adequado para essa finalidade) sem os espaços à direita.
fonte
05AB1E , 24 bytes
Usa cartões em minúsculas para economizar 2 bytes com compactação, pois qualquer saída legível por humanos é permitida.
O baralho inicial / final é:
Experimente on-line (PS: usa o TIO herdado porque é muito mais rápido. No entanto, todos os componentes internos usados nesta resposta são os mesmos nas versões herdadas do Python e do Elixir, que reescrevem 05AB1E.)
Explicação:
Consulte esta dica 05AB1E (seção Como compactar cadeias de caracteres que não fazem parte do dicionário? ) Para entender por que
.•-Ÿ•
é"ajqk"
e.•ôì•
é"cdhs"
.fonte
Japonês , 31 bytes
Tente!
Embora Japt tenha uma função "intercalar duas listas" razoável, ele não possui uma ótima opção "separar em metades". Em vez disso, optei por embaralhar um baralho e apenas exibir essas etapas ao contrário.
Explicação:
Eu poderia salvar 2 bytes se pudesse usar 1 para ases em vez de A, mas nenhuma das outras respostas fez isso
fonte
Perl 6 , 69 bytes
Experimente online!
{ .say; .[flat ^26 Z 26..*] }
é uma função anônima que imprime sua lista de argumentos e retorna um shuffle perfeito dessa listaxx 9
produz uma lista contendo nove cópias dessa função anônima[o]
reduz essa lista com o operador de composição da funçãoo
, produzindo uma função que chama a função anônima original nove vezes, passando a lista aleatória para baixo em cada nível«A {2..10} J Q K»
é uma lista das classificações,<S C D H>
é uma lista dos fatos eX~
produz o produto cruzado dessas listas com o operador de concatenação de sequência~
.fonte