Rod está moderando um jogo de cartas entre dois jogadores: George e Tim. Atualmente, Tim está baralhando as cartas. Rod suspeita que Tim está tentando trapacear, então ele precisa de sua ajuda para verificar se o embaralhamento é justo.
Tim está fazendo o barulho excessivo: ele corta uma pilha de cartas do fundo do baralho, corta várias partes do topo da pilha para o topo do baralho e repete o processo algumas vezes.
Rod tem olhos de águia e pode ver exatamente quantas cartas Tim está cortando a cada vez, no entanto, ele não pode calcular e acompanhar as cartas tão rápido quanto Tim está embaralhando. É aqui que você entra: Rod deseja que você escreva um programa ou função que obtenha as informações detalhadas de embaralhamento e determine se o embaralhamento é justo, fraco ou um truque.
- Se após o embaralhamento, menos de 25 pares de cartas adjacentes permanecem adjacentes (na mesma ordem), o embaralhamento é justo e o jogo pode continuar.
- Se pelo menos 25 pares (mas não todos) de cartas adjacentes permanecerem adjacentes, o baralhamento será fraco e Rod dará um tapa na cabeça de Tim e pedirá que ele embaralhe um pouco mais.
- Se todas as cartas permanecerem na mesma posição no final, Tim está obviamente trapaceando e Rod o golpeará com uma grande truta.
Isso é código de golfe, então o código mais curto vence.
Entrada:
Você receberá uma série de números entre 0 e 52 (ambos exclusivos) separados por espaço, em várias linhas, onde cada linha representa uma rodada de embaralhamento que começa e termina com todas as cartas empilhadas.
Em cada linha, o primeiro número é o número de cartas que Tim corta da parte inferior do baralho, e cada número subseqüente é um número de cartas que ele solta da mão para o topo do baralho. Se alguma carta permanecer após o último número de uma linha, você deve assumir que Tim as coloca no topo do baralho.
A entrada é garantida como válida. Há pelo menos uma linha de números e cada linha contém pelo menos 2 números. O primeiro número em cada linha não é menor que a soma de todos os outros números na mesma linha. Uma nova linha à direita é opcional, você pode assumir que a entrada possui uma ou que não possui.
Resultado:
Seu programa deve imprimir / retornar "razoável" se o shuffle for justo, "fraco" se o shuffle for fraco e "truque" se Tim estiver mantendo todas as cartas na mesma ordem. Uma nova linha à direita é opcional.
Exemplo:
Presume-se que o baralho tenha 52 cartas, mas, para fins de demonstração, usarei um baralho menor de 10 cartas.
Entrada:
5 3 1
4 2 2
Convés inicial, visto de cima: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
na mão)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
na mão)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
na mão)
final da linha ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
na mão)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
na mão)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 pares permanecem adjacentes:(3 4) (1 2) (5 6) (6 7)
Casos de teste:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Resultado: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Resultado: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Resultado: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Resultado: weak
26 13
26 13
26 13
26 13
Resultado: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Resultado: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Resultado: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Resultado: fair
Requisitos:
- Se você escrever uma função, ela poderá ler a partir da entrada padrão ou receber a entrada como um único parâmetro de sequência. Além disso, a função pode imprimir a saída ou devolvê-la.
- O programa deve ser executável no Linux usando software disponível gratuitamente.
- O código fonte deve usar apenas caracteres ASCII.
- Sem brechas padrão.
fonte
Respostas:
Pitão, 62 bytes
Demonstração.
fonte
CJam,
7675 bytesExperimente on-line no intérprete CJam .
fonte
JavaScript,
292289 bytesProvavelmente, isso poderia extrair mais bytes, mas é uma primeira passagem rápida por enquanto:
EDIT: economizou 3 bytes reutilizando o valor do
i
loop de construção de baralho ao contar o número de cartões adjacentes.fonte