O truque de mágica de 5 cartas envolve um mágico cujo assistente lhes dá 4 cartas mostradas e uma oculta, nesta ordem, e o mago deve adivinhar a que está oculta.
AVISO: Solução abaixo! Saia agora ou seja mimado com isso.
A solução
O truque aqui é que as cinco cartas são dadas em uma ordem específica !
são os 5 cartões na ordem especificada.
é o número do cartão de em(ordem numérica).
, onde é um número do cartão e é um número inteiro, é igual ao número do cartão passos à direita de em , quebrando para o início, se necessário.
é o naipe de em (ordem do naipe).
, onde é um número do cartão e é um terno, denota o cartão com o número do cartão de e terno .
, onde e são os cartões, é verdadeiro se 's terno é para a esquerda de ' s terno em , ou seus ternos são iguais e 's número do cartão está à esquerda de ' s número de cartão em .
, onde e são os cartões, é verdade se é falsa.
, onde , e são os cartões, é o índice de permutação de esta distribuição deles, especificada pela tabela abaixo:
A solução para o truque de mágica de 5 cartas é o problema é:
O desafio
Por enquanto, tudo bem. No entanto, o cálculo especificado acima já é solicitado aqui . Em vez disso, seu desafio é, dadas as 5 cartas em nenhuma ordem específica, solicitá-las corretamente. Isso significa que os quatro primeiros cartões na saída representarão o quinto. Em outras palavras, seja o assistente. Requisitos:
- .
- (isto é, este tem de ser possível).
Exemplo
Vamos considerar o conjunto 7H,2D,6D,5C,6C
. Primeiro de tudo, pegamos os 25 pares:
7H,7H 7H,2D 7H,6D 7H,5C 7H,6C
2D,7H 2D,2D 2D,6D 2D,5C 2D,6C
6D,7H 6D,2D 6D,6D 6D,5C 6D,6C
5C,7H 5C,2D 5C,6D 5C,5C 5C,6C
6C,7H 6C,2D 6C,6D 6C,5C 6C,6C
Então, obviamente removemos os 5 pares que contêm a mesma carta duas vezes, eles não existem em um único baralho:
7H,2D 7H,6D 7H,5C 7H,6C
2D,7H 2D,6D 2D,5C 2D,6C
6D,7H 6D,2D 6D,5C 6D,6C
5C,7H 5C,2D 5C,6D 5C,6C
6C,7H 6C,2D 6C,6D 6C,5C
Posteriormente, uma vez que os naipes devem ser os mesmos, diferentes naipes em um par são proibidos:
2D, 6D 6D, 2D 5C, 6C 6C, 5C
Finalmente, verificamos se é possível passar da primeira carta para a segunda adicionando no máximo 6 e removendo metade dos pares restantes:
2D, 6D 5C, 6C
Agora temos os pares válidos: 2D,6D
e 5C,6C
. A primeira carta de cada par é a carta 1, enquanto a última é a carta 5.
Nós vamos 5C,6C
aqui com facilidade. O conjunto inteiro está 7H,2D,6D,5C,6C
removendo as duas cartas do par que escolhemos 7H,2D,6D
. Esses cartões representarão 6 - 5 = 1
, portanto, temos que solicitá-los como "min, médio, max". 7H > 2D < 6D < 7H
, ou simplesmente 2D < 6D < 7H
, agora temos2D,6D,7H
.
O último passo é juntar tudo isso, então nosso resultado será 5C,2D,6D,7H,6C
.
Esclarecimentos
- Você pode usar em
10
vez deT
. - Você pode usar um de
♠♥♦♣
,♤♡♢♧
ou em♠♡♢♣
vez deCDHS
, respectivamente. - Este é o código-golfe , o código mais curto vence.
Casos de teste
Você pode gerar uma ou mais das soluções válidas incluídas para cada caso de teste.
8S,TD,5C,QS,TS -> 8S,5C,QS,TD,TS
... 8S,TD,TS,5C,QS
... TS,5C,8S,TD,QS
JD,KH,4S,9D,8S -> 9D,KH,8S,4S,JD
... 4S,JD,KH,9D,8S
4H,4D,TH,KH,2C -> 4H,KH,4D,2C,TH
... TH,4D,2C,4H,KH
... KH,4D,TH,2C,4H
3S,KS,8S,KH,9H -> 9H,8S,KS,3S,KH
... 3S,KS,9H,KH,8S
... 8S,3S,9H,KH,KS
... KS,KH,9H,8S,3S
KH,TS,3C,7H,JD -> 7H,TS,JD,3C,KH
4C,KC,TD,JD,QS -> KC,JD,QS,TD,4C
... TD,4C,KC,QS,JD
AC,5H,8D,6D,8S -> 6D,AC,8S,5H,8D
AS,TC,3S,2H,9C -> 9C,2H,AS,3S,TC
... AS,9C,2H,TC,3S
4C,JS,AS,8H,JC -> JC,JS,AS,8H,4C
... JS,JC,4C,8H,AS
4H,QS,TH,QC,AC -> QC,4H,QS,TH,AC
... 4H,QS,QC,AC,TH