Комментарии 32
НЛО прилетело и опубликовало эту надпись здесь
Напишите в 30 строк машину Тьюринга, а дальше хоть Crysis портируйте ;)
По этому вариантов будет не больше 9*7*5*3*1 = 945
А с учетом «зеркальных» (симметричных) раскладок и того меньше.
Представьте очень маленький браузер, который способен отображать предкомпилированный сайт со следующими ограничениями: одна страница может содержать не более 16 символов и 9 ссылок на другие страницы сайта. При этом «зеркальные» отражения можно производить только просьбой пользователю развернуть монитор или играть через зеркало. В реальной игре это можно применять, в этом примере для этого нет места. Но некоторые комбинации, возможно повторяются, не искал.
Если вы запустите генератор, исходный код которого находится в конце статьи, с параметром "-sh > example.html" то можете увидеть принцип работы этой игры на примере HTML.
Если вы запустите генератор, исходный код которого находится в конце статьи, с параметром "-sh > example.html" то можете увидеть принцип работы этой игры на примере HTML.
«Для запуска таких программ требуется не только веб страница, но и браузер, разные библиотеки, ядро ОС. На самом деле работают не 30 строк кода, а десятки, сотни мегабайты программного кода, находящиеся в памяти компьютера.»
Однако за Вашими дерганьями int 10h, int 16h тоже стоит немало кода. Но можно это исключить, работая честно — через порты для клавиатуры и пописывая в B800:0000 для вывода на экран). Правда, не в курсе, будет ли это работоспособно под Windows.
Однако за Вашими дерганьями int 10h, int 16h тоже стоит немало кода. Но можно это исключить, работая честно — через порты для клавиатуры и пописывая в B800:0000 для вывода на экран). Правда, не в курсе, будет ли это работоспособно под Windows.
Жду игру в пять строчек на си, где нужно искать утечку памяти.
Вы не поверите, в примере этой статьи, размером с десяток строк на Си (если считать строки с командами, то их всего 5) была ошибка. За неделю статья собрала 30000 просмотров, но никто не заметил эту ошибку. Пример не был спрятан в спойлер, но был в середины статьи.
do scanf("%i",&i); while ( i<1 && i>9 ); // Ошибка в while, которое контролирует диапазон вводимых чисел [1;9].
Если вам хочется найти утечку памяти в пяти строках кода игры
Замените тело main следующим кодом, и добавьте сгенерированные данные из программы, приведённой в этом посте.
while (1) {
printf(text[data_pos]);
int *i=malloc(sizeof(int));
do scanf("%i",i); while ( *i<1 || *i>9 );
data_pos=data_addres[data_pos][*i-1];
}
немало примеров того как немало ошибаются люди, использующие слово «немало»!
не мало, а много ошибок со словом «немало» в этих ваших интернетах.
Достало. Говорите «много», если грамоте не обучены.
Тьфу.
не мало, а много ошибок со словом «немало» в этих ваших интернетах.
Достало. Говорите «много», если грамоте не обучены.
Тьфу.
Это всего лишь иллюстрация того факта, что правила раздельного и слитного написания «не» достаточно запутаны. К примеру, пункты 88.2 и 89.3 из
therules.ru/hyphen-particles/
Я считаю, что четкой границы между этими правилами нет. Когда я пишу «немало» и «немного» я имею в виду «много» и «мало» без всякого противопоставления вроде «не мало, а много». Т.е. слитным написанием я подчеркиваю факт отсутствия такого противопоставления.
therules.ru/hyphen-particles/
Я считаю, что четкой границы между этими правилами нет. Когда я пишу «немало» и «немного» я имею в виду «много» и «мало» без всякого противопоставления вроде «не мало, а много». Т.е. слитным написанием я подчеркиваю факт отсутствия такого противопоставления.
Снимаю шляпу! Очень классно.
Да..., ну как тут не вспомнить про hugi compo. Не 30 строк, конечно, но зато без таблицы.
Если не убрать из требований «бесконечные» данные, то можно запустить что угодно, написав в 30 строк декодер образа этого «что-угодно» обыкновенным XOR с не очень длинным ключом (так обойдется ограничение на запись двочного кода в одну строку, ведь теперь в строке вовсе не код), а после расшифровки просто передать туда управление.
Если же рассматривать «функции BIOS» в широком смысле, т.е. с возможностью использования UEFI-сервисов, то можно буквально несколькими командами попросить диспетчер DXE загрузить драйвер, написанный на EBC (точно не исполняемый код процессора) и лежащий рядом с нашим кодом. Тоже если стараться и не проверять коды возврата, в 30 строк уложиться можно.
Если же рассматривать «функции BIOS» в широком смысле, т.е. с возможностью использования UEFI-сервисов, то можно буквально несколькими командами попросить диспетчер DXE загрузить драйвер, написанный на EBC (точно не исполняемый код процессора) и лежащий рядом с нашим кодом. Тоже если стараться и не проверять коды возврата, в 30 строк уложиться можно.
чем использование функций биоса лучше функций ОС? И там и там — чужой код. Уж пишите для PC, так память видеоадаптера меняйте вручную.
В видеоадаптере тоже много кода, который переводит байты в изображение :)
И это тоже. Особенно в современных видяхах с акселерацией.
По этой причине, мне кажется, установка ограничений «не юзать ОС» крайне неточным. Если уж «ничего не использовать», то нужно работать в чистой виртуализированной среде с учебным референсным набором инструкций и образцово-показательным пискельным (или векторным) экраном.
Если же мы про суровый тяжкий мир — то юзать надо всё, что доступно. И ОС в том числе.
По этой причине, мне кажется, установка ограничений «не юзать ОС» крайне неточным. Если уж «ничего не использовать», то нужно работать в чистой виртуализированной среде с учебным референсным набором инструкций и образцово-показательным пискельным (или векторным) экраном.
Если же мы про суровый тяжкий мир — то юзать надо всё, что доступно. И ОС в том числе.
… и наёмных работников
Если юзать всё, что доступно, то любую игру можно написать в одну строчку bat-файла:
start crysis.exe
Добавил параметр для создания исходника с использованием и DOS и BIOS прерываний. Получилось, с некоторыми оптимизациями, до 20 команд сократить.
Не надо ляля. Да, там много чего есть, но вот кода как такового — нету. Это сейчас все разленились и стали эмулировать всё это программно — ну так можно вспомнить, что и процессор нонче не команды x86 исполняет, а свой собственный код и, стало быть, где-то есть транслятор в этот код!
Игры в 30 байт: habrahabr.ru/post/119765/
for ( int i=0; i<100; i++)...;
cmp ecx, 100; JNA...
JNA — jump if not above, то есть, на асме написано "<= 100". А во втором примере правильно — там сравнение с "> 99".
В первом примере нужен JL, если signed int.
Комментарий про «хардкор и ассемблер»
НЛО прилетело и опубликовало эту надпись здесь
* Created on 29 Январь 2014 г., 11:51
Даже немного успел порадоваться о том, как быстро прошел январь :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Игра в 30 команд Ассемблера