¡Inspirado en The Great API Easter Egg Hunt!
Resumen
Su tarea es buscar un número entero predeterminado en el "espacio de Collatz" (que se explicará más adelante) utilizando el menor número de pasos posible.
Introducción
Este desafío se basa en la famosa conjetura de Collatz de la que esperamos que al menos todos aquí hayan oído hablar. Aquí hay un resumen tomado de Imprimir los números de Super Collatz .
La secuencia de Collatz (también llamada problema 3x + 1) es donde comienzas con cualquier número entero positivo, para este ejemplo usaremos 10 y le aplicaremos este conjunto de pasos:
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
La distancia de Collatz C(m,n)
entre los dos números m
y n
, para el propósito de este desafío, es la distancia entre dos números en el gráfico de Collatz (Créditos a @tsh para contarme sobre este concepto), que se define de la siguiente manera: (usando 21
y 13
como ejemplos ):
Escriba la secuencia de Collatz para m
(en este caso 21
):
21, 64, 32, 16, 8, 4, 2, 1
Escriba la secuencia de Collatz para n
(en este caso 13
):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Ahora cuente cuántos números aparecen solo en una de las secuencias. Esto se define como la distancia de Collatz entre m
y n
. En este caso 8
, a saber,
21, 64, 32, 13, 40, 20, 10, 5
Entonces tenemos la distancia de Collatz entre 21
y 13
como C(21,13)=8
.
C(m,n)
tiene las siguientes propiedades agradables:
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
Esperemos que la definición de C(m,n)
ahora sea clara. ¡Comencemos a buscar huevos en el espacio de Collatz!
Al comienzo del juego, un controlador decide la posición de un huevo de pascua, que se expresa mediante su coordenada unidimensional: un número entero en el intervalo [p,q]
(en otras palabras, un número entero entre p
y q
, ambos extremos inclusive).
La posición del huevo permanece constante durante todo el juego. Denotaremos esta coordenada como r
.
Ahora puede hacer una suposición inicial a 0 , y el controlador lo grabará. Esta es tu 0ª ronda. Si eres tan afortunado de haber acertado en el primer lugar (es decir, un 0 = r), el juego termina y tu puntaje es 0
(Cuanto más bajo sea el puntaje, mejor). De lo contrario, ingresas a la primera ronda y haces una nueva aproximación a 1 , esto continúa hasta que lo has hecho bien, es decir, a n = r, y tu puntaje será n
.
Para cada ronda posterior al 0, el controlador le ofrece una de las siguientes retroalimentaciones para que pueda adivinar mejor en función de la información proporcionada. Supongamos que se encuentra actualmente en la n
tercera ronda y, por lo tanto, su suposición es un n
- "¡Lo encontraste!" si a n = r, en cuyo caso el juego termina y usted anota
n
. - "Estás más cerca :)" si C (a n , r) <C (a n-1 , r)
- "Estás dando vueltas alrededor del huevo" si C (a n , r) = C (a n-1 , r)
- "Estás más lejos :(" si C (a n , r)> C (a n-1 , r)
Para guardar algunos bytes, llamaré a las respuestas como "Correcto", "Más cerca", "Mismo", "Más lejos", en el orden presentado anteriormente.
Aquí hay un ejemplo de juego con p=1,q=15
.
- a 0 = 10
- a 1 = 11, respuesta: "Más cerca"
- a 2 = 13, respuesta: "Más lejos"
- a 3 = 4, respuesta: "Más lejos"
- a 4 = 3, respuesta: "Más cerca"
- a 5 = 5, respuesta: "Mismo"
- a 6 = 7, respuesta: "Correcto"
Puntuación: 6
.
Desafío
Diseña una estrategia determinista para jugar p=51, q=562
con el mejor puntaje.
Las respuestas deben describir los algoritmos en detalle. Puede adjuntar cualquier código que ayude a dilucidar el algoritmo. Esto no es codegolf, por lo que se recomienda escribir código legible.
Las respuestas deben incluir el peor puntaje que puedan lograr para todos los casos posibles r
, y el que tenga el puntaje más bajo gana. En el caso de empate, r
ganan los algoritmos que tienen un mejor puntaje promedio para todos los posibles s (que también deben incluirse en las respuestas). No hay más desempates y podemos tener múltiples ganadores al final.
Especificaciones
- Para reiterar,
r
radica en el intervalo[51,562]
. - Se aplican las lagunas predeterminadas .
Recompensa (agregado después de que se publique la primera respuesta)
Personalmente, puedo ofrecer una recompensa por una respuesta en la que todas las suposiciones se hacen dentro del rango [51,562]
sin dejar de tener un puntaje peor razonablemente bajo.