В последнее время (несколько лет назад) на веб-сайтах программировалось некоторое оживление о реализации 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 запасных), если бы это было законно, что это не так
Специальная благодарность
Мне было разрешено опубликовать это с согласия Ашелли здесь