Comments 20
!™
+4
Эх, было бы у меня столько свободного времени…
+14
Когда-то писал сравнение 2-х чисел на brainfuck-e. Есть конструкция if-then-else. Не уверен, насколько там все корректно, но работало.
,>,< # вводим 2 числа
[->-<] # if a=b (вычитаем из обоих 1 пока первое не обнулится)
>[.>>-<] # else (выводим разницу если числа различаются)
>+[-.....] # then (выводим разницу (0) 5 раз если числа одинаковы)
+4
По моему достаточно красиво. А как Вы писали алгоритм? Мне пришлось с этим столкнуться в первые 10-15 минут работы с этим языком. Я пробовал стандартную блочную схему алгоритма, но от неё мало толку, если только в уме переводить всё на Си, и писать алгоритм на нём. Так же пробовал просто писать несколько байт, и на каждой новой строчке, их преобразования. В этом случае я запутался в итерациях. Есть ли универсальный метод алгоритмизации?
+1
Метод хороший. Но интереснее, когда этот прием приходится использовать не в конце, а в середине программы — тогда после условного сдвига надо как-то вернуться на то же место ленты.
0
Я бы написал как-нибудь так:
Интереснее было бы в случае равенства печатать 5 == n. Тогда так:
Коды не проверялись.
,[->+>+<<] # вводим число и дублируем его. На ленте _0 n n
++++++[->>--------->+++++>+++++++++<<<<] # вычитаем из второй копии 54, а дальше создаем 30 и 54
>>+>++>- # подправляем сдвиги, чтобы получилось 0 n n-53 32 53
.<. # печатаем '5 '
<[>+.-<[-]] # если n-'5'!=0, печатаем '!', переделав его из пробела, и обнуляем счетчик
>>++++++++.<.<<. # печатаем "= n".
Интереснее было бы в случае равенства печатать 5 == n. Тогда так:
,[->+>+<<]
++++++[->>--------->+++++>+++++++++<<<<]
>>+>++>->+
.++++++++<. # сразу после вывода 5 переделываем его в =
<[>+.->>-<<<[-]] # если n-'5'!=0, печатаем '!', переделав его из пробела, и обнуляем счетчики
>>>[<.>-] # если надо, печатаем =
<.<.<<. # печатаем "= n".
Коды не проверялись.
+2
Теперь для вас задача — сделать обращение к массиву по переменному индексу.
0
Это тоже решено. Можете посмотреть как делали морской бой на brianfuck. Там же есть описание как сделать более универсальное if-then-else.
0
Есть задача проще — ввести два символа m,n и если m<n, напечатать «m<n» а иначе — «m>=n».
0
Мне, как незнакомому с этим языком, свернуло мозг напрочь.
Это потрясающе :)
Это потрясающе :)
+3
,>, //считываем
[< (0) [->>+>+<<<] >>>[-<<<+>>>] < (2) >>+<< [[-]>>-<<] <-<->] //делаем магию
после магии:
если числа равны то в 0ой ячейке 0 в 4ой 0
если первое число больше то в 4ой 1
если первое меньше то в 4ой 0
+ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ // для вывода
<[ >+< [-]] // числа не равны
>>>>[ <<<-->>> [-]] // первое число меньше
<<<. //вывод
может кому будет интересно
вводятся два символа, и программа выводит >, < или =
+2
Стоило бы в заголовке написать, что это Brainfuck — а то с приходом хабов это плохо видно
+3
Only those users with full accounts are able to leave comments. Log in, please.
Условия if...else