如何使用不等式比较两个数字?(大于或小于)
我想比较单个数字。 例如:
1 2
5 3
9 2
等等。
这是比较两个数字的最佳方法。为什么呢?因为如果您足够聪明,可以在更大的程序中使用相同的代码。它非常便携。
假设我们有两个数字a和b。 我们有两个块:if( a>=b )和else, 希望这已经足够了。
0 1 0 a b 0
让数组变成这样。指向 (4) 即指向 a。
让数组变成这样。指向 (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符号,如< . ,等等。
一旦你知道两个数字之间的距离,你应该在同一次循环迭代中递减它们两个,然后检查两个数字是否都为零:这样你就可以知道哪一个更小。
例如:
+++++ > +++ < [->-< check is first is zero, then second]
(这只是给您一个提示,您需要注意相等数字和类似问题。)
我也在思考这个问题,虽然我确定这不是最好的解决方案,但至少它可以回答哪个数字更大的问题 =)
该程序要求输入两个字符,如果第一个字符小于第二个字符,则输出'<',如果第一个字符大于第二个字符,则输出'>',如果它们相等,则输出'='。在输出一个字符后,该程序通过请求额外的输入来停止。
+>,>,<<[>-[>>>]<[>>-[>++++++++++[->++++++<]>,]++++++++++[->++++++<]>+,]<-[>>>]<<[>>>++++++++++[->++++++<]>++,]<<<]
希望更加清晰明了:
+ 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)
]
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
] #
压缩版本:
>>>>[-[>-[< <-<]<[-]>>+><<<]>[-]>>]
给定两个数字A和B,以下代码将打印A,如果A大于B,则打印B,如果B大于A,则打印C,如果两者相等。
>>>>>>>>>++++++[>+++++++++++<-]>[>+>+>+<<<-]>+>->
<<<<<<<<<<<,>,<
[->-<[>]<<]>>>[>>]>>>>>>>>.
>
和<
分别将指针向右和向左移动。
[>]
实际上是一个无限循环。它应该是[>[-]]
才能终止。 - Timtechb
是零,[>]
将终止,然后<<
将停留在a
之前的单元格上,该单元格为零。如果 b 不为零,则将停留在其旁边的零处,并且循环将继续,直到a
或b
为零为止。 - Sylwester