Rod anime un jeu de cartes entre deux joueurs: George et Tim. Actuellement, Tim mélange les cartes. Rod soupçonne que Tim essaie de tricher, il a donc besoin de votre aide pour vérifier que le mélange est juste.
Tim fait le mélange inversé: il coupe une pile de cartes du bas du jeu, puis coupe diverses parties du haut de la pile sur le dessus du jeu, et répète le processus plusieurs fois.
Rod est aux yeux d'aigle et peut voir exactement combien de cartes Tim coupe à chaque fois, mais il ne peut pas calculer et suivre les cartes aussi rapidement que Tim mélange. C'est là que vous intervenez: Rod aimerait que vous écriviez un programme ou une fonction qui obtient les informations de mélange détaillées et détermine si le mélange est juste, faible ou une astuce.
- Si après le mélange, moins de 25 paires de cartes adjacentes restent adjacentes (dans le même ordre), alors le mélange est juste et le jeu peut continuer.
- Si au moins 25 paires (mais pas toutes) de cartes adjacentes restent adjacentes, alors le mélange est faible et Rod attrapera Tim au-dessus de la tête et lui demandera de mélanger un peu plus.
- Si toutes les cartes restent dans la même position à la fin, alors Tim triche évidemment et Rod le frappera avec une grosse truite.
C'est le golf de code, donc le code le plus court gagne.
Contribution:
Vous obtiendrez une série de nombres entre 0 et 52 (tous deux exclusifs) séparés par un espace, sur plusieurs lignes, où chaque ligne représente une ronde de mélange qui commence et se termine avec toutes les cartes empilées ensemble.
Sur chaque ligne, le premier nombre est le nombre de cartes que Tim coupe du bas du jeu, et chaque numéro suivant est un nombre de cartes qu'il laisse tomber de sa main sur le dessus du jeu. S'il reste des cartes après le dernier numéro d'une ligne, vous devez supposer que Tim les place sur le pont.
L'entrée est garantie pour être valide. Il y a au moins une ligne de chiffres et chaque ligne contient au moins 2 chiffres. Le premier nombre sur chaque ligne n'est pas inférieur à la somme de tous les autres nombres sur la même ligne. Une nouvelle ligne de fin est facultative, vous pouvez supposer que l'entrée en a une ou qu'elle n'en a pas.
Production:
Votre programme devrait imprimer / retourner "juste" si le mélange est juste, "faible" si le mélange est faible et "astuce" si Tim garde toutes les cartes dans le même ordre. Une nouvelle ligne de fin est facultative.
Exemple:
Le jeu est supposé avoir 52 cartes, mais à des fins de démonstration, je vais utiliser un jeu plus petit de 10 cartes.
Contribution:
5 3 1
4 2 2
Pont initial, vu du haut: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
en main)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
en main)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
en main)
fin de ligne ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
en main)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
en main)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 paires restent adjacentes:(3 4) (1 2) (5 6) (6 7)
Cas de test:
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
Production: 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
Production: 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
Production: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Production: weak
26 13
26 13
26 13
26 13
Production: 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
Production: 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
Production: 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
Production: fair
Exigences:
- Si vous écrivez une fonction, elle peut soit lire à partir de l'entrée standard, soit recevoir l'entrée en tant que paramètre de chaîne unique. En outre, la fonction peut imprimer la sortie ou la renvoyer.
- Le programme doit être exécutable sous Linux en utilisant un logiciel disponible gratuitement.
- Le code source doit utiliser uniquement des caractères ASCII.
- Pas de failles standard.