Niedawno (kilka lat temu) na stronach programistycznych pojawiło się trochę szumu na temat implementacji Tetris w 140 bajtach . ...
Okazuje się, że choć jest niewielki, jest to uproszczona wersja Tetris, a nawet kompletna implementacja. Tylko podstawowa funkcja logiczna mieści się w 140 bajtach JavaScript. Aby go uruchomić, potrzebujesz kolejnych ~ 840 znaków HTML.
Możemy zrobić lepiej!
Wyzwanie polega na wdrożeniu pełnej wersji „Binary Tetris” w jak najmniejszej liczbie tweetów.
Zasady binarne Tetris:
- Program musi wyświetlać pole gry zawierające co najmniej 5 kolumn i 6 rzędów komórek.
- Można stosować dowolną metodę wyświetlania, o ile bloki i krawędzie pola są wyraźnie oznaczone.
- Muszą być co najmniej dwa rodzaje bloków:
#
i##
. Dodatkowe wsparcie dla bloków, takich jak###
lub bloki kątowe w kształcie litery L, zostanie przeze mnie ocenione: P i najbardziej kompletna gra binarnych tetris (najwięcej bloków, takich jak funkcje oryginalne i rotacyjne) wygra moje szczęście i możliwe nagrody za 50 powtórzeń. - Nowe bloki są dodawane do pola w górnym rzędzie, a jedna komórka bloku musi zajmować środkową kolumnę.
- Bloki schodzą w kierunku dolnego rzędu ze stałą prędkością. Bloki muszą opadać nawet bez udziału użytkownika.
- Kiedy bloki dotykają dolnej części pola lub dolnego bloku, przestają spadać i zostają unieruchomione. Dodano nowy blok.
- Gdy wszystkie kolumny w rzędzie są wypełnione blokami, wiersz jest opróżniany, a wszystkie stałe bloki powyżej są rozwijane o jeden wiersz.
- Program musi reagować na naciśnięcia klawiszy. Muszą być 3 unikalne klucze, które wykonują następujące funkcje
- przesuń bieżący blok w lewo o 1 kolumnę
- przesuń bieżący blok w prawo o 1 kolumnę
- przesuń bieżący blok w dół o 1 rząd
- Każdy tweet może mieć tylko 140 znaków. Dozwolone jest stosowanie znaków wielobajtowych, które można umieścić w tweetach.
Zasady tego, co może znajdować się w tweecie, są proste. Jeśli możesz tweetować, możesz go użyć.
Języki interpretowane podlegają tym samym zasadom. Każda sekcja musi być zgodna ze specyfikacjami. Dopóki nie wystąpią błędy w czasie wykonywania (a reszta jest zgodna ze specyfikacjami), twoja odpowiedź jest poprawna. Zasady gry w golfa:
Ponieważ oryginalna implementacja była „tweetowalna”, to wyzwanie wymaga tego samego. Zgłoszenia muszą być przesyłane jako seria tweetów (wiersze o długości 140 znaków lub mniej).Pierwszy tweet musi zawierać nazwę kompilatora / tłumacza, nazwę programu i wszelkie argumenty wiersza poleceń
- zostanie zapisany jako plik „P0”
- Następujące N tweetów musi zawierać program jako serię wierszy.
- Każdy tweet zostanie zapisany w pliku o nazwie T <n>, gdzie n oznacza 1..N
- Każda linia zostanie dodana do poprzednich linii i skompilowana lub zinterpretowana. Musi wygenerować poprawny plik obiektowy lub program.
- Program nie musi działać, dopóki nie zostanie dodany ostatni wiersz.
Program zostanie uruchomiony w następujący sposób (pseudo-bash)
interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > $prog $interp $prog $args die("FAIL") if $? #detect error done
Tłumacz musi być powszechnie dostępnym programem wykonywalnym, który jeszcze nie implementuje Tetris.
Punktacja :
Najmniej tweetów, w tym P0. Więzy podzielone przez największą liczbę wolnych znaków (140 * num tweetów - łączna liczba znaków).
Przykładowe wpisy
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
Wynik = 3 (334 rezerwowy)
cc a.c ;a.out
main(){/*cool prog here*/}
Wynik = 2 (241 zapasowy)
tetris
Wynik = 1 (134 rezerwowy), jeśli było to zgodne z prawem, a nie jest
Szczególne podziękowania
Pozwolono mi to opublikować za zgodą Ashelly tutaj