19

不等式の 2 つの数値を比較するにはどうすればよいですか? (より大きいまたはより小さい)

一桁を比較したい例

1 2
5 3
9 2

4

6 に答える 6

22

これは、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) に到達すると仮定して、さらにコーディングを行うことができます。

コードをコピーする場合は、ドキュメントを削除してください。コードには < のようないくつかの有効なブレインファック記号が含まれているためです。など

于 2012-11-11T01:37:47.450 に答える
10

2つの数値の間の距離がわかったら、同じループの反復で両方をデクリメントしてから、両方がゼロかどうかを確認します。どちらが小さいかがわかります。

例えば:

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

(これはヒントを与えるためだけのものであり、同じ数や同様の問題に注意する必要があります。

于 2011-05-29T15:33:14.490 に答える
4

私もこれについて考えていましたが、これが最善の解決策ではないと確信していますが、少なくともどちらの数が大きいかという質問に答えることができます =)

プログラムは 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)
]
于 2012-07-05T13:34:13.663 に答える
-12

BFにはそのようなものは存在しません。BFの><は、ポインタをそれぞれ右と左に移動します。

于 2011-05-29T15:33:51.807 に答える