Circular Dependency【Code Complete編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Circular Dependencyステージ
Circular Dependencyステージのゴールは、循環参照を回路を作ることです。
Circular Dependencyステージを解く
1つのNOTゲートを挟んだループする回路を組みます。この回路はリングオシレーターと呼ばれます。
※これまでワイヤーを引く際に、始点と終点を意識する必要はありませんでした。それは電流の流れが入力ピンから出力ピンの方向に定まっていたためです。今回のような順序回路では、最初にクリックした位置が電流が流れる始点となります。ワイヤー上をDNA風のアイコンが移動しますが、その移動する向きが一定になるようにします。ここでは循環するようにします。
状態が存在しないので、論理不能な回路です。
非論理回路ではありませんが、電圧が永久に振動します。その振動はあまりにも高速であるため、回路が焼き切れる恐れがあります。
※状態の非存在が、振動を引き起こしています。
エラーが発生していますので、[Run]ボタンを押してもテストは走りません。
本ステージはあえてエラーを作り上げるという特別なステージであり、[Check]ボタンを押すとクリアできます。
Read moreを押すと、Circular Dependencyの解説を確認できます。
Turing Completeのシミュレーターでは循環参照を許可せず、代わりにエラーになります。
ただし、次回以降の問題に登場するDelayed Lineコンポーネントを挟んだ場合は例外とします。このコンポーネントは1tick分の遅延を引き起こし、循環参照を引き起こさないためです。
別解
2つのNOTゲートをループさせた回路は、状態が2つある順序回路です。
・「左側のワイヤーがT、右側のワイヤーがF」の状態
・「左側のワイヤーがF、右側のワイヤーがT」の状態
※振動は引き起こされません。