Comments 32
UFO just landed and posted this here
Напишите в 30 строк машину Тьюринга, а дальше хоть Crysis портируйте ;)
+17
По этому вариантов будет не больше 9*7*5*3*1 = 945
А с учетом «зеркальных» (симметричных) раскладок и того меньше.
+3
Представьте очень маленький браузер, который способен отображать предкомпилированный сайт со следующими ограничениями: одна страница может содержать не более 16 символов и 9 ссылок на другие страницы сайта. При этом «зеркальные» отражения можно производить только просьбой пользователю развернуть монитор или играть через зеркало. В реальной игре это можно применять, в этом примере для этого нет места. Но некоторые комбинации, возможно повторяются, не искал.
Если вы запустите генератор, исходный код которого находится в конце статьи, с параметром "-sh > example.html" то можете увидеть принцип работы этой игры на примере HTML.
Если вы запустите генератор, исходный код которого находится в конце статьи, с параметром "-sh > example.html" то можете увидеть принцип работы этой игры на примере HTML.
0
«Для запуска таких программ требуется не только веб страница, но и браузер, разные библиотеки, ядро ОС. На самом деле работают не 30 строк кода, а десятки, сотни мегабайты программного кода, находящиеся в памяти компьютера.»
Однако за Вашими дерганьями int 10h, int 16h тоже стоит немало кода. Но можно это исключить, работая честно — через порты для клавиатуры и пописывая в B800:0000 для вывода на экран). Правда, не в курсе, будет ли это работоспособно под Windows.
Однако за Вашими дерганьями int 10h, int 16h тоже стоит немало кода. Но можно это исключить, работая честно — через порты для клавиатуры и пописывая в B800:0000 для вывода на экран). Правда, не в курсе, будет ли это работоспособно под Windows.
+11
Жду игру в пять строчек на си, где нужно искать утечку памяти.
+25
Вы не поверите, в примере этой статьи, размером с десяток строк на Си (если считать строки с командами, то их всего 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];
}
0
немало примеров того как немало ошибаются люди, использующие слово «немало»!
не мало, а много ошибок со словом «немало» в этих ваших интернетах.
Достало. Говорите «много», если грамоте не обучены.
Тьфу.
не мало, а много ошибок со словом «немало» в этих ваших интернетах.
Достало. Говорите «много», если грамоте не обучены.
Тьфу.
+9
Это всего лишь иллюстрация того факта, что правила раздельного и слитного написания «не» достаточно запутаны. К примеру, пункты 88.2 и 89.3 из
therules.ru/hyphen-particles/
Я считаю, что четкой границы между этими правилами нет. Когда я пишу «немало» и «немного» я имею в виду «много» и «мало» без всякого противопоставления вроде «не мало, а много». Т.е. слитным написанием я подчеркиваю факт отсутствия такого противопоставления.
therules.ru/hyphen-particles/
Я считаю, что четкой границы между этими правилами нет. Когда я пишу «немало» и «немного» я имею в виду «много» и «мало» без всякого противопоставления вроде «не мало, а много». Т.е. слитным написанием я подчеркиваю факт отсутствия такого противопоставления.
-2
Снимаю шляпу! Очень классно.
0
Да..., ну как тут не вспомнить про hugi compo. Не 30 строк, конечно, но зато без таблицы.
+3
Если не убрать из требований «бесконечные» данные, то можно запустить что угодно, написав в 30 строк декодер образа этого «что-угодно» обыкновенным XOR с не очень длинным ключом (так обойдется ограничение на запись двочного кода в одну строку, ведь теперь в строке вовсе не код), а после расшифровки просто передать туда управление.
Если же рассматривать «функции BIOS» в широком смысле, т.е. с возможностью использования UEFI-сервисов, то можно буквально несколькими командами попросить диспетчер DXE загрузить драйвер, написанный на EBC (точно не исполняемый код процессора) и лежащий рядом с нашим кодом. Тоже если стараться и не проверять коды возврата, в 30 строк уложиться можно.
Если же рассматривать «функции BIOS» в широком смысле, т.е. с возможностью использования UEFI-сервисов, то можно буквально несколькими командами попросить диспетчер DXE загрузить драйвер, написанный на EBC (точно не исполняемый код процессора) и лежащий рядом с нашим кодом. Тоже если стараться и не проверять коды возврата, в 30 строк уложиться можно.
+3
чем использование функций биоса лучше функций ОС? И там и там — чужой код. Уж пишите для PC, так память видеоадаптера меняйте вручную.
-1
В видеоадаптере тоже много кода, который переводит байты в изображение :)
+2
И это тоже. Особенно в современных видяхах с акселерацией.
По этой причине, мне кажется, установка ограничений «не юзать ОС» крайне неточным. Если уж «ничего не использовать», то нужно работать в чистой виртуализированной среде с учебным референсным набором инструкций и образцово-показательным пискельным (или векторным) экраном.
Если же мы про суровый тяжкий мир — то юзать надо всё, что доступно. И ОС в том числе.
По этой причине, мне кажется, установка ограничений «не юзать ОС» крайне неточным. Если уж «ничего не использовать», то нужно работать в чистой виртуализированной среде с учебным референсным набором инструкций и образцово-показательным пискельным (или векторным) экраном.
Если же мы про суровый тяжкий мир — то юзать надо всё, что доступно. И ОС в том числе.
0
… и наёмных работников
+3
Если юзать всё, что доступно, то любую игру можно написать в одну строчку bat-файла:
start crysis.exe
0
Добавил параметр для создания исходника с использованием и DOS и BIOS прерываний. Получилось, с некоторыми оптимизациями, до 20 команд сократить.
0
Не надо ляля. Да, там много чего есть, но вот кода как такового — нету. Это сейчас все разленились и стали эмулировать всё это программно — ну так можно вспомнить, что и процессор нонче не команды x86 исполняет, а свой собственный код и, стало быть, где-то есть транслятор в этот код!
+1
Игры в 30 байт: habrahabr.ru/post/119765/
+1
for ( int i=0; i<100; i++)...;
cmp ecx, 100; JNA...
JNA — jump if not above, то есть, на асме написано "<= 100". А во втором примере правильно — там сравнение с "> 99".
В первом примере нужен JL, если signed int.
+2
Комментарий про «хардкор и ассемблер»
-7
UFO just landed and posted this here
* Created on 29 Январь 2014 г., 11:51
Даже немного успел порадоваться о том, как быстро прошел январь :)
+1
Sign up to leave a comment.
Игра в 30 команд Ассемблера