Нещодавно (кілька років тому) на веб-сайтах програмування було чути певну інформацію про реалізацію Tetris у 140 байтах . ...
Виявляється, хоча він невеликий, але це спрощена версія Tetris і навіть не повна реалізація. Тільки основна логічна функція відповідає 140 байтам Javascript. Щоб насправді його запустити, потрібно ще ~ 840 символів HTML.
Ми можемо зробити краще!
Це завдання полягає в тому, щоб реалізувати повну версію "Бінарного тетрісу" якомога менше твітів.
Правила бінарного тетрісу:
- Програма повинна відображати ігрове поле, що містить щонайменше 5 стовпців і 6 рядків комірок.
- Можна використовувати будь-який спосіб відображення, якщо чітко позначені блоки та краї поля.
- Повинно бути принаймні два типи блоків:
#
і##
. Додаткова підтримка блоків, таких як###
або кутові блоки у формі L, буде викликана мною: P, і найповніша гра в бінарний тетріс (більшість блоків, як оригінальні функції та функції обертання) виграє моє щастя та можливу нагороду до 50 представників. - Нові блоки додаються до поля у верхньому рядку, і одна комірка блоку повинна займати центральний стовпчик.
- Блоки спускаються до нижнього ряду з фіксованою швидкістю. Блоки повинні спускатися навіть без введення користувача.
- Коли блоки торкаються дна поля або нижнього блоку, вони припиняють падати і закріплюються на місці. Додано новий блок.
- Коли всі стовпці в рядку заповнені блоками, рядок спорожняється, а всі нерухомі блоки внизу випадають на один рядок.
- Програма повинна реагувати на натискання клавіш. Повинно бути 3 унікальних клавіші, які виконують такі функції
- блок зміщення струму зліва 1 стовпець
- блок зміщення струму справа 1 стовпець
- зміщення поточного блоку вниз на 1 ряд
- Кожен твіт може містити лише 140 символів. Використання багатобайтових символів, які можна помістити в твіти, дозволено.
Правила того, що може бути в твітті, прості. Якщо ви можете твітувати його, ви можете використовувати його.
Інтерпретовані мови відповідають тим же правилам. Кожен розділ повинен відповідати специфікаціям. Поки не трапляються помилки в часі запуску (а решта дійсна відповідно до специфікацій), ваша відповідь є дійсними Правилами гольфу:
Оскільки оригінальна реалізація була "твіт", це завдання вимагає того ж. Записи повинні бути спроможні передаватися у вигляді твітів (рядки, що мають 140 символів або менше).Перший твіт повинен містити ім’я компілятора / інтерпретатора, ім'я програми та будь-які аргументи командного рядка
- він буде збережений як файл "P0"
- Наступні N твітів повинні містити програму у вигляді рядків рядків.
- Кожен твіт зберігатиметься у файлі з назвою T <n>, де n дорівнює 1..N
- Кожен рядок буде доданий до попередніх рядків і складений або інтерпретований. Він повинен створити дійсний об’єктний файл або програму.
- Програма не повинна бути функціональною, поки не буде доданий останній рядок.
Програма буде виконуватися наступним чином (псевдо-баш)
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
Інтерпретатор повинен бути загальнодоступною виконуваною програмою, яка вже не реалізує Tetris.
Оцінка :
Найменше твітів, включаючи P0. Зв'язки, розбиті на найбільшу кількість запасних символів (твітів 140 num - загальна кількість символів).
Приклад записів
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
Оцінка = 3 (334 запасних)
cc a.c ;a.out
main(){/*cool prog here*/}
Оцінка = 2 (241 запасних)
tetris
Оцінка = 1 (134 запасних) якби це було законно, а це не так
Особлива подяка
Мені було дозволено розмістити це за згодою Ашеллі тут