В последнее время (несколько лет назад) на веб-сайтах программировалось некоторое оживление о реализации Tetris в 140 байт . ...
Оказывается, что, хотя он небольшой, он представляет собой упрощенную версию тетриса, а не полную реализацию. Только основная логическая функция помещается в 140 байтов Javascript. Чтобы запустить его, вам понадобится еще ~ 840 символов HTML.
Мы можем сделать лучше!
Эта задача состоит в том, чтобы реализовать полную версию «Бинарного тетриса» в как можно меньшем количестве твитов.
Правила двоичного тетриса:
- Программа должна отображать игровое поле, содержащее не менее 5 столбцов и 6 строк ячеек.
- Можно использовать любой метод отображения, если четко обозначены блоки и края поля.
- Должно быть как минимум два типа блоков:
#
и##
. За поддержку дополнительных блоков, таких как###
или угловые блоки в форме буквы L, я проголосую: P и самая полная игра бинарного тетриса (большинство блоков, таких как функции оригинала и вращения) принесут мне счастье и возможную награду до 50 повторений. - Новые блоки добавляются в поле в верхнем ряду, и одна ячейка блока должна занимать центральный столбец.
- Блоки спускаются к нижнему ряду с фиксированной скоростью. Блоки должны опускаться даже без ввода пользователя.
- Когда блоки касаются нижней части поля или нижнего блока, они перестают падать и фиксируются на месте. Новый блок добавлен.
- Когда все столбцы в строке заполнены блоками, строка очищается, и все фиксированные блоки выше выпадают на одну строку.
- Программа должна реагировать на нажатия клавиш. Должно быть 3 уникальных клавиши, которые выполняют следующие функции
- сдвинуть текущий блок влево на 1 столбец
- сдвинуть текущий блок вправо на 1 столбец
- сдвинуть текущий блок вниз на 1 строку
- Каждый твит может содержать не более 140 символов. Использование многобайтовых символов, которые можно поместить в твиты, разрешено.
Правила того, что может быть в твите, просты. Если вы можете чирикать это, вы можете использовать его.
Интерпретируемые языки следуют тем же правилам. Каждый раздел должен соответствовать спецификациям. До тех пор, пока не возникнут ошибки времени выполнения (а остальные действительны в соответствии со спецификациями), ваш ответ действителен. Правила игры в гольф:
поскольку исходная реализация была «твиттерной», эта задача требует того же. Записи должны быть в состоянии передаваться в виде серии твитов (не более 140 символов).Первый твит должен содержать имя компилятора / интерпретатора, имя программы и любые аргументы командной строки
- он будет сохранен как файл "P0"
- Следующие N твитов должны содержать программу в виде ряда строк.
- Каждый твит будет сохранен в файле с именем T <n>, где n равно 1..N
- Каждая строка будет добавлена к предыдущим строкам и скомпилирована или интерпретирована. Он должен создать действительный объектный файл или программу.
- Программа не должна быть функциональной, пока не будет добавлена последняя строка.
Программа будет работать следующим образом (псевдо-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
Интерпретатор должен быть общедоступной исполняемой программой, которая еще не реализует тетрис.
Подсчет очков :
немного твитов, включая P0. Связи разбиты по наибольшему количеству запасных символов (140 * количество твитов - общее количество символов).
Пример записи
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 запасных), если бы это было законно, что это не так
Специальная благодарность
Мне было разрешено опубликовать это с согласия Ашелли здесь
источник
Ответы:
Python 3, оценка 5 твитов (242 запасных, считая P0)
-19 байтов благодаря Джонатану Аллану !
Запасной счет не учитывает переводы строк между твитами.
Чирикать 1 (Декларация, 12 байт)
Чирикать 2 (70 байт)
Чирикать 3 (129 байт)
Чирикать 4 (113 байт)
Чирикать 5 (134 байта)
Полная программа (449 байт)
Делает хакерские взломы и сохраняет поле и фигуру в двух целых числах. Я постараюсь опубликовать объяснение в ближайшее время.
Примечание. Это работает только в Windows, но его можно переключить в Linux через
msvcrt
→getch
и"cls"
→"clear"
. Кроме того, ввод символов не работает на Python IDLE, поэтому я рекомендую запускать его в другом месте.источник
\xe0
это четыре байта, а не один, поэтому твит 3 должен быть 130. Вы, кажется, пропустилиtime.sleep(.1);c+=1
твит 4 и изменили порядок (я не знаю, является ли изменение порядка преднамеренным), и опять-таки\n
два байта не один, поэтому должно быть 134 .sleep
на моем компьютере это возможно.c%10<1
и удалитьc=0
.JavaScript (4 твита /
343317 байт / 243 запасных)Не совсем уверен насчет требований формата заголовка и твитов, поэтому, пожалуйста, сообщите, если это нужно исправить. Я уверен, что еще немного можно сбрить.
Чирикать 1 - P0 (11 байт)
Чирикать 2 (82 байта)
Чирикать 3 (126 байт)
Чирикать 4 (98 байт)
Запустите его в JSFiddle: https://jsfiddle.net/CookieJon/7Lenhcge/
(Нажмите на панель вывода, чтобы выделить фокус для событий клавиатуры)
источник