TMAM向け課題と図形解析方法
以下で紹介する図形はどれもMCM (クレイジーシナリオの結晶図形に対応するMAM) では作れない図形。 MCMで結晶を含む土台部分を作ってから、さらに積層機を使って図形を乗せる必要がある。 図1. cr------:CwCw----:--CwCw--
https://scrapbox.io/files/6719f11eb5ddb76a5987236a.png
白い部分が後乗せする箇所 (2層目CwCw----は後乗せじゃなくても良い)
図2. Cu------:CuCu----:crCwCw--:----CwCw
https://scrapbox.io/files/6719f206c893e92f73f4629c.png
上2つの図形は一番上の結晶のある層で結晶とそれ以外に分け、結晶以外部分を結晶より上の層と一緒にしてMAM#0に発注し、それ以外をMCMで作って最後に積層機で合成する、という方法で対応できる。 しかし次の図形は分離するべき部位が結晶より下にある。
図3. Cu------:CuCu----:CuCwCw--:cr------
https://scrapbox.io/files/6719f38142375593b7497b0e.png
↓が土台部分。
https://scrapbox.io/files/6719f40842deccc5278684b3.png
積層機で後乗せしなければならない部位を回路で機械的に判別するのはなかなか難しい。
組み合わせ回路で実装可能な図形信号分離方法 (案)
最上層から下層へ向かって順番に1層ごと、以下の一連の操作を行う
1. 以下の条件全てに当てはまる部位をマークする
上部に図形がない (上から見える)
基本図形(CRSW) or ピン
下から支えられている (1つ下の層が隙間ではない)
2. 以下の条件に当てはまる部位を対象がなくなるまで繰り返しマークしていく
上部に図形がない
基本図形(CRSW)
水平方向の両隣のどちらか一方以上がマーク済みの基本図形 (ピンは×)
3. マークされた部位の図形信号を切り取る
以上の操作を下から2番目の層まで繰り返す
切り取られて残った土台部分をMCM相当の機能を持つ結晶対応MAMで製造する。 切り取った部分はそれぞれ結晶非対応の1層MAMで製造し、土台図形に乗せて行く。
後乗せパーツだけをあらかじめ積層しておこうとすると↓のような図形で事故が起きるので注意。
図4. cr------:Cg----Cg:cb--CwCw:CwCw----
https://scrapbox.io/files/6719f8bc86eee8005d1376cf.png
白い部分が後乗せパーツ。
後乗せパーツのみで積層すると3層目と4層目のパーツが横にくっついて1層になってしまう。
なお図形信号の切り取りにあたり「任意の層の一部分を削除する回路」を作るのは非常に面倒だが、削除する代わりにマスキング情報を生成するという方法を取ると実装が楽になりそう。
CuとRuでマスキング図形信号を作り、元の要求図形信号と一緒に土台製造ラインに渡す。
製造部では要求図形信号の担当部位を読み取る際にマスキング図形の同じ箇所を読み取り、マスキング図形側がRuなら要求図形信号の通りに製造し、Cuなら要求図形信号の形状を無視して隙間扱いとする。
図4での例:
要求図形 cr------:Cg----Cg:cb--CWCW:CwCw----
マスキング図形 RuRuRuRu:RuRuRuRu:RuRuCuCu:CuCuRuRu
分離アルゴリズムのruby実装↓