如何解决Brainfuck比较2个大于或小于的数字
| 如何比较不相等的两个数字? (大于或小于) 我想比较个位数 例如1 2
5 3
9 2
等等
解决方法
这是比较两个数字的最佳方法。原因是,如果您足够聪明,便可以在较大的程序中使用相同的代码。它具有高度的可移植性。
假设我们有两个数字a,b。
我们有两个块:if(a> = b)否则,
希望它足够。
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)的情况下进行进一步的编码
如果您复制代码,请删除文档。因为代码包含一些有效的“疯子”符号,例如<。等
, 一旦知道两个数字之间的距离,您应该在同一循环迭代中将两个数字减一或减一,然后检查两个数字是否为零:您将了解哪个较小。
例如:
+++++ > +++ < [->-< 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)
]
, 给定两个数字A和B,如果A大于B,则下面的代码将打印A;如果B大于A,则下面的代码将打印B;如果两个相等,则打印C。
>>>>>>>>>++++++[>+++++++++++<-]>[>+>+>+<<<-]>+>->
<<<<<<<<<<<,<
[->-<[>]<<]>>>[>>]>>>>>>>>.
, BF中不存在这样的东西。 BF中的>
和<
将指针分别向右和向左移动。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。