LINUX.ORG.RU
ФорумTalks

[быдлокод]Brainfuck


0

1
 +++++++++++++++++++++++++++++++++++++++++++++
 +++++++++++++++++++++++++++.+.-----------------------------.+++++++++++++++++++++++++++++.++++++++++.---------------.+.+++++++++.

Помогите, пожалуйста, разобраться с Ъ методом, наподобие Hello World!

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]
<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[
<++++>-]<+.[-]++++++++++.

Ничего вменяемого, что можно почитать про сабж не нашёл.


> Ничего вменяемого, что можно почитать про сабж не нашёл.

Зачем что-то читать, когда всего несколько комманд

different_thing ()

Элементарно, Ватсон.

>+++++++++

Записываем во вторую ячейку число 9.

[<++++++++>-]

Пока во второй ячейке не будет нуль, прибавляем в первую ячейку 8. В итоге, после цикла указатель стоит на вторую ячейку с нулём, а в первой ячейке число 9*8 = 72, что является ASCII кодом буквы H. Сдвигаем указатель на первую ячейку и выводим H.

<.

Остальные буквы выводятся подобными арифметическими фокусами.

PolarFox ★★★★★ ()
Ответ на: комментарий от fedor

Всё элементарно. Этот алгоритм достаточно прост и прямолинеен. Глаз брейнфаковского хелловорлдщика подобен глазу лиспового хелловорлдщика, который видит структуру кода за этими грустновесёлыми смайликами.

Ну вот […] — цикл. Треугольных скобок в нём мало, и сразу понятно, какая из ячеек становится счётчиком. Далее практически очевидно (по балансу треугольных скобочек), какая из ячеек — счётчик. И на каждый декремент счётчика приходится прибавление 8 к первой ячейке. Исходное значение счётчика 9. По прямому определению умножения 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 = 8 * 9 = 72.

Брейнфак — самый простой язык, который я видел (:

PolarFox ★★★★★ ()
Ответ на: комментарий от fedor

В коде вообще из характерных приёмов брейнфакинга я вижу умножение на константу с прибавлением (все циклы вида [<+*n>-]) и обнуление ячейки [-]

PolarFox ★★★★★ ()
Ответ на: комментарий от derlafff

>дальше не читал про него

4.2

Это Тьюринг-полный ЯП!

drBatty ★★ ()
Ответ на: комментарий от vkos

>BF не стековый.

тоже 4.2

стековый.

ЗЫЖ сейчас делаю быстродействующий компилятор BF, с довольно мощным препроцессором, и с разветвлённой оптимизацией. Пригодится для некоторых задач AI, как внутренний язык программирования.

drBatty ★★ ()
Ответ на: комментарий от fedor

>Ну в лиспе действительно всё очень логично. 3 скобки открылись по-ходу кода, три закрылись в конце.

ещё-бы. Можно подумать, в BF не так. Язык конечно мозгоклюйственный, но писать на нём таки можно.

drBatty ★★ ()
Ответ на: комментарий от fedor

>Интересно, а крестики-нолики реально написать?

я думаю реально, если использовать алгоритм из этой книжки: http://www.ozon.ru/context/detail/id/1413592/

Этот дядька собрал ГА из спичечных коробков, ИМХО на мозгоклюее это будет ещё проще. Я только интерпретатор допилю, там на самом деле не всё так просто (учитывая что я хочу, что-бы это всё хоть как-то быстро работало).

drBatty ★★ ()
Ответ на: комментарий от xtron

>можно не значит нужно

я не собираюсь на нём писать. но вот распарсить индукцию на BF будет в разы проще, а это позволит выкидывать множество инвариантов - C такого не позволяет.

drBatty ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.