19

如何将两个数字与不等式进行比较?(大于或小于)

我想比较个位数例如

1 2
5 3
9 2

等等

4

6 回答 6

22

这是比较两个数字的最佳方法。为什么,因为如果你足够聪明,你可以在更大的程序中使用相同的代码。它具有高度的可移植性。

假设我们有两个数字 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),您可以进行进一步编码

如果您复制代码,请删除文档。因为代码包含一些有效的脑残符号,例如 < 。, ETC。

于 2012-11-11T01:37:47.450 回答
10

一旦你知道两个数字之间的距离是多少,你应该在同一个循环迭代中减少它们,然后检查两者是否为零:你会明白哪个更小。

例如:

+++++ > +++ < [->-< check is first is zero, then second]

(这只是给你一个提示,你必须注意相同的数字和类似的问题。

于 2011-05-29T15:33:14.490 回答
4

我也在考虑这个问题,虽然我确信这不是最好的解决方案,但至少它可以回答哪个数字更大的问题 =)

程序要求输入两个字符,如果第一个较小则输出“<”,如果较大则输出“>”,如果相等则输出“=”。输出一个字符后,程序通过要求额外的输入而停止。

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

希望更清楚一点:

+                                   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)
]
于 2012-07-05T13:34:13.663 回答
1

我做了一个解决方案,它给你一个布尔值,指针总是在同一点。

这是它一开始的样子:

0 0 0 a b 0 0
      p

这是两个可能的输出:

0 0 0 0 0 1 0   #true
            p

0 0 0 0 0 0 0   #false
            p

编码:

 >>>>
    [                 # while cell != 0
      -               #   decrement a
      [               #   if a != 0
        >-            #     decrement b 
        [             #     if b != 0
          <           #       go left
          <-<         #       undo the finally-block;
        ]             #     finally-block
        <[-]>         #       clear a
        >+>           #       res = 1; move to end-position
        <<<           #       undo the finally-block
      ]               #   finally-block
      >[-]>>          #     clear b; res = 0; move to end-position
    ]                 #

缩小版:

 >>>>[-[>-[< <-<]<[-]>>+><<<]>[-]>>]
于 2020-03-30T13:52:59.263 回答
-2

给定两个数字 A 和 B,如果 A 大于 B,以下代码将打印 A,如果 B 大于 A,则打印 B,如果两者相等,则打印 C。

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

于 2017-02-05T21:25:58.593 回答
-12

BF中不存在这样的东西。BF 中的><分别将指针向右和向左移动。

于 2011-05-29T15:33:51.807 回答