La fraction continue d'un nombre n
est une fraction de la forme suivante:
qui converge vers n
.
La séquence a
dans une fraction continue s'écrit généralement: [a 0 ; a 1 , a 2 , a 3 , ... a n ].
Nous écrirons le nôtre de la même manière, mais avec la partie répétée entre les points-virgules.
Votre objectif est de renvoyer la fraction continue de la racine carrée de n
.
Entrée: un entier n
. n
ne sera jamais un carré parfait.
Production: La fraction continue de sqrt(n)
.
Cas de test:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
Le code le plus court gagne. Bonne chance!
Réponses:
GolfScript (
6660 caractères)Attention: la plupart des entrées
?
sont la variable représentantfloor(sqrt(input))
plutôt que la fonction intégrée. Mais le premier est le intégré.Prend l'entrée sur stdin et les sorties sur stdout.
Psuedocode de l'algorithme (preuve de justesse actuellement laissée en exercice au lecteur):
Encore une fois, je me retrouve à vouloir un seul opérateur qui prend
a b
la pile et laissea/b a%b
sur la pile.la source
Python, 95
97(mais correct ...)Cela utilise uniquement l'arithmétique entière et la division du sol. Cela produira des résultats corrects pour toutes les entrées entières positives, bien que si l'on veut utiliser un long, ils devront ajouter un caractère; par exemple
m=a=0L
. Et bien sûr ... attendez un million d'années que le sol de mon pauvre homme se termine.Production:
edit: utilise maintenant l'algorithme de Peter Taylor. C'était
do...while
amusant.la source
*(c*c-n)
?Python,
878280Il prend un entier et donne une sortie comme:
la source
x-int(x) -> x%1
. Je suis impressionné :)Mathematica
3331La sortie est au format liste, ce qui est plus approprié pour Mathematica. Exemples:
la source
ContinuedFraction@Sqrt@#&
Python (
13613396)La méthode standard pour les fractions continues, extrêmement golfée.
la source
while 1:
. Vous pouvez également placer la plupart des instructions dans la boucle while sur une seule ligne.8 ;1;
74 et 75; cela ne semble pas correct. Il se bloque sur 76.C, 137
Y compris la nouvelle ligne, en supposant que je n'ai pas à rouler ma propre racine carrée.
Il casse pour sqrt (139) et contient le point-virgule supplémentaire occasionnel dans la sortie, mais je suis trop fatigué pour y travailler plus loin ce soir :)
la source
Perl, 99 caractères
Ne se gâche pas sur 139, 151, etc. Testé avec un nombre compris entre 1 et 9 chiffres.
Remarque:
$%
,$=
et$-
sont toutes les variables de forçage entier.la source
APL (NARS), 111 caractères, 222 octets
La fonction f est basée sur l'algo one find dans la page http://mathworld.wolfram.com/PellEquation.html pour résoudre l'équation de Pell. Cette fonction f a son entrée tout nombre non négatif (type de fraction aussi). Il y a peut-être quelque chose qui ne va pas, je me souviens que √ a, dans ma façon de voir, un problème pour les grands nombres de
il y aurait donc une fonction sqrti (). Pour cette raison, l'entrée fraction (et l'entrée entière) doit être <10 ^ 15. tester:
si l'argument est un carré d'un nombre, il retournerait une liste de 1 seul élément, le carré de ce nombre
Si cela dépendait de moi, dans un exercice sans "codegolf" je préférerais l'édition précédente qui utilise la fonction sqrti () ...
la source
fq
eta0
. aussi:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- nars prend-il en chargeQ÷⍨←
?