Étant donné un nombre carré positif en entrée. Affiche le nombre de valeurs entre l'entrée et le carré supérieur suivant.
Exemple
Entrée: 1
Sortie: 2
Raison: les nombres 2 et 3 sont compris entre 1 et 4, le carré le plus haut suivant
Entrée: 4
Sortie: 4
Raison: les nombres 5, 6, 7, 8 sont compris entre 4 et 9
Réponses:
Gelée , 2 octets
Essayez-le en ligne!
Port de ma réponse Mathematica (prenez la racine carrée, puis doublez). Ceci est limité aux entrées qui peuvent être représentées exactement comme un nombre à virgule flottante. Si c'est un problème, la solution à trois octets
ƽḤ
fonctionne pour les carrés arbitraires (que Dennis a publiés en premier, puis supprimés).la source
Brain-Flak ,
38, 22 octetsEssayez-le en ligne!
Je suis très fier de cette réponse. IMO, l'un de mes meilleurs golfs de cerveau-flak.
Comment ça marche?
Comme de nombreux autres utilisateurs l'ont souligné, la réponse est simplement sqrt (n) * 2 . Cependant, le calcul de la racine carrée dans brain-flak n'est pas très trivial. Comme nous savons que l'entrée sera toujours un carré, nous pouvons l'optimiser. Nous écrivons donc une boucle qui soustrait
à partir de l'entrée et suivez le nombre de fois qu'il s'exécute. Une fois qu'il atteint 0, la réponse est simplement le dernier nombre que nous avons soustrait moins un.
À l'origine, j'avais poussé un compteur sur l'autre pile. Cependant, nous pouvons utiliser la pile principale elle-même comme compteur, en augmentant la hauteur de la pile.
En pseudocode python-y, il s'agit essentiellement de l'algorithme suivant:
la source
Mathematica, 8 octets
Essayez-le en ligne! (Utilisation des mathématiques.)
La différence entre n 2 et (n + 1) 2 est toujours 2n + 1 mais nous voulons juste les valeurs entre elles excluant les deux extrémités, ce qui est 2n .
Cela peut potentiellement être raccourci en
2#^.5&
fonction des exigences de précision.la source
Julia 0,5 , 8 octets
Essayez-le en ligne!
la source
dc, 5
Essayez-le en ligne .
Auparavant, j'ai mal lu la question. Cette version fonctionne pour toute entrée entière positive, pas seulement pour les carrés parfaits:
dc, 12
Essayez-le en ligne .
la source
Gelée ,
76 octetsJ'ai raté la mise en garde «l'entrée sera carrée», mais cela fonctionnera pour tous les entiers non négatifs ... Martin Ender a déjà donné la solution à 2 octets .
Un lien monadique renvoyant le décompte.
Essayez-le en ligne!
la source
Japt ,
53 octetsEssayez-le en ligne!
Racine carrée de l'entrée, puis multipliez par 2.
la source
Brain-Flak , 20 octets
Shout out to DJMcMayhem's amazing (albiet légèrement plus long) answer here
Essayez-le en ligne!
Explication
Ce code fonctionne en décomptant à partir du nombre carré par incréments impairs. Puisque chaque carré est la somme de nombres impairs consécutifs, cela atteindra 0 en n 1/2 étapes. L'astuce ici est que nous gardons une trace de nos étapes dans un nombre pair et utilisons un statique
()
pour le compenser au nombre impair approprié. Puisque la réponse est 2n 1/2 , ce nombre pair sera notre réponse. Ainsi, lorsque nous atteignons 0, nous supprimons le zéro et notre réponse se trouve là, sur la pile.la source
Mathematica, 17 octets
Essayez-le en ligne!
la source
Octave ,
2510 octetsEssayez-le en ligne!
Enregistré 15 octets en utilisant l'approche bien meilleure de Martin. La gamme se compose d'
2*sqrt(n)
éléments. La fonction fait exactement cela: Multiplie2
par la racine de l'entrée.la source
Gelée , 7 octets
Essayez-le en ligne!
Explication:
la source
Python 3 , 16 octets
Essayez-le en ligne!
la source
Ohm , 2 octets
Essayez-le en ligne!
la source
JavaScript ES6, 10 octets
Essayez-le en ligne!
Math.sqrt
est assez long, c'est pourquoi nous utilisons**.5
la source
TI-Basic, 3 octets
Approche la plus simple ...
la source
05AB1E , 2 octets
Essayez-le en ligne!
Un autre port de la soumission de Martin Ender ...
la source
Ajouter ++ ,
2220 octetsEssayez-le en ligne!
Voulez-vous savoir comment cela fonctionne? Eh bien, n'ayez crainte! Je suis là pour vous éduquer!
la source
MATL (
87 octets)Je suis sûr que cela peut être réduit de manière significative (éditer: merci Luis), mais une solution naïve est:
Essayez-le en ligne!
Explication:
la source
2^
parU
(et cela fonctionnait dans la version 20.1.1 , qui était la plus récente au moment du défi, donc la réponse serait éligible même selon notre ancienne norme)Pari / GP , 9 octets
Essayez-le en ligne!
la source
PHP , 44 octets
Essayez-le en ligne!
la source
Alice , 10 octets
Essayez-le en ligne!
Explication
Encore une fois, calcule 2 sqrt (n) . La disposition économise deux octets sur la solution standard:
Répartition du code, hors redirection de l'IP:
la source
Aller , 56 octets
Essayez-le en ligne!
la source
QBIC ,
199 octetsSauvegardé un tas en copiant l'approche de @ MartinEnder.
Pas de lien TIO pour QBIC, malheureusement.
Explication
la source
En fait , 3 octets
Essayez-le en ligne!
la source
05AB1E ,
43 octetsBarré 4 est toujours 4: c
Essayez-le en ligne!
la source
Rétine , 21 octets
Essayez-le en ligne! Explication: fonctionne en prenant la racine carrée du nombre basé sur le solveur de nombres triangulaires de @ MartinEnder. Après avoir fait correspondre le nombre carré,
$1
est la différence entre le nombre carré et le nombre carré précédent, en unaire. Nous voulons la prochaine différence, mais exclusive, qui est juste 1 de plus. Pour ce faire, nous comptons le nombre de chaînes nulles dans$1
.la source
T-SQL, 22 octets
L'entrée se fait via une table préexistante, selon nos normes .
la source
Java (OpenJDK 9) / JShell, 17 octets
Essayez-le en ligne!
Remarque: Cela nécessiterait
import java.util.function.*;
d'obtenirIntFunction<T>
en Java 8 ou Java 9, mais lejava.util.function
package est importé par défaut dans JShell.la source
Haskell, 9 octets
Essayez-le en ligne
L'entrée et la sortie seront traitées comme des valeurs flottantes.
la source
Noether, 7 octets
Essayez-le ici!
Exactement comme toutes les autres réponses: génère deux fois la racine carrée.
la source