Brainfuck сравнивает 2 числа как больше или меньше, чем
Как сравнить два числа с неравенством? (больше или меньше)
Я хочу сравнить отдельные цифры
Например
1 2
5 3
9 2
и др.
Ответы
Ответ 1
Это лучший способ сравнить два числа. Поэтому, если вы достаточно умны, вы можете использовать один и тот же код в более крупных программах. Он очень портативен.
Предположим, что мы имеем два числа a, b.
у нас есть два блока: if (a >= b) и else,
Надейтесь на это достаточно.
0 1 0 a b 0
Сделайте массив таким. И укажите на (4), то есть на пункт a
+>+< This is for managing if a=0 and b=0
[->-[>]<<] This is a magic loop. if a is the one which
reaches 0 first (a<b),then pointer will be at(4).
Else it will be at (3)
<[-
// BLOCK (a>=b)
//You are at (2) and do whatever you want and come back to (2).
//Its a must
]
<[-<
// BLOCK(a<b)
//You are at (1) and do whatever you want and come back to (1).
//Its a must
]
Это не повлияет на следующий программный код, так как оба блока кода будут входить в (1). Вы можете сделать дальнейшее кодирование, предполагая, что указатель достигнет (1)
Пожалуйста, удалите документацию, если вы скопируете код. Поскольку код содержит некоторые действительные символы мозгового мозга, такие как <, и т.д.
Ответ 2
Как только вы узнаете, какое расстояние между двумя номерами вы должны или уменьшите оба из них в одной и той же итерации цикла, а затем проверьте, чтобы оба были равны нулю: вы поймете, какой из них меньше.
Например:
+++++ > +++ < [->-< check is first is zero, then second]
(это только для того, чтобы дать вам подсказку, вам придется позаботиться о равных количествах и подобных проблемах.
Ответ 3
Я тоже об этом думал, и, хотя я уверен, что это не лучшее решение, по крайней мере, он может ответить на вопрос, какое число больше =)
Программа запрашивает два символа, выходы '<' если первое меньше, ' > ', если оно больше, и '=', если они равны. После вывода одного char программа останавливается, запрашивая дополнительный ввод.
+>,>,<<[>-[>>>]<[>>-[>++++++++++[->++++++<]>.,]++++++++++[->++++++<]>+.,]<-[>>>]<<[>>>++++++++++[->++++++<]>++.,]<<<]
Надеюсь, несколько яснее:
+ init (0) to 1
>, read (1)
>, read (2)
<<[ loop forever
>-[>>>] decrement (1) going to (4) if (1) != 0
<[ goto (0) == 1 if (1) reached 0 (otherwise goto (3))
>>-[>++++++++++[->++++++<]>.,] decrement (2) printing lessthan if larger than 0
++++++++++[->++++++<]>+., if (2) == 0 print '='
]
<-[>>>] decrement (2) going to (5) if (2) != 0
<<[ goto (0) == 1 if (2) reached 0 (otherwise goto (3))
>>>++++++++++[->++++++<]>++., print largerthan since (2) reached 0 first
]
<<< goto(0)
]
Ответ 4
Учитывая два числа A и B, следующий код будет печатать A, если A больше B, B, если B больше, чем A и C, если оба равны.
>>>>>>>>>++++++[>+++++++++++<-]>[>+>+>+<<<-]>+>->
<<<<<<<<<<<,>,<
[->-<[>]<<]>>>[>>]>>>>>>>>.
Ответ 5
В BF такой вещи нет. >
и <
в BF перемещают указатель вправо и влево соответственно.