Récemment, j'ai posté une question sur les jeux Diffy qui est restée sans réponse. C'est très bien, la question est vraiment difficile, mais je voudrais poser une question plus facile sur les jeux Diffy afin que nous puissions faire bouger les choses.
Comment fonctionne Diffy
Copié à partir de Find Diffy Games
Le jeu Diffy fonctionne comme suit: Vous commencez avec une liste d'entiers non négatifs, dans cet exemple, nous utiliserons
3 4 5 8
Ensuite, vous prenez la différence absolue entre les nombres adjacents
(8) 3 4 5 8
5 1 1 3
Ensuite, vous répétez. Vous répétez jusqu'à ce que vous réalisiez que vous êtes entré dans une boucle. Et puis généralement le jeu recommence depuis le début.
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
La plupart des jeux se terminent par une chaîne de tous les zéros, ce qui est considéré comme un état de perte, mais quelques rares jeux sont bloqués dans des boucles plus grandes.
Tâche
Étant donné l'état de départ d'un jeu Diffy, déterminez si le jeu atteint ou non un état de tous les zéros. Vous devez générer une valeur Truthy ou Falsy pour chacun des deux états. Ce qui correspond à ce qui n'a pas d'importance.
L'objectif est de minimiser le nombre d'octets dans votre source.
1 1 0
est périodique, tout 42 42 41
comme un tel état.
n
est impaire, le jeu ne passe à zéro que si tous les nombres sont égaux. Si la longueur est une puissance de 2, elle va toujours à zéro.
n
éléments et un maximum m
prend au plus des n * bit_length(m)
étapes. Donc, n*m
c'est aussi une limite supérieure. Une limite supérieure plus forte est t(n) * bit_length(m)
, où t(n)
est la plus grande puissance de 2 qui est un facteur de n
.