Premisa
Una noche, solo estaba contemplando los números. Descubrí algo único sobre números como 7, 10, 12, 13 y más. Son cuadrados de cuadrados! Es decir, que al cuadrado, se componen de cuadrados en sí. El OEIS los llama cuadrados que son una concatenación decimal de dos o más cuadrados.
Ejemplos de tales números incluyen 7 (49 tiene 2 2 y 3 2 ) 13 (169 tiene 4 2 y 3 2 ) y 20 (400 tiene 2 2 y 0 2 ). Otros ejemplos incluyen 37, ya que 1369 es un término ya que puede dividirse como 1, 36 y 9. 1444 (38 2 ) es un término ya que puede dividirse como 1, 4, 4, 4. Pregunté sobre esto en matemáticas .SE, y fue nombrado después de mí!
Reto
Diseñe un programa que imprima números de TanMath. Dado el número n (comenzando en 1), imprima el enésimo número de TanMath, T (n).
Como ejemplo de código:
>> 1
>> 7
o
>> 4
>> 13
Implementación de Python de referencia (¡gracias @ MartinBüttner y @ Sp3000!):
from math import sqrt
n = input()
def r(digits, depth):
z = len(digits)
if z < 1:
return (depth > 1)
else:
for i in range(1, z+1):
t = int(digits[:i])
if sqrt(t).is_integer() and r(digits[i:], depth+1):
return True
return False
i=0
t=0
while t < n:
i += 1
if r(str(i**2), 0):
t += 1
print i
Aquí hay una lista de los primeros 100 números:
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 180 190 191 200 201 204 205 209 210 212 220 223 230 240 250 253 260 270 280 285 290 300 305 306 310 315 320 325 330 340 342 343 345 348 350 360 369 370 375 379 380 390 397 400 402 405 408 410 413 420 430 440 441 450 460 470 475 480 487
Este es un código de golf, por lo que gana el código más corto.
¡Buena suerte!
Respuestas:
Pyth,
232120 bytes¡Gracias a @isaacg por jugar golf en 1 byte!
Pruébalo en línea.
Cómo funciona
fuente
t
es innecesario, porque^R2Z
no contendrá^Z2
. Es lo mismo que el rango de Python, no incluye el extremo superior.Julia,
189145 bytesEsto crea una función sin nombre que acepta un entero y devuelve un entero. Para llamarlo, dale un nombre, por ejemplo
f=n->...
.Sin golf:
¡Gracias a Dennis por su ayuda e ideas y gracias a Glen O por guardar 44 bytes!
fuente
JavaScript ES6, 126
127La implementación de referencia, convertida a Javascript con algún truco de golf.
Usando eval para evitar el retorno explícito.
Pruebe a ejecutar el fragmento a continuación en un navegador compatible con EcmaScript 6, con operador de propagación, parámetros predeterminados y funciones de flecha (uso Firefox)
fuente
JavaScript (ES6), 143 bytes
Uso
Explicación
fuente
Lua, 148 bytes
Se requiere Lua 5.3
fuente
Pitón 3,
283243 bytesEsta es una implementación de fuerza bruta. Sugerencias de golf bienvenidas.
Sin golf:
fuente