Js1k to konkurs, który polega na tym, aby stworzyć dowolne demo w javascript - które zmieści się w 1024 bajtach
Swoją pracę przygotowałem trzy miesiące temu i kompletnie zapomniałem, że zbliża się termin nadsyłania zgłoszeń - dlatego postanowiłem wrzucić ją w internety w wersji "uncut" - która po skompresowaniu i usunięciu niepotrzebnych rzeczy ma ok 1600 bajtów.
Cały mój pomysł polegał na tym, aby w tym kilobajcie upchać jak najwięcej różnych efektów
@Fiori11: Kod jest nieskompresowany ani nieobfuskowany - trochę ciężko w to uwierzyć patrząc na niego, ale pisałem to z palca http://rezoner.net/labs/js1k-2013/2/script.js - dodam natomiast, że po trzech miesiącach sam nie mam pojęcia co tam się dzieje.
@ubiquos: efekt rzeczywiście sam w sobie nie powala ale gdy wielkość pliku w którym to wszystko jest zawarte mieści się w 1 kB to jest to jakiś wyczyn. Podobnie jak swego czasu był chyba konkurs na demo w exe-ku o wielkości do 4 kB. Powstawały demka wraz z dźwiękiem o długościach >3 min Przykład: http://www.youtube.com/watch?v=0w_xEUoK79o
Wie ktoś może, czy takie kody są kompresowane automatem typu UglifyJS (tak jak jQuery), czy do takiego kodu trzeba podejść całkiem indywidualnie żeby się zmieścić w limicie?
@kaluznikow: Nie wiem co masz za ajfona, ale u mnie to działa zarówno na apce wykopu [która jak zgaduje obsługiwana jest przez safari] jak i na zainstalowanym chrome. http://imgur.com/a/vilbR#0 - tutaj dowód. Niekiedy lekko przycinało, ale zazwyczaj śmigało dobrze.
Komentarze (66)
najlepsze
Swoją pracę przygotowałem trzy miesiące temu i kompletnie zapomniałem, że zbliża się termin nadsyłania zgłoszeń - dlatego postanowiłem wrzucić ją w internety w wersji "uncut" - która po skompresowaniu i usunięciu niepotrzebnych rzeczy ma ok 1600 bajtów.
Cały mój pomysł polegał na tym, aby w tym kilobajcie upchać jak najwięcej różnych efektów
begin
hakuj system
end
1k sequencer:
http://js1k.com/2013-spring/demo/1506
1k speech synthesizer:
http://js1k.com/2012-love/demo/1274
Po pierwsze już od samego początku oszczędzasz znaki - przykłady:
1) Gdzie możesz nie korzystasz z
if/else
a operatora warunkowego
x = warunek ? a : b;
2) Liczby powyżej trzech cyfer można zapisać za pomocą notacji wykładniczej np
1e3
zamiast
1000
3) Powtarzające się bloki kodu ładujesz do funkcji
4) Ja dokonałem ręcznej abrewiacji wszystkich zmiennych, co okazało się niepotrzebne, bo to samo robią