Basic Logic基礎の論理
Crude Awakening粗野な目覚め
このゲームにおけるインプットとアウトプット、ワイヤーのシグナルの伝達について学ぶ。
解答(ネタバレ注意)
NAND GateNANDゲート
NANDゲートの導入。入力を変化させ、下部の真理値表の出力を正しく埋める。
解答(ネタバレ注意)
NOT GateNOTゲート
NANDゲートを用いて、NOTゲートを作成する。
解答(ネタバレ注意)
AND GateANDゲート
NAND、NOTゲートを用いて、ANDゲートを作成する。
解答(ネタバレ注意)
NOR GateNORゲート
NAND、NOTゲートを用いて、NORゲートを作成する。
解答(ネタバレ注意)
OR GateORゲート
NAND、NOTゲートを用いて、NORゲートを作成する。
解答(ネタバレ注意)
Always On常にON
常に出力がオンとなる回路を作成する。
解答(ネタバレ注意)
Second Tick2番目のティック
真理値表の2番目のみがONとなる回路を作成する。
解答(ネタバレ注意)
XOR GateXORゲート
今までに作成したゲートを利用して、XORゲートを作成する。
解答(ネタバレ注意)
Bigger OR Gateより大きなORゲート
3入力のORゲートを作成する。
解答(ネタバレ注意)
Bigger AND Gateより大きなANDゲート
3入力のANDゲートを作成する。
解答(ネタバレ注意)
XNOR GateXNORゲート
今までに作成したゲートを利用して、XNORゲートを作成する。
解答(ネタバレ注意)
Arithmetic算術
Binary Racer2進数レーサー
10進数から2進数への変換問題に回答する。レベル4到達でクリア。
Double Trouble2重の問題
4つの入力のうち2つ以上がONの時にONを出力する回路を作成する。
解答(ネタバレ注意)
ODD Number of Signalsシグナルの奇数
ONの入力の数が奇数の時にONを出力する回路を作成する。
奇数を判定するには、XORゲートが有用です。
解答(ネタバレ注意)
Counting Signalsシグナルのカウント
ON入力の数を3ビットの2進数として出力する回路を作成する。
解答(ネタバレ注意)
Double the Number数を2倍に
バイト入力を2倍にして出力する回路を作成する。
バイト入力を右 or 左にシフトすると値はどうなる?
解答(ネタバレ注意)
Half Adder半加算器
半加算器を作成する。
解答(ネタバレ注意)
Full Adder全加算器
全加算器を作成する。
半加算器を2つ使用します。
解答(ネタバレ注意)
Byte ORバイトOR
2つのバイト入力の各ビットのORをとる回路を作成する。
解答(ネタバレ注意)
Byte NOTバイトNOT
バイト入力の各ビットのNOTをとる回路を作成する。
解答(ネタバレ注意)
Adding Byteバイトの加算
2つのバイト入力の加算を行う回路を作成する。
解答(ネタバレ注意)
Negative Numbers負の数字
10進数から"符号つき"2進数への変換問題に回答する。レベル4到達でクリア。
最上位ビットは負の符号を表します。負の値であれば、必ず最上位ビットはONになっています。
Signed Negator正負の反転
バイト入力の正負を反転させて出力する回路を作成する。
2の補数の作り方の手順を考えて取り組みましょう。
解答(ネタバレ注意)
1 bit decoder1ビットデコーダー
1ビットの2進数を10進数に変換する回路を作成する。
解答(ネタバレ注意)
3 bit decoder3ビットデコーダー
3ビットの2進数を10進数に変換する回路を作成する。
解答(ネタバレ注意)
Logic Engine論理エンジン
2つのバイト入力のOR、NAND、NOR、ANDの出力をインプットのコードに応じて切り替えられる回路を作成する。
バイト用のORとNOTを利用して、NAND/ANDを作成するとコンパクトになります。
解答(ネタバレ注意)
Memory記憶
Circular Dependency循環参照
循環参照を行う回路を作成する。
出力を入力に戻して、循環するようにしてみましょう。
解答(ネタバレ注意)
Delayed Lines遅延回路
入力を2ティック送らせて出力する回路を作成する。
解答(ネタバレ注意)
Odd Ticks交互に出力
ON/OFFを交互に出力する回路を作成する。
入力は常にOFFなので、必ずしも入力を使う必要はありません。
解答(ネタバレ注意)
Bit Switchビット切り替え
入力ビットを切り替える回路を作成する。
※利用できるモジュールの制限あり。
解答(ネタバレ注意)
Bit Inverterビット反転
反転フラグが有効である時、入力ビットを反転させる回路を作成する。
解答(ネタバレ注意)
Input Selector入力の選択
2つのバイト入力のどちらを出力するかを選択できる回路を作成する。
解答(ネタバレ注意)
The Busザ・バス
2つずつのバイト入出力のどちらを入出力するかを選択できる回路を作成する。
解答(ネタバレ注意)
Saving Gracefully華麗に保存
保存フラグが有効である時、入力ビットを保存する回路を作成する。
循環参照を用いて、入力を保存する回路を作成する事が出来ます。
解答(ネタバレ注意)
Saving Bytesバイトの保存
バイト入力を保存/出力フラグに応じて、保存/出力を行う回路を作成する。
解答(ネタバレ注意)
Little Box小さな箱
8ビットレジスタを4つ使用し、レジスタの指定により4つの任意のレジスタを選択して値を保存/出力できる回路を作成する。
レジスタは保存/出力フラグが有効である時のみ入力/出力を行います。
解答(ネタバレ注意)
Counterカウンタ
1ティックに1ずつ加算されるカウンタを作成する。ただし、上書きフラグが有効である時はバイト入力の値でカウンタの数字を上書きし、その値からカウントアップを再開する。
レジスタと加算器をそれぞれ1つずつ使用すると簡単です。※使用しなくても作成可能
解答(ネタバレ注意)
CPU ArchitectureCPUアーキテクチャ
Arithmetic Engine算術エンジン
2つのバイト入力のOR、NAND、NOR、AND、加算、減算の出力をインプットのコードに応じて切り替えられる回路を作成する。
OR/NOR・NAND/AND・加算/減算の組で共通のモジュールを利用すると、コンパクトに作成出来ます。
解答(ネタバレ注意)
Registersレジスタ
6つのレジスタ・入力/出力に対して、レジスタの指定に応じて保存/出力できる回路を作成する。
基本的な考え方は、"Little Box"と同じですが、今回はレジスタの指定に3ビットデコーダーが利用できます。
Component Factoryコンポーネント・ファクトリー
コンポーネント・ファクトリーに関する説明。
以降のレベルではコンポーネント・ファクトリーのコンポーネントが利用可能なので、回路が大きくなってしまう場合は積極的に利用しましょう。
Instruction Decoder命令デコーダー
バイト入力の上位2ビットを利用して、即値・計算・コピー・条件の命令を切り替えられる回路を作成する。
解答(ネタバレ注意)
Calculations計算
"Registers"で作成した回路に"Arithmetic Engine"で作成したALUを追加する。
バイト出力が混ざらないようにバイト切り替えモジュールを利用してみましょう。
Conditions条件
バイト入力の0と等価・大小判定をする回路を作成する。
全てのビットがOFFなら0、最上位ビットがONの場合は負の数であると判定出来ます。
解答(ネタバレ注意)
Programプログラム
"Calculations"で作成した回路にプログラムカウンタを追加し、プログラムを実行できるようにする。
Immediate Values即値
"Program"で作成した回路に即値入力を追加する。
作成しているコンピュータの都合上、64以上の即値入力は出来ません。
Turing Completeチューリング完全< Working Computer
"Immediate Values"で作成した回路に"Conditions"で作成した比較回路を追加し、動作するコンピュータを完成させる。
Programmingプログラミング
Add 55の加算
入力に5を加算するプログラムを作成する。
解答(ネタバレ注意)
Calibrating Laser Cannonレーザー・キャノンの較正
入力された惑星の半径から円周を出力するプログラムを作成する。
※πは3として近似
掛け算の実装はないので、足し算で代用しましょう。
解答(ネタバレ注意)
Spacial Invasion宇宙からの侵攻
ロボットを操作して、迫ってくるネズミをすべて討伐するプログラムを作成する。
ロボットは自分の前にあるブロックのIDを入力に出力してくれます。
const文を利用して、ロボットの操作のために出力する番号を変数として登録しておくと便利です。
解答(ネタバレ注意)
Storage Crackerストレージ・クラッカー
0から255のパスコードを総当たりで出力し、パスコードをクラックするプログラムを作成する。
label文と数値比較を利用して、ループするプログラムを作成しましょう。
解答(ネタバレ注意)
Masking Timeマスキング・タイム
入力を「mod 4」して出力するプログラムを作成する。
AND演算を利用すると、値の必要な部分のみを抽出することが出来ます。
解答(ネタバレ注意)
The Maze迷路
ロボットを操作して、迷路から脱出させるプログラムを作成する。
※コインは獲得しなくても良い。
右 or 左壁沿いに辿って行けばゴールに到達出来ます。
解答(ネタバレ注意)
CPU Architecture 2CPUアーキテクチャ2
XOR排他的論理和
入力を2回読み取って、それらのXORを出力する。
※プログラム or ALUへの実装どちらでも良い。
Byte Constantバイトの定数
定数のバイトを出力する回路を作成する。
解答(ネタバレ注意)
Byte XORバイトのXOR
2つのバイト入力の各ビットのXORをとる回路を作成する。
解答(ネタバレ注意)
Equality等価
2つのバイト入力の等価を判定する回路を作成する。
減算を利用しましょう。
解答(ネタバレ注意)
Unsigned Less符号なし大小比較
"符号なし"のバイト入力の1つ目が2つ目よりも小さい時にONを出力する回路を作成する。
解答(ネタバレ注意)
Signed Less符号あり大小比較
"符号あり"のバイト入力の1つ目が2つ目よりも小さい時にONを出力する回路を作成する。
解答(ネタバレ注意)
Wide instructions様々な命令
偶数ティックの時にプログラムの出力を保存し、奇数ティックの時に保存した値と現在のプログラムの出力の2つを出力する回路を作成する。
奇数か偶数はバイトの下位1ビットで判定出来ます。
解答(ネタバレ注意)
Wire Spaghettiワイヤー・スパゲッティ
"LEG"アーキテクチャのコンピュータの作成を開始する。
解答(ネタバレ注意)
Opcodesオペコード
"Wire Spaghetti"で作成した回路に加算、減算、AND、OR、NOT、XORの命令を追加する。ALUはコンポーネント・ファクトリー等で自作する。
Immediate Values即値2
"Opcodes"で作成した回路に即値入力を追加する。
Conditionals条件2
"Immediate Values"で作成した回路に比較回路を追加し、"LEG"アーキテクチャのコンピュータを完成させる。比較回路はコンポーネント・ファクトリー等で自作する。
解答(ネタバレ注意)
Functions関数呼び出し
Hex Racer16進数レーサー
16進数から2進数への変換問題に回答する。レベル4到達でクリア。
Shiftシフト
バイト入力を任意のバイト入力分ビットシフトする回路を作成する。※最大7ビットシフト。
解答(ネタバレ注意)
RAMランダムアクセスメモリ
"LEG"アーキテクチャのコンピュータにRAMを追加し、必要な命令も合わせて追加する。
解答(ネタバレ注意)
Delay遅延
回路の遅延スコアに関する説明。
解答(ネタバレ注意)
The Product of Nibblesニブルの産物
2つのバイト入力の掛け算を行う回路を作成する。
ビットシフトを有効活用しましょう。
解答(ネタバレ注意)
Stackスタック
スタックを実現する回路を作成する。
解答(ネタバレ注意)
Divide除算
2つのバイト入力の割り算を行う回路を作成する。
解答(ネタバレ注意)
PUSH and POPプッシュとポップ
"LEG"アーキテクチャのコンピュータにスタックを追加し、必要な命令も合わせて追加する。
解答(ネタバレ注意)
Functions関数呼び出し
"LEG"アーキテクチャのコンピュータに関数呼び出しを追加し、必要な命令も合わせて追加する。