Esto se inspiró en un problema matemático que vi en algún lugar de Internet pero no recuerdo dónde (ACTUALIZACIÓN: El problema original se encontró en el subreddit de acertijos matemáticos con una prueba siempre que sea posible, consulte también esta publicación de Math SE ), solicitando una prueba si el siguiente proceso es posible para cualquier par arbitrario de enteros (por lo que recuerdo, fue posible para cualquier par dado):
Dado un par de enteros, j y k, duplique uno de ellos y agregue uno al otro, dando como resultado un par de enteros nuevos, es decir, (j, k) -> (j + 1, k * 2) o (j * 2, k + 1). Luego repita este proceso con esos enteros, con el objetivo de que el par de enteros sea igual.
Estos ejemplos dados no son necesariamente óptimos, pero muestran cómo se puede realizar este proceso en cualquier número entero, positivo, negativo o cero:
(2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, 114) -> (228, 228)
(0, 2) -> (1, 4) -> (2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(-4, 0) -> (-3, 0) -> (-2, 0) -> (-1, 0) -> (0, 0)
(3, -1) -> (6, 0) -> (12, 1) -> (13, 2) -> (14, 4) -> (15, 8) -> (16, 16)
(-4, -3) -> (-8, -2) -> (-16, -1) -> (-32, 0) -> (-31, 0) -> ... -> (0, 0)
Desafío
Cree un programa que tenga dos enteros, muestre la lista de pasos necesarios para igualar esos enteros incrementando repetidamente uno y duplicando el otro
Especificaciones
- La solución no tiene que ser óptima, pero debe resolverse en un número finito de pasos para cualquier par arbitrario
La entrada debe ser dos enteros
La salida puede ser cualquier salida razonable que denote claramente los enteros resultantes de cada paso, por ejemplo:
- una cadena con dos delimitadores distintos (cualquier símbolo, espacio en blanco, etc.), uno para cada número entero en un par y otro para cada par
- por ejemplo, entrada j, k: 2, 5 -> salida: 3,10; 6,11; 12,12
- una lista de listas de enteros
- por ejemplo, entrada j, k: 2, 5 -> salida: [[3, 10], [6, 11], [12, 12]]
- una cadena con dos delimitadores distintos (cualquier símbolo, espacio en blanco, etc.), uno para cada número entero en un par y otro para cada par
Si la entrada es un par de números iguales, puede generar cualquier cosa siempre que sea coherente con otras respuestas no triviales
- por ejemplo
- si la entrada [2, 5] tiene salida [[3, 10], [6, 11], [12, 12]], que no incluye el par de entrada, entonces la entrada [4, 4] no debería generar nada.
- si la entrada [2, 5] tiene salida [[2, 5], [3, 10], [6, 11], [12, 12]], que incluye el par de entrada, entonces la entrada [4, 4] debería salida [[4, 4]].
- por ejemplo
Se aplican métodos IO estándar y se prohíben las lagunas estándar
Este es el código de golf, por lo que la respuesta más corta en bytes gana
[(12,12),(6,11),(3,10),(2,5)]
para la entrada (2,5)
?