Para os fins desta pergunta, um baralho de cartas é formatado da seguinte maneira:
[
"AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS",
"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",
"AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC",
"J", "J"
]
Os cartões são sempre formatados como valor, seguidos por naipes. Por exemplo, AS
é o ás de espadas. Os dois J's únicos são Jokers. Queremos embaralhar este baralho de cartas, mas o baralhamento deve ser Superb ™.
Um Superb Shuffle ™ é aquele em que:
- Não há duas cartas (exceto Jokers) do mesmo naipe adjacentes.
- Nenhum cartão (exceto Jokers) é adjacente a um mesmo valor.
- Nenhuma carta (exceto Jokers) é adjacente a um valor adjacente (um mais alto ou outro mais baixo nesta ordem, A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A. Observe que o Ace não pode ser adjacente a um 2 ou a um rei).
- Os curingas podem estar em qualquer posição.
- A definição de um Superb Shuffle ™ não exige que os cartões estejam em uma ordem diferente cada vez que são embaralhados. O que não é muito bom, mas é o Superb ™.
Porque isso é Superb ™.
Um exemplo pode ser:
[
"AS", "5D", "9H", "KC", "2D", "6H", "10C", "QS", "3H", "7C", "9S",
"KD", "4C", "6S", "10D", "AC", "3S", "7D", "JH", "J", "4D", "8H",
"QC", "AD", "5H", "9C", "JS", "2H", "6C", "8S", "QD", "3C", "5S",
"9D", "KH", "2S", "6D", "10H", "J", "3D", "7H", "JC", "KS", "4H",
"8C", "10S", "AH", "5C", "7S", "JD", "2C", "4S", "8D", "QH"
]
O desafio:
- Escreva um código para executar um excelente shuffle
- Use qualquer idioma.
- A entrada pode ser quer :
- um baralho de cartas como descrito acima na mesma ordem , como uma matriz ou outra estrutura de lista.
- Nenhuma entrada (o código gera um baralho de cartas nessa ordem)
- A saída deve ser um baralho completo de cartas em um Superb Shuffle ™, conforme descrito acima.
- Tente executar seu Superb Shuffle ™ no menor número de bytes.
- É preferível um link para um intérprete online, como o Try It Online , mas opcional.
Baralhar feliz!
T
vez de10
?Respostas:
Japonês,
654 bytesDivide a matriz de entrada em sub-matrizes de cada 16º elemento e nivela.
Tente
fonte
Ruby , 31 bytes
Experimente online!
Explicação:
Estou pegando uma carta, depois pulo as próximas 16 e começo da primeira carta quando chego à última carta do baralho. 17 e 54 são mutuamente privilegiadas, por isso tenho certeza de escolher todas as cartas.
É garantido que a 17ª posição é um naipe diferente e a diferença de valor é pelo menos 2: a 13ª (ou 15ª) carta tem o mesmo valor e uma naipe diferente; portanto, saltando outras 4 (ou 2), o valor está correto .
fonte
Python 3 , 21 bytes
Experimente online!
Explicação:
A mesma idéia da minha resposta Ruby, mas ainda mais curta no Python: eu uso 17 decks e escolho todas as 17 cartas.
fonte
JavaScript, 35 bytes
Experimente online!
Tomando uma matriz de baralho como entrada e substituindo cada valor ímpar por outra carta que fica a "20 cartas" no baralho.
fonte
Java 10,
7265 bytesSemelhante ao @GB resposta Ruby do , mas usando
i*7%54
na matriz de resultados, em vez dei*17%54
na matriz de entrada para salvar um byte.Experimente online.
Explicação:
fonte
AS, 6S, JS, 3D, 8D, KD,
.Perl 6 ,
21 2018 bytesObrigado a Brad Gilbert b2gills por -2 bytes
Experimente online!
Mais uma porta da resposta da GB .
Observe que, embora a variável globalNo entanto,$!
não seja redefinida entre as funções, o valor não importa, pois qualquer ordem da saída é válida.$
é redefinido.Explicação:
fonte
$
quanto com$!
ou$/
. Além disso, se você usou em$_
vez de@_
você poderia iniciá-lo em.[…]
vez de@_[…]
salvar outro byte.05AB1E ,
975 bytesPorta da resposta Ruby do @GB , por isso não deixe de vota-lo!
-2 bytes imprimindo cada cartão com um delimitador de nova linha em vez de agrupá-lo em uma lista de resultados
-2 bytes graças a @ Mr.Xcoder
Experimente online.
Explicação:
fonte
ā17*è
deve salvar mais 2 bytesJavaScript, 27
Outro baseado na resposta ruby
Editado em uma redução óbvia
fonte
T-SQL, 31 bytes
Se você não se importa com uma coluna extra na saída, posso reduzi-la para 29 bytes :
Para que você possa verificar se minha saída é "Soberba", aqui está o baralho que ela produz:
(Gerado usando a nova adição do SQL 2017
STRING_AGG
):A parte difícil para mim não foi o código de seleção, estava preenchendo a tabela de entrada (que é permitida para SQL de acordo com nossas regras de IO ).
Como o SQL é inerentemente desordenado (ele só garante uma certa ordem se você incluir uma
ORDER BY
cláusula explícita ), tive que incluir essa ordem original como um campo i na tabela de entrada t . Isso também significa que eu posso usá-lo para classificar, usando o mesmo processo fator / mod "relativamente primo" que todo mundo está usando. Eu achei quei*7%54
funcionou tão bem quantoi*17%54
.Aqui estão os comandos para configurar e preencher a tabela de entrada t , com base na minha solução para esta pergunta relacionada :
fonte
i
entrada não seria considerada adicional aqui?Geléia ,
54 bytesExperimente online!
Acontece
quetodo mundo, exceto o cara aleatório , economiza um byte :(Crédito ao GB pelo método .
Do jeito que eu fui ...
Experimente online!
Quão?
Conserte todas as outras cartas e intercale-a com uma rotação do baralho deixada em 20 lugares (18 e 22 lugares também funcionam; além disso, também o sentido de rotação e a fixação de cartões pares ou ímpares)
Ou seja (usando
T
para10
erj
ebj
para osJ
):fonte
PowerShell 3.0,
3026 bytes-4 graças ao
código Mazzy Old em 30 bytes
Outra porta do método da GB.
fonte
$args[(0..53|%{$_*17%54})]
.The input can be either:... in the same order, as *an array*
.$args
é uma matriz. e você pode usar um splatting . por exemplo$a=@("AS", ..., "J"); &{} @a
. Tente. :)&{
e}
. Você pode salvarparam($d)0..53|%{$d[$_*17%54]}
em um arquivo. e chame esse arquivo sem&{...}
Carvão , 8 bytes
Experimente online! Link é a versão detalhada do código. Outra porta da resposta Ruby do @ GB. Explicação:
fonte
Vermelho , 44 bytes
Experimente online!
Outra interpetação do código da GB. Anexo 16 cópias do baralho e extraio cada 17ª carta.
fonte