気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/13 03:21
2020/03/13 03:53
2020/03/13 04:28
2020/03/13 04:31
2020/03/13 05:49
回答6件
0
実用的には既に回答が出尽くしているので論理式の簡単化をする方法としてカルノーマップを紹介します。 具体的な手順はウェブ検索すればすぐに出てくるので詳細な説明はせずに今回の質問に当てはめてみます。
まず真理値表としてまとめるとこうなります。
a1 | a2 | b1 | b2 | 結果 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
これをカルノーマップにするとこうなります。
隣接する項をまとめると……
となり、このまとまりが意味する式は
ですから、この式を選言で繋げた A1 && A2 && !B1 || A2 && B1 && B2 || !A1 && B1 && B2
が質問中のフローチャートを積和標準形で表した最小の式です。 (ここでは便宜のためにプログラミング言語 C の演算子を前提として表記しています。)
あくまでも論理式 (and,or,not だけの演算) として、しかも積和標準形で表せる中では最小であるに過ぎませんのでプログラミング言語として表すのであれば各言語に固有の演算子を利用してもっと簡単に出来る可能性はあります。
投稿2020/03/13 09:15
総合スコア5466
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
これでどうでしょう.
評価順もフローの通りかと.
C++
1if( 2 A1 ? 3 ( A2 && (!B1 || B2) ) : 4 ( B1 && B2 ) 5) 6{ /* true */ } 7else 8{ /* false */ }
投稿2020/03/13 06:06
総合スコア11708
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/13 06:08
2020/03/13 06:17
2020/03/13 06:57
0
A1===TRUE && A2===TRUE && B1===FALSE ||
A1===TRUE && A2===TRUE && B1===TRUE && B2===TRUE ||
A1===FALSE && B1===TRUE && B2===TRUE
投稿2020/03/13 03:24
編集2020/03/13 04:51総合スコア115010
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/13 04:51 編集
0
自己解決
自己解決しました。
if ((A1 == true || B1 == true) && (A1 != true || A1 == true && A2 == true) && (B1 != true || B1 == true && B2 == true)) { true } else { false }
投稿2020/03/13 04:14
総合スコア25
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/13 05:04
2020/03/13 05:10
2020/03/13 05:18
2020/03/13 05:21 編集
2020/03/13 05:24
2020/03/13 05:29
2020/03/13 05:34
2020/03/13 05:39
2020/03/13 05:44 編集
2020/03/13 05:53
2020/03/13 05:56
2020/03/13 05:58
2020/03/13 06:06
2020/03/13 06:11
2020/03/13 06:22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。