Экзотические языки программирования

Модератор: Злобный

Ответить
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Экзотические языки программирования

Сообщение Белый С. »

Представляю вам язык Brainfuck: он состоит всего из восьми символов, которые являются коммандами, и при этом этот язык достаточно мощный, чтобы вычислить всё, что вычислимо в принципе. Переменные отсутствуют, имеется лишь неявный указатель на текущую переменную (ячейку памяти), назовём его p. Комманды следующие:

'>' : перейти на следующую переменную,
'<' : перейти на предыдущую переменную,
'+' : увеличить значение текущей переменной на 1,
'-' : уменьшить значение текущей переменной на 1,
',' : получить значение текущей переменной с входа (в ASCII),
'.' : вывести значение текущей переменной (в ASCII),
'[' : если значение текущей переменной - 0, то перейти на комманду, следующую за соответствующим символом ']',
']' : переход на соответствующий символ '[' в програме.

[off]добавлено Чт Янв 15, 2004 15:48:[/off]

Аналоги комманд языка Brainfuck на C:

> : ++p;
< : --p;
+ : ++*p;
- : --*p;
. : putchar(*p);
, : *p=getchar();
[ : while(*p){
] : }

[off]добавлено Чт Янв 15, 2004 15:59:[/off]

<a href=https://bugaga.ru/jokes/ target=_blank>прикол</a> этого языка, помимо достаточности восьми комманд, является в существовании очень коротких интерпретаторов для него, например,

Код: Выделить всё

char m[9999],*n[99],*r=m,*p=m+5000,**s=n,d,c;main(){for(read(0,r,4000);c=*r;
r++)c-']'||(d>1||(r=*p?*s:(--s,r)),!d||d--),c-'['||d++||(*++s=r),d||(*p+=c==
'+',*p-=c=='-',p+=c=='>',p-=c=='<',c-'.'||write(2,p,1),c-','||read(2,p,1));}
Привожу расписанный код:

Код: Выделить всё

char m[9999],*n[99],*r=m,*p=m+5000,**s=n,d,c;
main()
{for(read(0,r,4000);c=*r;r++)
  c-']'||(d>1||(r=*p?*s:(--s,r)),!d||d--),
  c-'['||d++||(*++s=r),
  d||(*p+=c=='+',*p-=c=='-',p+=c=='>',p-=c=='<',c-'.'
    ||write(2,p,1),c-','||read(2,p,1));
}
Гонял на Борланд С, надо конечно добавить соответственно #include, но РАБОТАЕТ!

[off]добавлено Чт Янв 15, 2004 16:07:[/off]

Ссылки:
http://www.muppetlabs.com/~breadbox/bf/
http://home.planet.nl/~faase009/Ha_BF.html
http://esoteric.sange.fi/brainfuck/
http://cydathria.com/bf/
http://daniel.lorch.cc/projects/brainfuck/
http://www.hevanet.com/cristofd/brainfuck/
http://www.ecs.soton.ac.uk/~sdh300/stuffage/bf.net/
http://koeln.ccc.de/prozesse/zombies/br ... dex.en.xml

[off]добавлено Чт Янв 15, 2004 16:18:[/off]

Пример: ,[->++<]>. вводит число, удваивает его и выводит его.

Интересные задания:
- возвести число в квадрат
- вывести как можно большее число программой небольшой длины
- программа печати простых чисел
- программа, печатающая собственный текст
- интерпретатор Brainfuck на Brainfuck
Аватара пользователя
x
Продвинутый
Сообщения: 957
Зарегистрирован: Вт янв 07, 2003 10:15

Сообщение x »

http://directory.google.com/Top/Compute ... bfuscated/

вон, тут их куча. тоже когда-то прикалывался с них. это мужики от неча делать дурью маются и пишут языки програзма :)
Аватара пользователя
qnx_empty
Юзер
Сообщения: 67
Зарегистрирован: Ср мар 19, 2003 22:15
Откуда: inet

Сообщение qnx_empty »

блин а почему етот Brainfuck не пашет под хр можно как нибуть ето зделать
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

qnx_empty, под ЭксПи? Это в каком ещё смысле? :insane:
Аватара пользователя
qnx_empty
Юзер
Сообщения: 67
Зарегистрирован: Ср мар 19, 2003 22:15
Откуда: inet

Сообщение qnx_empty »

ну конечно потупому выглядит я его врубаю а он сразу вырубаеться типо приложение закончило свою работу только не смейтесь я в хр полный ноль
Ответить

Вернуться в «Программирование»