O primeiro truque de cartas mágicas que aprendi quando criança foi o seguinte:
- Tenha 1 baralho de cartas em que o padrão na parte de trás não seja verticalmente simétrico.
- Organize todos os cartões voltados para uma direção.
- Peça a alguém que "escolha um cartão, qualquer cartão, memorize e devolva para você".
- Prossiga para colocá-lo no convés (na direção errada).
- Embaralhe vigorosamente, dando a ilusão de que você não saberá onde está o cartão deles.
- Produza seu cartão para sua surpresa.
Esse truque é obviamente um pouco sem brilho na natureza hoje em dia, no entanto, é um bom desafio. Escreva um programa que, quando não recebe nenhuma entrada, produz um baralho aleatoriamente aleatório com um dos cartões, escolhido aleatoriamente, invertido. No entanto, quando a entrada é um baralho de cartas com uma carta invertida, você deve imprimir a carta invertida (na ordem correta).
O baralho de cartas
Um baralho de cartas é definido como:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
Um cartão é definido como seu número e, em seguida, a primeira letra do naipe. O verso de uma carta é exatamente o oposto, a primeira letra de seu naipe seguida de um número.
O cartão desenhado
Por exemplo, se a carta escolhida aleatoriamente para reverter fosse a 4 of Clubs (4C)
, teríamos (sem embaralhar, obviamente):
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
The Shuffling
Depois de embaralhar:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Esta é uma saída válida, dada a entrada vazia.
The Deck Input
No entanto, inversamente, quando o nosso programa recebe a saída acima como entrada, deve produzir 4C
. Ou seja, para uma entrada de:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Você percorre até encontrar o cartão invertido e o devolve, invertido de volta ao estado normal. Então, aqui encontraríamos C4
, saberíamos que C não é um número e devolveríamos como 4C
, o que está correto.
Regras
- Você não pode carregar o deck de nenhuma fonte externa.
- Uma entrada vazia deve resultar em um baralho aleatoriamente embaralhado com 1 cartão aleatório invertido.
- Um baralho de cartas com 1 carta invertida como entrada deve resultar na carta invertida.
- Quaisquer outras entradas podem resultar em lhamas explosivos montando segways através de um tubo futurista.
- Ou qualquer outra coisa, para esse assunto.
- A carta escolhida e a ordem de embaralhamento devem ser uniformemente aleatórias.
- Ou seja, todas as cartas têm chances iguais de serem selecionadas para serem revertidas.
- Ou seja, todas as combinações de cartas têm a mesma chance de aparecer.
- Você pode usar
SHCD
oushcd
para os fatos, mas seja consistente:- Se você escolher maiúsculas (
SHCD
), também deverá usarTJQKA
. - Se você escolher ternos minúsculos (
shcd
), também deverá usartjqka
.
- Se você escolher maiúsculas (
- Isso é código-golfe , o vencedor é o menor bytes.