/* Configuration */
var QUESTION_ID = 85; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 3; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body {
text-align: left !important;
display: block !important;
}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
<h2>Shortest Solution by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
^2
als Ersatz für denken0,1
. +1|^2,*+*...*
, das ist die gleiche Anzahl von Bytes wie0,1,*+*...*
.Brainfuck, 22 Schläge
Erzeugt die Fibonacci-Sequenz, die sich allmählich über das Speicherband bewegt.
quelle
+[[<+>->+>+<<]>]
+[.[>+>+<<-]>]
Haskell,
171514 ZeichenProbieren Sie es online!
quelle
f=0:scanl(+)1 f
?f@(_:x)=0:1:zipWith(+)f x
! Muss mich daran erinnern.f=0:scanl(+)1f
.C # 4, 58 Bytes
Stream (69; 65, wenn schwach geschrieben
IEnumerable
)(Annahme einer
using
Richtlinie fürSystem.Collections.Generic
.)Einzelwert (58)
quelle
n
ist einuint
,n==0
kann auf verkürzt werdenn<1
. Und der Stream kann ein paar Zeichen einsparen, indem er den Platz nach dem generischen Typ freigibt undx
in einem größeren Umfang als erforderlich deklariert . In der Tat Grabenx
ganz:n+=c;c=n-c;
!n
, dann solltestn
du das eben kippen , wenn bedingt.GolfScript, 12
Jetzt nur noch 12 Zeichen!
quelle
> <> - 15 Zeichen
quelle
0:nao1v LF a+@:n:<o
wenn Sie möchten. Gibt 15 :) In der Tat macht dies auch die Ausgabe etwas lesbarer ...01r:nao$:@+$r
J, 10 Zeichen
Unter Verwendung der eingebauten Berechnung der Taylorreihenkoeffizienten kann es also zu geringfügigem Betrug kommen. Hab es hier gelernt .
quelle
(q:^-^:p) 6
ist,64 729
wo p gerade ist. J ist wahrscheinlich gut für das, was es Rätsel macht. :)(<:^-^:>) 4
ist81
und<:^-^:> 4
ist53.5982
.+/@:!&i.-
Verwendung von 9 Bytes.Hexagonie ,
181412Danke Martin für 6 Bytes!
Erweitert:
Probieren Sie es online aus
Alt, antworte. Dies wird beibehalten, da die Bilder und Erläuterungen für neue Hexagony-Benutzer hilfreich sein können.
Erweitert:
Dies gibt die Fibonacci-Sequenz aus, die durch Zeilenumbrüche getrennt ist.
Probieren Sie es online! Seien Sie vorsichtig, der Online-Interpreter mag keine unendlichen Ausgaben.
Erläuterung
Es gibt zwei "Unterprogramme" für dieses Programm, die jeweils von einer der beiden verwendeten IPs ausgeführt werden. Die erste Routine druckt Zeilenumbrüche und die zweite die Fibonacci-Berechnung und Ausgabe.
Das erste Unterprogramm beginnt in der ersten Zeile und bewegt sich die ganze Zeit von links nach rechts. Er gibt zuerst den Wert am Speicherzeiger aus (initialisiert auf Null) und erhöht dann den Wert am Speicherzeiger um
1
. Nach dem No-Op springt die IP zur dritten Zeile, die zuerst in eine andere Speicherzelle wechselt und dann eine neue Zeile ausgibt. Da eine neue Zeile einen positiven Wert hat (ihr Wert ist 10), springt der Code immer zur nächsten fünften Zeile. Die fünfte Zeile gibt den Speicherzeiger auf unsere Fibonacci-Nummer zurück und wechselt dann zur anderen Subroutine. Wenn wir von dieser Subroutine zurückkehren, springt die IP nach der Ausführung eines No-Op in die dritte Zeile zurück.Die zweite Unterroutine beginnt in der oberen rechten Ecke und bewegt sich nach Südosten. Nach einem No-Op werden wir auf die zweite Linie nach Westen geschickt. Diese Zeile gibt die aktuelle Fibonacci-Nummer aus, bevor der Speicherzeiger an die nächste Stelle bewegt wird. Dann springt die IP zur vierten Zeile, wo sie die nächste Fibonacci-Zahl unter Verwendung der vorherigen beiden berechnet. Dann gibt es die Kontrolle an die erste Subroutine zurück, aber wenn es die Kontrolle über das Programm wiedererlangt, fährt es fort, bis es auf einen Sprung trifft, wo es über den Spiegel springt, der ursprünglich verwendet wurde, um es nach Westen zu richten, während es zur zweiten Zeile zurückkehrt.
Vorläufige hübsche Bilder!
Die linke Seite des Bildes ist das Programm, die rechte Seite repräsentiert den Speicher. Das blaue Kästchen ist die erste IP, und beide IPs zeigen auf die nächste auszuführende Anweisung.
Hinweis: Bilder erscheinen möglicherweise nur für Personen mit ähnlich eingeschränkten Kenntnissen in Bildbearbeitungsprogrammen hübsch: PI fügt mindestens zwei weitere Iterationen hinzu, damit die Verwendung des
*
Operators klarer wird.Anmerkung 2: Ich habe die Antwort von alephalpha erst gesehen , nachdem ich das meiste geschrieben hatte. Ich dachte, dass sie aufgrund der Trennung immer noch wertvoll ist, aber die tatsächlichen Fibonacci-Teile unserer Programme sind sehr ähnlich. Außerdem ist dies das kleinste Hexagony-Programm, bei dem mehr als eine IP-Adresse verwendet wurde
quelle
COW , 108
quelle
Python 2, 34 Bytes
Python mit Rekursion ... hier kommt ein StackOverflow!
quelle
Gelee , 3 Bytes
Probieren Sie es online!
Wie es funktioniert
‡
¡
Sieh dir die beiden Links links an. Da es nur einen gibt, muss es der Körper der Schleife sein. Daher wird eine Zahl von der Eingabe gelesen. Da es keine Befehlszeilenargumente gibt, wird diese Nummer aus STDIN gelesen.quelle
Golfscript - Einzelnummer - 11.12.10
12 Zeichen für die Eingabe von stdin:
11 Zeichen für die Eingabe bereits auf dem Stapel:
10 Zeichen zur weiteren Definition von 1 als 0. Fibonacci-Zahl:
quelle
~
runter und du hast 11 Zeichen, dien
den Stapel aufnehmen undF_n
auf dem Stapel belassen.Rubin
29 27 2524 ZeichenBearbeiten: machte es eine Endlosschleife. ;)
quelle
b=a+a=b
es sich um ein Palindrom handelt? :)b=a+a=b
Teil funktioniert? Kann nicht scheinen, meinen Kopf darum zu wickeln.newb=olda+(a=oldb)
loop
p 1,a=b=1;loop{p b=a+a=b}
Mathematica, 9 Zeichen
Wenn integrierte Funktionen nicht zulässig sind, ist hier eine explizite Lösung:
Mathematica,
333231 Zeichenquelle
#&@@Nest[{#+#2,#}&@@#&,{0,1},#]&
32 Zeichen.#&@@Nest[{+##,#}&@@#&,{0,1},#]&
Round[GoldenRatio^#/√5]&
Round[((1+√5)/2)^#/√5]&
DC (20 Byte)
Als Bonus ist es sogar verschleiert;)
EDIT: Ich kann darauf hinweisen, dass es alle Zahlen in der Fibonacci-Sequenz druckt , wenn Sie lange genug warten.
quelle
Vorspiel , 12 Bytes
Eine der wenigen Herausforderungen, bei denen Prelude tatsächlich ziemlich wettbewerbsfähig ist:
Dies erfordert den Python-Interpreter, der Werte als Dezimalzahlen anstelle von Zeichen ausgibt.
Erläuterung
Im Prelude werden alle Zeilen parallel ausgeführt, wobei der Anweisungszeiger die Programmspalten durchläuft. Jede Zeile hat einen eigenen Stack, der auf Null initialisiert wird.
Die Schleife wird für immer wiederholt, da der erste Stapel niemals einen
0
darüber hat.Beachten Sie, dass dies die Fibonacci-Sequenz von startet
0
.quelle
Sechseck , 6 Bytes
Nicht konkurrierend, weil die Sprache neuer ist als die Frage.
Ungolfed:
Es druckt die Fibonacci-Sequenz ohne Trennzeichen.
quelle
TI-BASIC, 11
Von dem legendären TI-BASIC-Golfer Kenneth Hammond ("Weregoose") von dieser Seite . Läuft in O (1) -Zeit und betrachtet 0 als den 0. Term der Fibonacci-Sequenz.
Benutzen:
Wie funktioniert das? Wenn Sie rechnen, stellt sich heraus, dass dies
sinh‾¹(.5)
gleich istln φ
, sodass es sich um eine modifizierte Version der Binet-Formel handelt, die rundet, anstatt den(1/φ)^n
Korrekturausdruck zu verwenden. Dieround(
(auf 9 Dezimalstellen runden) wird benötigt, um Rundungsfehler zu vermeiden.quelle
K - 12
Berechnet die
n
undn-1
Fibonacci-Zahl.Nur die
nth
Fibonacci-Zahl.quelle
Julia, 18 Bytes
quelle
Java, 55
Ich kann hier nicht mit der Prägnanz der meisten Sprachen mithalten, aber ich kann eine wesentlich andere und möglicherweise viel schnellere (konstante Zeit) Methode zur Berechnung der n-ten Zahl anbieten:
n
ist die Eingabe (int oder long), beginnend mit n = 1. Anstelle der Subtraktion werden Binets Formel und Runden verwendet.quelle
0
, es ist die erste Zahl in der Folge, ergibt dies0, 0, 1, 1, 3, 4, 8, 12, 21, 33
für die ersten 10 ZahlenRubin, 25 Zeichen
Die Antwort von st0le wurde gekürzt.
quelle
a=b=1;loop{p a;b=a+a=b}
FAC: Functional APL, 4 Zeichen (!!)
Nicht meins, daher als Community-Wiki gepostet. FAC ist ein Dialekt der APL, den Hai-Chen Tu offenbar 1985 als Dissertation vorgeschlagen hatte. Später schrieb er zusammen mit Alan J. Perlis einen Artikel mit dem Titel " FAC: A Functional APL Language ". Dieser Dialekt von APL verwendet "Lazy Arrays" und erlaubt Arrays von unendlicher Länge. Es definiert einen Operator "iter" (
⌼
), um eine kompakte Definition einiger rekursiver Sequenzen zu ermöglichen.Der monadische ("unäre") Fall von
⌼
ist im Grunde Haskellsiterate
und wird definiert als(F⌼) A ≡ A, (F A), (F (F A)), …
. Der dyadische ( „binary“) Fall definiert ist etwas analog für zwei Variablen:A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …
. Warum ist das nützlich? Nun, wie sich herausstellt, ist dies genau die Art von Wiederholung, die die Fibonacci-Sequenz hat. In der Tat ist eines der Beispiele dafürProduzieren der vertrauten Sequenz
1 1 2 3 5 8 …
.Also, los geht's, wahrscheinlich die kürzestmögliche Fibonacci-Implementierung in einer nicht neuartigen Programmiersprache. : D
quelle
R, 40 Bytes
Ich habe keine R-Lösung gesehen, also:
quelle
05AB1E, 7 Bytes
Code:
Probieren Sie es online!
quelle
Dodos , 26 Bytes
Probieren Sie es online!
Wie es funktioniert
Die Funktion F erledigt das ganze schwere Heben; es wird rekursiv wie folgt definiert.
Immer wenn n> 1 ist , haben wir | n - 1 | = n - 1 <n und || n - 1 | - 1 | = | n - 1 - 1 | = n - 2 <n , daher gibt die Funktion (F (n - 1), F (n - 2)) zurück .
Wenn n = 0 ist , dann ist | n - 1 | = 1> 0 ; wenn n = 1 , dann || n - 1 | - 1 | = | 0 - 1 | = 1 = 1 . In beiden Fällen ruft die versuchten rekursive F (1) eine erhöhen Auslieferung Ausnahme, so F (0) liefert 0 und F (1) zurück 1 .
Zum Beispiel ist F (3) = (F (1), F (2)) = (1, F (0), F (1)) = (1, 0, 1) .
Schließlich ist die Hauptfunktion definiert als
es addiert also alle Koordinaten des von F zurückgegebenen Vektors .
Zum Beispiel ist main (3) = sum (F (3)) = sum (1, 0, 1) = 2 .
quelle
GolfScript, 13 Zeichen
(Meine Antwort von einer früheren Stapelüberlauf-Frage .)
quelle
Desmos , 61 Bytes
Golf gespielt
Klicken Sie auf die
add slider
Schaltfläche fürn
.Die letzte Zeile ist die Ausgabe.
Ungolfed
Ist eine Funktion.
quelle
Cubix , 10 Bytes
Nicht konkurrierende Antwort, da die Sprache neuer ist als die Frage.
Cubix ist eine neue zweidimensionale Sprache von @ETHproductions, bei der der Code in einen Würfel mit passender Größe eingepackt wird.
Probieren Sie es online aus
Dies wird auf die folgende Weise auf einen 2 × 2-Würfel gewickelt
O
gibt den Wert des TOS ausN
Schieben Sie den Zeilenvorschub auf den Stapel/
spiegeln Nordeno
gibt den Charakter des TOS aus;
Pop TOS/
reflektiere nach Osten, nachdem du den Würfel umrundet hast+
Addiere die oberen 2 Werte des Stapels!
Überspringe den nächsten Befehl, wenn TOS 0 ist)
Erhöhen Sie die TOS um 1. Dies startet die Sequenz im Wesentlichen.Dies ist eine Endlosschleife, die die Sequenz mit einem Trennzeichen für Zeilenumbrüche druckt. Es wird die Tatsache ausgenutzt, dass die meisten Befehle die Werte nicht aus dem Stapel entfernen.
Wenn das Trennzeichen ignoriert wird, kann dies mit 5 Bytes erfolgen
.O+!)
quelle
Brainfuck,
16,15,14/13 ZeichenErzeugt die Fibonacci-Sequenz und druckt nichts aus. Auch ist kürzer als die oben.
Dieser hat 14 Zeichen, druckt jedoch ASCII-Zeichen mit den Werten der Fibonacci-Sequenz aus.
quelle