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
nese es un cuadrado perfecto y es la concatenación deny algún otro número. El orden de los dígitos denno puede modificarse. Senpuede llamar al número concatenado para producir un cuadrado perfector_1. - Si
r_1no es un cuadrado perfecto, repita el proceso anterior conr_1como la nueva entrada al proceso. Repita hasta que queder_kun cuadrado perfecto, denotados. - Imprime el valor de
sqrt(s).
La entrada se puede tomar en cualquier formato. Puede suponer que nes un número entero positivo. Si alguno r_ktiene 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.sqrtam.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