不等式の 2 つの数値を比較するにはどうすればよいですか? (より大きいまたはより小さい)
一桁を比較したい例
1 2
5 3
9 2
等
これは、2 つの数値を比較するための最良の方法です。理由は、十分な知性があれば、より大きなプログラムで同じコードを使用できるからです。移植性が高いからです。
2 つの数値 a、b があるとします。if( a>=b ) とelseの2 つのブロックがあります。
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]
(これはヒントを与えるためだけのものであり、同じ数や同様の問題に注意する必要があります。
私もこれについて考えていましたが、これが最善の解決策ではないと確信していますが、少なくともどちらの数が大きいかという質問に答えることができます =)
プログラムは 2 つの文字を要求し、最初の文字が小さい場合は '<'、大きい場合は '>'、等しい場合は '=' を出力します。1 文字を出力した後、プログラムは追加の入力を求めて停止します。
+>,>,<<[>-[>>>]<[>>-[>++++++++++[->++++++<]>.,]++++++++++[->++++++<]>+.,]<-[>>>]<<[>>>++++++++++[->++++++<]>++.,]<<<]
うまくいけば、やや明確になります:
+ 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)
]
BFにはそのようなものは存在しません。BFの>
と<
は、ポインタをそれぞれ右と左に移動します。