【Spacechem】Sync-3 何回かに1回
TOC
こんにちは。
Spacechem の解法、Sync の3つ目です。
今回は Sync コマンドの応用の使用法の1つである、
何回かに1回
について説明しようと思います。
具体的には、
1つのウォルドが何回か実行するたびに、
もう1つのウォルドが1回処理する
というのを繰り返すことです。
例: ヘーパイストスIV KOHCTPYKTOP
例として、ヘーパイストスIV のサイドストーリー、
KOHCTPYKTOP の、ケイ素の分子を作り出すところを見てみましょう。
めちゃくちゃ長い処理になってしまったので、
早送りしていますが、
赤のウォルドで2回輪の形をしたケイ素の分子を作った後、
青のウォルドで1回3×3の正方形を作っています。
ここでは、「2回に1回」という仕組みが使われています。
どのような仕組みになっているのでしょうか。
このように、赤のウォルドに sync が2つあるのに対し、
青のウォルドに sync が4つあるので、
赤が2回回らないと、青が1回回らない、
つまり「2回に1回」が実現しています。
↑単純化してみました。
横が時間軸、赤と青が処理するウォルドを表しています。
Sync の数
公式っぽくすると、
赤がn回処理した後、青が1回処理する場合、
赤に sync を2つ、青に sync を 2n 個つける
と、3回に1回、4回に1回、…でもできます。
「交互に実行」も同じ
前回の交互に実行も、
今回の公式っぽいのを使えば、「1回に1回」として sync の数がわかります。
何回かに1回、同時に処理を実行
こっちのほうが言葉通りな気もします。
何回かに1回、同時に実行します。
2回目で重なって実行されます。
この2つ、何が違うのでしょうか。
Sync の位置が大事
実は Sync の位置がとても重要になっています。
Sync の位置により、この2つの動作が変わってきます。
1回処理するウォルドのどちらかに奇数個の Sync がある場合
この例でいえば青のウォルドの上下左右どれかに、奇数個の Sync があれば、
何回かに1回、別々に実行する、
先に書いたほうの動きをします。
1回処理するウォルドのどちらかに偶数個の Sync がある場合
この例でいえば青のウォルドの上下左右どれかに、偶数個の Sync があれば、
何回かに1回、同時に実行する、
後に書いたほうの動きをします。
左右にある Sync の数によって、タイミングが変わる
次のような動きをするにはどうすればよいでしょう。
赤1回、青1回、赤1回、を繰り返します。
赤と青が同時に処理しないので、先に述べた方法で、
奇数個の sync が青の両側にあります。
そして、その sync の配分を替えると、タイミングが変わります。
まとめ
こんな感じで、Sync を使えば、様々な処理を自在にできます。
かなり奥深いです。ぜひ実践してみてください!