Étant donné un nombre décimal k
, recherchez le plus petit entier n
tel que la racine carrée de n
soit à l'intérieur k
d'un entier. Cependant, la distance doit être non nulle - n
ne peut pas être un carré parfait.
Étant donné k
, un nombre décimal ou une fraction (selon ce qui est plus facile pour vous), tel que 0 < k < 1
, affichez le plus petit entier positif de n
telle sorte que la différence entre la racine carrée de n
et l'entier le plus proche de la racine carrée de n
soit inférieure ou égale à k
mais non nulle .
Si i
est l'entier le plus proche de la racine carrée de n
, vous recherchez le premier n
où 0 < |i - sqrt(n)| <= k
.
Règles
- Vous ne pouvez pas utiliser l'implémentation insuffisante d'un langage de nombres non entiers pour banaliser le problème.
- Sinon, vous pouvez supposer que
k
cela ne causera pas de problèmes avec, par exemple, l'arrondi à virgule flottante.
Cas de test
.9 > 2
.5 > 2
.4 > 3
.3 > 3
.25 > 5
.2 > 8
.1 > 26
.05 > 101
.03 > 288
.01 > 2501
.005 > 10001
.003 > 27888
.001 > 250001
.0005 > 1000001
.0003 > 2778888
.0001 > 25000001
.0314159 > 255
.00314159 > 25599
.000314159 > 2534463
Entrées de cas de test séparées par des virgules:
0.9, 0.5, 0.4, 0.3, 0.25, 0.2, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.0314159, 0.00314159, 0.000314159
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
JavaScript (ES7),
5150 octetsEssayez-le en ligne!
(échoue pour les cas de test qui nécessitent trop de récursivité)
Version non récursive,
5756 octetsEssayez-le en ligne!
Ou pour 55 octets :
Essayez-le en ligne!
(mais celui-ci est beaucoup plus lent)
la source
J ,
3929 octetsNB. Cette version plus courte utilise simplement la formule de @ alephalpha.
Essayez-le en ligne!
39 octets, original, force brute
Essayez-le en ligne!
Gère tous les cas de test
la source
Japt ,
1816 octets-2 octets de Shaggy
Essayez-le en ligne!
la source
%1 &&
méchant, je ne sais pas si l'utilisation de la solution d'Arnauld serait plus courte (peut-être pas)Z¬u1
àZ
au début de la fonction.[1,-1]®*U²Ä /U/2 c ²-Z} rm
Pyth,
2221 octetsEssayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
Un autre port de l'excellente réponse d' alephalpha , assurez-vous de leur donner une note positive!
Edit: enregistré un octet, grâce à Kevin Cruijssen
la source
[-1,1]
en 3 octets également, ou avez-vous besoin d'un reverse supplémentaire pour qu'il devienne 4 octets? Si c'est possible en 3 octets, vous pouvez le faire, puis changer le*_d
to*d
et le+d
to-d
. De plus, Pyth n'a-t-il pas un minimum intégré, au lieu de trier et prendre en premier?- ... d
cependant, cela me fait gagner un octet! Merci[1,-1]
ou[-1,1]
. Je comparais le*d
et-d
avec ma réponse 05AB1E, où je n'utilise pas de carte, mais je peux soustraire / multiplier un tableau 2D de / avec un autre tableau 2D, donc je n'ai pas besoin d'une carte. Heureux d'avoir pu aider à enregistrer un octet dans ce cas. :) Et merci pour l'inspiration pour ma réponse 05AB1E.Perl 6 ,
343329 octets-1 octet grâce à Grimy
Essayez-le en ligne!
la source
>=
par>
. Les racines carrées des entiers sont soit entières soit irrationnelles, donc le cas de l'égalité ne peut pas se produire.APL (Dyalog Unicode) , 27 octets SBCS
Essayez-le en ligne!
Train monadique prenant un argument. Ceci est un port de réponse d' Alephalpha .
Comment:
la source
C # (Visual C # Interactive Compiler) ,
898571 octetsEssayez-le en ligne!
-4 octets grâce à Kevin Cruijssen!
la source
n++
dans la boucle, de sorte que le-1
peut être supprimé du retour:k=>{double n=1,p;for(;Math.Abs(Math.Round(p=Math.Sqrt(0d+n))-p)>k|p%1==0;n++);return n;}
0d+
peut être retiré, n'est-ce pas?n
c'était déjà un doubleJava (JDK) ,
7370 octetsEssayez-le en ligne!
-3 bytes
merci à @ceilingcatla source
Java 8, 85 octets
Réponse C # .NET de Port of EmbodimentOfIgnorance .
Essayez-le en ligne.
Le
Math.round
peut également être ceci, mais malheureusement c'est le même nombre d'octets:Essayez-le en ligne.
la source
MathGolf , 16 octets
Essayez-le en ligne!
Pas un grand fan de cette solution. Il s'agit d'un portage de la solution 05AB1E, qui est basé sur la même formule que la plupart des réponses utilisent.
Explication
la source
byte
golf en code? Parce que certains de vos caractères nécessitent plus d'un seul octet. Je ne veux pas'ԓ'
caractère est en fait de 2 octets, mais le reste est de 1 octet.Forth (gforth) , 76 octets
Essayez-le en ligne!
Explication
Démarre un compteur à 1 et l'incrémente en boucle. À chaque itération, il vérifie si la valeur absolue de la racine carrée du compteur - l'entier le plus proche est inférieur à k
Explication du code
la source
Gelée , 13 octets
Je n'ai pas réussi à obtenir quelque chose de plus tordu que la même approche que l'alephalphe
- allez voter pour sa réponse Mathematica !
Essayez-le en ligne!
Comment?
la source
Japt , 14 octets
Essayez-le
la source
Perl 5
-p
, 42 octetsEssayez-le en ligne!
la source