日記
昨日のブログを更新し忘れていたので昨日のblogに書く予定だった内容をここでつづろうと思いその書きかけの文を今日のブログの編集画面に張り付けた
今回の回路では入力と出力をつなぐことによる高速化を目指している。これは旧来のやり方である入力とメモリ、メモリと出力しかつながないというものだと遅延が発生して好ましくないが、出力のディスプレイに信号(レッドストーンに信号が流れているか否かの2つの状態によってあらわされる)を保存するメモリ(レジスタ)としての機能並びに信号受け取り時に位を送る機能を搭載することによって、入力から適切な変換を挟むことで出力につなげて高速化できるということで実際のところ出力のメモリ化はすでに完了している。しかし問題なのが適切な変換で、これは電卓の数字に必要な0から9までの10個の入力から7セグ用の7つの信号に変えるというものである。しかし4つの信号で2進化10進数として保存する、演算用のメモリ(レジスタ)に対する操作も行う必要があるので実際のところ10個の信号を7+4で11個のそれに変換するという事になる。
ということで遅延のかからないorゲートによって入力と出力をそれぞれ対応付けるわけだが、ここで、10個の入力と11個の出力に対する回路となると空間を圧迫しかねない。しかし色々することである程度規模を小さくできることに気付いたのでゲートの回路の構成を最適化するために教育版マイクラについていたPythonの環境を用いて全探索によるそのような理想的な回路の探索を行った。
ここまでが昨日までの流れだったが今日も文で書くと同じこともしていた。しかし昨日と今日では方法が違い、昨日までの方式だと色々都合が悪そうだったので今日は夢で見た別の方法を試していた。
一番苦労したのがPythonプログラミングによる回路最適化アルゴリズムの実装で、自分で作った配列の持つ意味がよくわからなかったためバグを起こし、その原因究明にかなりの時間を費やした。しかし今日は最適化も終えてとりあえずブロックを置くフェーズに至ったので少しは進んだ