如何将两个数字与不等式进行比较? (大于或小于)
我想比较一位数 例如
1 2
5 3
9 2
等
答案 0 :(得分:20)
这是比较两个数字的最佳方法。为什么,如果你足够聪明,你可以在更大的程序中使用相同的代码。它非常便携。
假设我们有两个数字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)
如果您复制代码,请删除文档。因为代码包含一些有效的brainfuck符号,例如&lt; 。等等。
答案 1 :(得分:10)
一旦你知道两个数字之间的距离,你应该在相同的循环迭代中应该或减少它们,然后检查两者是否为零:你会理解哪一个更小。
例如:
+++++ > +++ < [->-< check is first is zero, then second]
(这只是为了给你一个提示,你必须注意同等数量和类似的问题。
答案 2 :(得分:4)
我也在考虑这个问题,虽然我确定这不是最佳解决方案,但至少它可以回答哪个数字更大的问题=)
程序要求两个字符,输出'&lt;'如果第一个更小,'&gt;'如果它更大,'='如果它们相等。输出一个字符后,程序会通过询问其他输入来暂停。
+>,>,<<[>-[>>>]<[>>-[>++++++++++[->++++++<]>.,]++++++++++[->++++++<]>+.,]<-[>>>]<<[>>>++++++++++[->++++++<]>++.,]<<<]
希望有点清楚:
+ 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)
]
答案 3 :(得分: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
] #
缩小版本:
>>>>[-[>-[< <-<]<[-]>>+><<<]>[-]>>]
答案 4 :(得分:-1)
给定两个数字A和B,如果A大于B,则下面的代码将打印A;如果B大于A,则打印B;如果两者相等,则打印C.
>>>>>>>>>++++++[>+++++++++++<-]>[>+>+>+<<<-]>+>->
<<<<<<<<<<<,>,<
[->-<[>]<<]>>>[>>]>>>>>>>>.
答案 5 :(得分:-10)
BF中没有这样的东西。 BF中的>
和<
分别将指针移动到右侧和左侧。