Inspiré par The Great API Easter Egg Hunt!
Résumé
Votre tâche consiste à rechercher un entier prédéterminé dans "l'espace Collatz" (pour être expliqué plus loin) en utilisant le moins d'étape possible.
introduction
Ce défi est basé sur la célèbre conjecture de Collatz dont tout le monde ici, espérons-le, a au moins entendu parler. Voici un récapitulatif tiré de Imprimer les numéros Super Collatz .
La séquence Collatz (également appelée problème 3x + 1) est l'endroit où vous commencez avec n'importe quel entier positif, pour cet exemple, nous utiliserons 10, et lui appliquerons cet ensemble d'étapes:
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
La distance Collatz C(m,n)
entre les deux nombres m
et n
, aux fins de ce défi, est la distance entre deux nombres dans le graphique Collatz (Crédits à @tsh pour me parler de ce concept), qui est défini comme suit: (en utilisant 21
et 13
comme exemples ):
Notez la séquence Collatz pour m
(dans ce cas, 21
):
21, 64, 32, 16, 8, 4, 2, 1
Notez la séquence Collatz pour n
(dans ce cas, 13
):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Comptez maintenant le nombre de chiffres qui n'apparaissent que dans l'une des séquences. Ceci est défini comme la distance Collatz entre m
et n
. Dans ce cas 8
, à savoir,
21, 64, 32, 13, 40, 20, 10, 5
Nous avons donc la distance Collatz entre 21
et 13
as C(21,13)=8
.
C(m,n)
ont les belles propriétés suivantes:
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
Espérons que la définition de C(m,n)
est maintenant claire. Commençons à chasser les œufs dans l'espace Collatz!
Au début du jeu, un contrôleur décide de la position d'un œuf de Pâques, qui s'exprime par sa coordonnée unidimensionnelle: Un entier dans l'intervalle [p,q]
(en d'autres termes, un entier entre p
et q
, les deux extrémités inclus).
La position de l'œuf reste constante tout au long du jeu. Nous désignerons cette coordonnée comme r
.
Vous pouvez maintenant faire une estimation initiale de 0 et il sera enregistré par le contrôleur. Ceci est votre 0e round. Si vous êtes si chanceux que vous l'avez bien fait au début (c.-à-d. Un 0 = r), le jeu se termine et votre score est 0
(Plus le score est bas, mieux c'est). Sinon, vous entrez dans le 1er tour et vous faites une nouvelle estimation de 1 , cela continue jusqu'à ce que vous ayez bien compris, c'est-à-dire a n = r, et votre score sera n
.
Pour chaque manche après le 0, le contrôleur vous donne l'une des rétroactions suivantes afin que vous puissiez faire une meilleure estimation en fonction des informations fournies. Supposons que vous êtes actuellement au n
troisième tour et donc votre supposition est un n
- "Tu l'as trouvé!" si a n = r, auquel cas le jeu se termine et vous marquez
n
. - "Vous êtes plus proche :)" si C (a n , r) <C (a n-1 , r)
- "Vous tournez autour de l'œuf" si C (a n , r) = C (a n-1 , r)
- "Vous êtes plus loin :(" si C (a n , r)> C (a n-1 , r)
Pour économiser quelques octets, j'appellerai les réponses "Droite", "Plus proche", "Même", "Plus loin", dans l'ordre présenté ci-dessus.
Voici un exemple de jeu avec p=1,q=15
.
- a 0 = 10
- a 1 = 11, réponse: "Closer"
- a 2 = 13, réponse: "Plus loin"
- a 3 = 4, réponse: "Plus loin"
- a 4 = 3, réponse: "Closer"
- a 5 = 5, réponse: "Identique"
- a 6 = 7, réponse: "Droite"
Note: 6
.
Défi
Concevez une stratégie déterministe pour jouer au jeu p=51, q=562
avec le meilleur score.
Les réponses doivent décrire les algorithmes en détail. Vous pouvez attacher n'importe quel code qui aide à élucider l'algorithme. Ce n'est pas du codegolf, vous êtes donc encouragé à écrire du code lisible.
Les réponses doivent inclure le pire score qu'ils peuvent obtenir pour tous les cas possibles r
et celui avec le score le plus faible l'emporte. En cas d'égalité, les algorithmes qui ont un meilleur score moyen pour tous les r
s possibles (qui devraient également être inclus dans les réponses) l'emportent. Il n'y a plus de bris d'égalité et nous pouvons avoir plusieurs gagnants à la fin.
Spécifications
- Pour réitérer,
r
réside dans l'intervalle[51,562]
. - Les failles par défaut s'appliquent.
Bounty (ajouté après la publication de la première réponse)
Je peux personnellement offrir une prime à une réponse où toutes les suppositions sont faites dans la plage [51,562]
tout en ayant un pire score raisonnablement bas.