LINUX.ORG.RU

brainfuck: сравнить два числа


0

0

Изучаю brainfuck, язык простой, увлекательный. Практически всё пишется без проблем. Но вот столкнулся с проблемой: никак не могу сравнить два числа (<, >, <=, >=, <0, >0). Гугление не помогло. Единственное решение, что пришло в голову: отнимать второе число от первого и если первое станет 0, то поднять флаг. Я в правильном направлении я двигаюсь? А то это какое-то монструозное решение. Но я сейчас уставший, мозг не работает, ничего не получается. Пока устрою перекур. Может быть кто подскажет элегантное решение, если знает?

Эх, вот если бы было простое решение как узнать положительное или отрицательное число — всё бы заметно упростилось...

Эх, вот если бы было простое решение как узнать положительное или отрицательное число

Джаже в школе это преподают. Знак числа хранится в старшем бите. т.е. для восьмибитного представления в восьмом (но щас актуально 64 бита).

wfrr ★★☆
()

Да, и откель в брейнфаке операция вычитания?

wfrr ★★☆
()

>отнимать второе число от первого и если первое станет 0, то поднять флаг. Я в правильном направлении я двигаюсь? ... А то это какое-то монструозное решение...

Не знаю как в Brainfuck, но центральный процессор именно так и делает.

pathfinder ★★★★
()

/me посмотрел на аватарку и увидел знак «лямбды». Подумал что kde4-hater хаскелефаг.

Изучаю brainfuck, язык простой, увлекательный

Нет, мне правда кажется что хаскеле*бы мазохисты.

tia
()

смотри http://ru.wikipedia.org/wiki/Brainfuck раздел:

Программирование на языке Brainfuck

«Каждый начинающий программировать на Brainfuck немедленно сталкивается со следующими проблемами: ... » Ну и там описано как делать основные конструкции

pathfinder ★★★★
()

>Практически всё пишется без проблем. Но вот столкнулся с проблемой: никак не могу сравнить два числа

You made my day :D

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

Думаю, что двоичный brainfuck был бы гораздо удобнее. Там бы таких проблем не было: я бы просто использовал как условие знаковый бит. А так мне приходится делить на 128, а это в моей реализации 32 перехода и 55 инструкций.

А 64 бита — это понты. Каково будет быстродействие brainfuck64, если я начну делить на 9223372036854775808 используя операции + и -? :)

kde4-hater
() автор топика
Ответ на: комментарий от pathfinder

>> отнимать второе число от первого и если первое станет 0, то поднять флаг. Я в правильном направлении я двигаюсь? ... А то это какое-то монструозное решение...

Не знаю как в Brainfuck, но центральный процессор именно так и делает.

Уверен, существующие ЦП использует для этого сумматор, а потом просто копируют знаковый бит в Sign Flag.

Интересно, каким бы быстродействием обладал бы процессор, построенный на современных технологиях с двоичными инструкциями Spoon — диалекта brainfuck?

kde4-hater
() автор топика

> kde4-hater

мужик-2, не узнаю вас в гриме

opensuse
()
Ответ на: комментарий от kde4-hater

И какой профит с этого г#на?

anonymous
()

когда что-то вроде stl для браэйнфака?

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