Napisz fragment kodu JavaScript, który wywołuje alert
tablicę zawierającą pierwsze 50 liczb Fibonacciego w kolejności. Można używać tylko następujących znaków: +!()[]
.
Jako odniesienie, twój kod musi być funkcjonalnie równy:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
Nie możesz zakładać żadnych treści na stronie - twój program będzie działał w konsoli na about:blank
. Podobnie, nie możesz „oszukiwać” i przechowywać żadnych ustawień w plikach cookie, ustawieniach lub innych danych. Twoje rozwiązanie musi działać przy każdej nowej instalacji najnowszej przeglądarki Google Chrome lub Firefox w dowolnym systemie operacyjnym. W razie wątpliwości staraj się zachować jak największą przenośność.
Najmniejszy kod źródłowy w bajtach wygrywa.
Odpowiedzi:
7576 znaków
Firefox / Safari 9 (WebKit Nightly)
Głównym oszczędzaniem bajtów jest
fill()
Większość znaków niealfanumerycznych (szczególnie
;
i>
) jest bardzo droga, więc naprawdę staram się zminimalizować ich użycie.Scenariusz
Chrome (11,605)
Oryginalny:
;
jest bardzo drogi.Skrypt: Pastebin .
źródło
falsefalse
jako zmienna nazwa jest mniej znaków niżt
lubf
czy cokolwiek może pomóc ogolić kilka bardziej off! Szkoda, że nie możemy wyprodukować więcej niż 50 liczb, ponieważ50
jest krótszy niż48
....pop()
,.shift()
a.splice()
jednak wszystkie one zbyt wielu znaków! Pomyśl, że @vihan ma to wszystko! Jeślialert()
ing na każdym etapie jest do zaakceptowania, możliwe jest całkowite pominięcie rewersu, ale wydaje mi się, że to trochę łamie zasady ...15 943 bajtów
Właśnie zakodowałem wartości i użyłem kompilatora JScrewit .
Kod oryginalny:
Kod JSFuck:
Chociaż kodowanie twarde jest dłuższe niż generator golfowy w normalnym js, liczby są (względnie; P) łatwo reprezentowane w JsFuck.
źródło
302871241912288 bajtówOryginalny golf:
Unshift i Reverse są tańsze niż Push dla niewielkiej oszczędności:
Nie pasuje! Limit 30 000 znaków! Pastebin tutaj.Próbowałem jsfuck.com, ale to dało mi 62399 bajtów.
Zgodnie z sugestią Stefnotcha zmieniłem kompatybilność tylko na Chrome i dramatycznie zmniejszyłem liczbę. JSFuck wygenerowany przez jscrew.it :
źródło
122851218312069113991125211105 bajtówOryginalny kod:
Po usunięciu średnika i zastąpieniu go „\ n”: (Dzięki Dom Hasting .)
Używanie „concat” zamiast „push” do zapisywania niektórych bajtów:
Zaktualizowany kod:
Usuwanie pustej przestrzeni:
Usuwanie pustego miejsca po znaku „+”:
Kod JSFuck:
źródło
falsefalse
ifalse0
jako nazwy zmiennych zamiastt
if
i\n
jest mniej znaków niż;
(zgodnie z jscrew.it w każdym razie), więc możesz być w stanie zastąpić je również dla oszczędności. Jeśli możliwe jest wyświetlenie pierwszych 52 liczb, 50 też jest o połowę mniejsze niż 48 ... Mam nadzieję, że to pomaga!for(i=0;i<48;)
i,f.push
aby uzyskać więcej oszczędności, a zastąpienie nazw zmiennych na pewno pozwoli zaoszczędzić trochęf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
ii
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
=![]+[+[]]
.concat
był to jedyny sposób, w jaki mogłem pomóc zredukować tę metodę!Firefox, 7446 bajtów
Źródło:
źródło
14 097 bajtów
Pierwszy raz robię jedną z nich lub koduję w tym języku, więc wrócę i zobaczę, czy mogę ją zmniejszyć
Oryginalny kod:
Kod JSFuck:
źródło