見出し画像

【Minecraft】信号の比較をするレッドストーン回路

入力された信号の強度を比較し、等しいかどうかを判定するレッドストーン回路を4種類、簡易版の回路を1種類紹介します。


前知識

コンパレータによる信号検出

コンパレータは様々なブロックの情報を検知し、信号の強度として出力することができます。
例えば、不透過ブロックの裏側に設置された額縁のアイテムの向きを、強度0~8として出力します。

額縁のアイテムの向きの検知

コンパレータの二つのモード

コンパレータは右クリックすることで「比較モード」と「減算モード」を切り替えることができます。
減算モードかどうかはランプの点灯で判別できます。
比較モードでは、入力が横の信号の強度以上ならば入力そのままを出力し、そうでなければ出力されません。
減算モードでは、入力から横の信号の強度を引いた強度の信号を出力します。マイナスになることはありません。

比較モードと減算モード

回路

比較回路A

入力A(赤いウール)と入力B(黒いウール)の信号を比較し、等しくなければ出力します。

真ん中のレッドストーンの強度は c = max(a, b) ですので、output = max(c - a, c - b) となります。これは a と b の差の絶対値です。

比較回路A

入力が等しければランプが消えます。

入力が等しい場合
入力Aを切り替えると、入力Bと等しい時にランプが消える
入力Bを切り替えても同様に、入力Aと等しい時にランプが消える

比較回路B

入力A(赤いウール)と入力B(黒いウール)の信号を比較し、等しくなければ出力します。
このパターンでは二箇所から出力が取れます。また、入力のレイアウトにも少し自由があります。

これも同様に真ん中のレッドストーンの強度が c = max(a, b) で、output = max(c - a, c - b) となります。これは a と b の差の絶対値です。

比較回路B

こちらも入力が等しければランプが消えます。

入力Aを切り替えてみる
入力Bを切り替えてみる

簡易比較回路C

入力A(赤いウール)と入力B(黒いウール)の信号を比較し、等しくなければ出力します。
このパターンでも二箇所から出力が取れますが、普通のブロックではレッドストーンダストが繋がらないので、リピーターか的ブロックを使う必要があります。
また、入力のレイアウトにも少し自由があります。

簡易比較回路C

ただし、この回路は厳密には比較ではなく、b-(a-1) が 1 以外の時に出力する、という簡易回路になっています。
そのため、a が 0 と 1 の場合を区別できません。

入力Aが 0 でも 1 でも入力B(=1)と等しいと判定されてしまう

入力Bにはそのような制限はありません。

入力Bは 0 と 1 を区別できる

それ以外は、比較として使用することができます。

入力Aを切り替えてみる
入力Bを切り替えてみる

比較回路D

入力A(赤いウール)と入力B(黒いウール)の信号を比較し、等しくなければ出力します。
レイアウトの自由は少ないですが、シンプルで作りやすいです。
設定したパスワードを入れないと開かないドアなどを作る時に重宝します。

下の層。レッドストーントーチが両方オフなら入力が一致しています
上の層まで置いたところ
回路全景
入力Bを切り替えてみる

比較回路E

入力A(赤いウール)と入力B(黒いウール)の信号を比較し、等しくなければ出力します。
出力は普通に置くと繋がらないので、リピーターや的ブロックを使う必要があります。また、レッドストーンダストを置いたブロックにトーチを差して下方向に出力することもできますので、かなりレイアウトの自由があります。

下の層。レッドストーントーチが両方オフなら入力が一致しています
上の層まで置いたところ。二つのトーチを結ぶように置けば、どのような形でも構いません
回路全景
入力Bを切り替えてみる

まとめ

入力された二つの信号の強度を比較する5つの回路を紹介しました。

回路Aは入力の差の絶対値を出力します。比較は厳密ですが、回路が大きく、レイアウトの自由が低いです。

回路Bは入力の差の絶対値を出力します。比較は厳密で、回路もそれなりにコンパクトです。

簡易回路Cは簡易的に比較を行い、差がある場合は1 を出力します。
「入力Aの信号の0と1を区別できない」という制限がありますが、それさえ気をつければ回路もコンパクトでレイアウトの自由度も高いです。

回路Dは入力をシンプルに比較します。コンパクトで、仕掛けなどに最適です。

回路Eも入力をシンプルに比較します。こちらも仕掛けに使いやすいです。

改訂履歴

2024/01/21

  • 初版

2024/01/25

  • 回路D、回路Eを追加

この記事が気に入ったらサポートをしてみませんか?