2011-07-10 3 views
-2

知っていますかm、k、lの値が異なる場合、以下のコードをより良い形式で書き換えることができますか?MathematicaのconditionalConstructにネストされている場合

すべてのm、k、lについてbをチェックしたいネストされたifループですが、以下のコードは大きすぎますので、簡略化したいと思います。私はできますか?

If[b > m, If[(b - 1) > k, If[(b - 2) > l, b - 3, b - 2], 
If[(b - 1) > l, b - 2, b - 1]], If[b < m, 
If[(b + 1) > k, If[(b + 2) < l, b + 3, b + 2], If[(b + 1) < l, b + 2, b + 1]], 
If[b > k, If[(b - 1) > l, b - 2, b - 1], If[b < k, If[(b + 1) < l, b + 2, b + 1], 
If[b > l, b - 1, If[b < l, b + 1, b]]]]]] 

ありがとう!

+1

http://codereview.stackexchange.com/ –

+0

「If」はループではなく条件付き構成であることに注意してください。 – Szabolcs

+0

@Sebastian Paaske Torholm非常にありがとう、私はそこにも投稿しました – noni

答えて

0
  1. あなたはIfb > mb < mの両方のための書類のほか、b > kb < kを持って注意してください。これらのペアはそれぞれIfステートメントの2つの半分になります。
  2. すべての最上位レベルの条件をWhichステートメントに変換します。詳しくは、Mathematicaのドキュメントを参照してください。
  3. blの関係をより簡単にWhichのステートメントに変換することもできます。
+0

ありがとうございます私はどの文章をチェックします。ありがとう – noni

+0

私はここで必要なものとは思っていません。また、私はb> mとb noni

+0

私の条件をすべてチェックしていないので、最初のcontitionの結果が返されています。それは私が望むものではありません。 – noni

関連する問題