Der fortgesetzte Bruch einer Zahl n
ist ein Bruch der folgenden Form:
die konvergiert zu n
.
Die Sequenz a
in einem fortgesetzten Bruch wird typischerweise wie folgt geschrieben: [a 0 ; a 1 , a 2 , a 3 , ... a n ].
Wir werden unsere auf die gleiche Weise schreiben, aber mit dem sich wiederholenden Teil zwischen Semikolons.
Ihr Ziel ist es, den fortgesetzten Bruchteil der Quadratwurzel von zurückzugeben n
.
Input: eine ganze Zahl ist n
. n
wird niemals ein perfektes Quadrat sein.
Ausgabe: Der fortgesetzte Bruchteil von sqrt(n)
.
Testfälle:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
Kürzester Code gewinnt. Viel Glück!
Antworten:
GolfScript (
6660 Zeichen)Warnung: Die meisten
?
der Variablen stellenfloor(sqrt(input))
die eingebaute Variable dar und nicht die eingebaute. Aber der erste ist der eingebaute.Übernimmt die Eingabe für stdin und die Ausgabe für stdout.
Pseudocode des Algorithmus (Korrektheitsnachweis, der dem Leser derzeit als Aufgabe überlassen wird):
Wieder einmal möchte ich einen einzelnen Operator, der
a b
den Stapel übernimmt unda/b a%b
auf dem Stapel verbleibt.quelle
Python, 95
97(aber richtig ...)Dies verwendet nur Ganzzahlarithmetik und Bodenteilung. Dies führt zu korrekten Ergebnissen für alle positiven Ganzzahleingaben. Wenn Sie jedoch ein Long verwenden möchten, müssen Sie ein Zeichen hinzufügen. zum beispiel
m=a=0L
. Und natürlich ... warte eine Million Jahre, bis der Fußboden meines armen Mannes leer ist.Ausgabe:
edit: jetzt mit Peter Taylors Algorithmus. Das hat
do...while
Spaß gemacht.quelle
*(c*c-n)
?Python,
878280Es benötigt eine ganze Zahl und gibt Folgendes aus:
quelle
x-int(x) -> x%1
. Ich bin beeindruckt :)Mathematica
3331Die Ausgabe erfolgt im Listenformat, das für Mathematica besser geeignet ist. Beispiele:
quelle
ContinuedFraction@Sqrt@#&
Python (
136 13396)Die Standardmethode für fortgesetzte Fraktionen, extrem golfen.
quelle
while 1:
. Sie können auch die meisten Anweisungen in der while-Schleife in eine einzelne Zeile einfügen.8 ;1;
74 und 75; das scheint nicht richtig. Es hängt am 76.C 137
Einschließlich der Newline, vorausgesetzt, ich muss nicht meine eigene Quadratwurzel rollen.
Es bricht für sqrt (139) und enthält das gelegentliche zusätzliche Semikolon in der Ausgabe, aber ich bin zu müde, um heute Abend weiter daran zu arbeiten :)
quelle
Perl, 99 Zeichen
Ist nicht Schraube bis auf 139, 151, etc. getestet mit Zahl im Bereich von 1 bis 9 Ziffern.
Hinweis:
$%
,$=
, und$-
sind alle ganzzahligen Variablen zwingen.quelle
APL (NARS), 111 Zeichen, 222 Byte
Die f-Funktion basiert auf dem Algorithmus, den Sie auf der Seite http://mathworld.wolfram.com/PellEquation.html zur Lösung der Pell-Gleichung finden. Die Eingabe dieser f-Funktion hat alle keine negative Zahl (auch Typbruch). Möglicherweise läuft da etwas schief, ich erinnere mich, dass √, wie ich es sehe, ein Problem für große Bruchzahlen hat, wie
es gäbe also eine Funktion sqrti (). Aus diesem Grund muss die Eingabe von Brüchen (und ganzen Zahlen) <10 ^ 15 sein. Prüfung:
Wenn das Argument ein Quadrat einer Zahl ist, gibt es eine Liste mit nur einem Element zurück, den Quadrat dieser Zahl
Wenn es von mir abhängen würde, würde ich in einer Übung ohne "Codegolf" die vorherige Bearbeitung vorziehen, die die Funktion sqrti () verwendet ...
quelle
fq
und auch Namen mit einem Buchstaben verwendena0
. auch:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- Unterstützt NARSQ÷⍨←
?