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 перемещают указатель вправо и влево соответственно.