当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

Delayed LinesとOdd Ticks【Turing Complete編】

2023年9月12日

はじめに

いつもブログをご覧いただきありがとうございます。

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Delayed Linesステージ

信号を2tick遅延の回路を組む問題です。

Delayed Linesステージを解く

使えるコンポーネントはDelayed Lineのみです。これを通過する度に1tickの遅延が発生します。

1:Delayed Lineを使って回路を組む

今回は2tickの遅延を発生させればよいので、InputとOutputの間に2つのDelayed Lineを挟むだけです。

2:テストする

[Run]ボタンからテストすると早すぎて挙動がわからないので、[Next]ボタンをクリックしてください。

Inputが「赤⇒緑」になると瞬時に1つ目のDelayed Lineに到達します。そのため、Delayed Lineも緑になります。しかし、ここで出力するのに遅延が発生するので、2つ目のDelayed Lineはまだ赤のままです。

[Next]ボタンを押すと、Inputが「緑⇒赤」になるので1つ目のDelayed Lineは赤です。しかし、Delayed Lineは1tick分の遅延なので、この時点で出力が緑になります。瞬時に2つ目のDelayed Lineに到達し、緑になります。

この時点でDelayed Lineによって遅延が発生することを確認できました。

後は[Next]ボタンを叩きながら挙動を追いかけてください。

クリアすると、Delayed Lineコンポーネントがアンロックされます。

Odd Ticksステージ

偶数tickの際にON、偶数tickの際にOFFになる信号、すなわち1tickごとにONとOFFを繰り返す信号を出力する回路を組む問題です。

Odd Ticksステージを解く

1:リングオシレーターとDelayed Linesコンポーネントを組み合わせる

始めにリングオシレーター(1つのNOTゲートのみのループ回路)の回路を組みます。

※NOTコンポーネントはひっくり返してあります。[Space]キーでコンポーネントを回転できます。

リングオシレーターは禁止されていることは、Circular Dependencyの問題で解説しました。

2:Delayed Linesコンポーネントを挟む

リングオシレーターにDelayed Linesコンポーネントを挟みます。この回路は状態はシミュレーターで許可されています。

※Delayed Lineコンポーネントには入出力の向き(左から右に流れる)があるので注意してください。今回の回路では、回転せずに配置することになります。

3:出力ピンとつなげる

回路はONとOFFを繰り返す状態を維持しています。

つまり、この回路から出力ピンにワイヤーを伸ばせば、ONとOFFを1tickごとに繰り返す信号を取り出せます。

つなげるパターンとしては2つあります。

・パターン1・・・偶数tickの際にON、偶数tickの際にOFFになる信号を出力する。問題は正解。

・パターン2・・・偶数tickの際にOFF、偶数tickの際にONになる信号を出力する。問題は不正解。

この違いはテストすると明確になります。

4:クリアするとOdd Ticksコンポーネントがアンロックされます。

このコンポーネントは、ONとOFFを繰り返す信号を生成するので、クロックジェネレーターとして使えることが期待できます。