Schreiben Sie einen JavaScript-Code, der alert
mit einem Array aufruft, das die ersten 50 Fibonacci-Zahlen der Reihe nach enthält. Sie dürfen nur die folgenden Zeichen verwenden: +!()[]
.
Als Referenz muss Ihr Code funktional den folgenden Angaben entsprechen:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
Sie dürfen keinen Inhalt auf der Webseite annehmen - Ihr Programm wird in der Konsole auf ausgeführt about:blank
. Ebenso dürfen Sie keine Einstellungen in Cookies, Einstellungen oder anderen Daten "schummeln" und speichern. Ihre Lösung muss auf jeder Neuinstallation von Google Chrome oder Firefox unter jedem Betriebssystem funktionieren . Versuchen Sie im Zweifelsfall, so mobil wie möglich zu bleiben.
Kleinster Quellcode in Bytes gewinnt.
Antworten:
7,576 Zeichen
Firefox / Safari 9 (WebKit Nightly)
Der Hauptbytesparer ist
fill()
Die meisten nicht-alphanumerischen Zeichen (insbesondere
;
und>
) sind sehr teuer, daher versuche ich wirklich, ihre Verwendung zu minimieren.Skript
Chrome (11.605)
Original:
;
ist sehr teuer.Drehbuch: Pastebin .
quelle
falsefalse
da ein Variablenname weniger Zeichen alst
oderf
oder irgendetwas enthält, kann es Ihnen helfen, sich ein paar mehr zu rasieren! Schade, dass wir nicht mehr als 50 produzieren können, weil50
es kürzer ist als48
....pop()
,.shift()
und ,.splice()
aber sie alle zu viele Zeichen hinzufügen! Denken Sie @vihan hat es abgedeckt! Wenn esalert()
in jeder Phase akzeptabel ist, kann man das Gegenteil zwar komplett überspringen, aber ich denke, das ist ein bisschen regelwidrig ...15.943 Bytes
Ich habe die Werte nur fest codiert und den JScrewit-Compiler verwendet .
Ursprünglicher Code:
JSFuck Code:
Obwohl die Hardcodierung in normalen Js länger ist als bei einem Golf-Generator, lassen sich Zahlen in JsFuck (vergleichsweise; P) leicht darstellen.
quelle
302871241912288 BytesUrsprünglicher Golf:
Unshift und Reverse sind für eine leichte Ersparnis günstiger als Push:
Passt nicht Maximal 30K Zeichen! Pastebin hier.Ich habe versucht, jsfuck.com, aber das gab mir 62399 Bytes.
Auf Vorschlag von Stefnotch wurde die Kompatibilität nur auf Chrome geändert und die Anzahl drastisch gesenkt. JSFuck generiert von jscrew.it :
quelle
12,2851218312069113991125211105 BytesOriginalcode:
Nachdem Sie das Semikolon entfernt und durch '\ n' ersetzt haben: (Danke, Dom Hasting .)
Verwenden Sie 'concat' anstelle von 'push', um einige Bytes zu speichern:
Aktualisierter Code:
Leerzeichen entfernen:
Leerzeichen nach '+' entfernen:
JSFuck Code:
quelle
falsefalse
undfalse0
als Variablennamen anstelle vont
und zu speichern,f
und es\n
gibt weniger Zeichen als;
(laut jscrew.it sowieso), so dass du diese möglicherweise auch zum Speichern ersetzen kannst. Wenn es möglich ist, die ersten 52 Zahlen anzuzeigen, sind 50 auch halb so groß wie 48 ... Hoffe, das hilft!for(i=0;i<48;)
und entfernenf.push
, um die Variablen zu speichern. Durch Ersetzen der Variablennamen werden auf jeden Fall einige Werte fürf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
undi
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
= gespeichert![]+[+[]]
.concat
war die einzige andere Möglichkeit, die ich sehen konnte, um auch diese Methode zu reduzieren!Firefox, 7446 Bytes
Quelle:
quelle
14,097 Bytes
Wenn ich zum ersten Mal eine dieser Optionen oder eine Codierung in dieser Sprache mache, komme ich zurück und sehe nach, ob ich sie verkleinern kann
Originalcode:
JSFuck Code:
quelle