Dada la entrada de un entero positivo n
, escriba un programa que complete el siguiente proceso.
- Encuentre el número entero positivo más pequeño mayor que
n
ese es un cuadrado perfecto y es la concatenación den
y algún otro número. El orden de los dígitos den
no puede modificarse. Sen
puede llamar al número concatenado para producir un cuadrado perfector_1
. - Si
r_1
no es un cuadrado perfecto, repita el proceso anterior conr_1
como la nueva entrada al proceso. Repita hasta que queder_k
un cuadrado perfecto, denotados
. - Imprime el valor de
sqrt(s)
.
La entrada se puede tomar en cualquier formato. Puede suponer que n
es un número entero positivo. Si alguno r_k
tiene un cero inicial (y r_k
≠ 0), el cero puede ser ignorado.
Casos de prueba
Aquí hay algunos casos de prueba. El proceso demuestra los pasos anteriores.
Input: 23
Process: 23, 2304, 4
Output: 2
Input: 10
Process: 10, 100, 0
Output: 0
Input: 1
Process: 1, 16, 6, 64, 4
Output: 2
Input: 5
Process: 5, 529, 29, 2916, 16
Output: 4
Input: 145
Process: 145, 145161, 161, 16129, 29, 2916, 16
Output: 4
Input: 1337
Process: 1337, 13373649, 3649, 36493681, 3681, 368102596, 2596, 25969216, 9216
Output: 96
Este es el código de golf. Aplican reglas estándar. La respuesta más corta (en bytes) gana.
while x**.5%1:
¿tal vez?Python,
200198178 bytesfuente
math.sqrt
am
.Brachylog , 26 bytes
Pruébalo en línea!
El último caso de prueba se omitió en el enlace TIO porque solo lleva más de un minuto ejecutarlo. Lo ejecuté en mi computadora portátil y el resultado correcto se logró en no más de dos horas.
El penúltimo
ℕ
es necesario para cuando la entrada inicial ya es un cuadrado perfecto, por lo que el primer cuadrado perfecto que lo tiene como prefijo es en sí mismo, y!
es necesario para asegurarse de que el retroceso se repita en lugar de encontrar un cuadrado concatenado más grande, pero realmente no sé por qué≜
es necesario, solo sé que 5 produce una respuesta incorrecta sin ella.fuente
∧
S es en realidad más corto que el uso de un sándwich.)Perl 6 , 101 bytes
fuente
ES7, 116 bytes
Sí, probablemente podría guardar un byte usando
eval
.fuente