Étant donné l'entrée d'un entier positif n
, écrivez un programme qui termine le processus suivant.
- Trouver le plus petit entier positif plus grand que
n
cela est un carré parfait et est la concaténation den
et un autre nombre. L'ordre des chiffres den
ne peut pas être modifié. Le nombre concaténén
pour produire un carré parfait peut être appelér_1
. - Si ce
r_1
n'est pas un carré parfait, répétez le processus ci-dessus avecr_1
comme nouvelle entrée dans le processus. Répétez jusqu'à ce quer_k
soit un carré parfait, notés
. - Imprime la valeur de
sqrt(s)
.
L'entrée peut être prise dans n'importe quel format. Vous pouvez supposer qu'il n
s'agit d'un entier positif. Si l'un r_k
a un zéro de tête (et r_k
≠ 0), le zéro peut être ignoré.
Cas de test
Voici quelques cas de test. Le processus illustre les étapes ci-dessus.
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
C'est le golf de code. Des règles standard s'appliquent. La réponse la plus courte (en octets) l'emporte.
while x**.5%1:
peut-être?Python,
200198178 octetsla source
math.sqrt
àm
.Brachylog , 26 octets
Essayez-le en ligne!
Le dernier cas de test a été omis dans la liaison TIO car il suffit de plus d'une minute pour s'exécuter. Je l'ai exécuté sur mon ordinateur portable et le résultat correct a été obtenu en moins de deux heures.
L'avant-dernier
ℕ
est nécessaire lorsque l'entrée initiale est déjà un carré parfait, donc le premier carré parfait qui l'a comme préfixe est lui-même, et!
est nécessaire pour s'assurer que le retour arrière itère au lieu de trouver un carré concaténé plus grand, mais je ne sais pas vraiment pourquoi≜
est nécessaire, je sais juste que 5 produit une mauvaise réponse sans elle.la source
∧
s nommés est en fait plus court que l'utilisation d'un sandwich.)Perl 6 , 101 octets
la source
ES7, 116 octets
Oui, je pourrais probablement enregistrer un octet en utilisant
eval
.la source