Domino Wall のアルゴリズム
こんにちは。たつやです。昨日作ったDomino Wallのプログラム的側面を紹介したいと思います。一度プログラムとして書いてしまえば、何度でもどんな高さでも組み立てを実行することができます。組み立て途中で崩れることはありますが…これは、現実世界でやっても同じことですね。プログラムの基本的な構造は次のような状態遷移によるものです。下の列を並べて、上の列を並べて…という手順(アルゴリズム)を好きな高さになるまで繰り返すことでDomino Wallを作っていました。単純なように見えますが、このような構造にすることでプログラムとして書くときに見通しが良くなります。例えば、それぞれの状態(Bottom/Top/StartCap/EndCap)に応じて、配置するドミノの向きや位置の計算を場合分けしています。場合分けして解くというのは数学でもよくありますが、元の問題を簡単な部分に分けて解くことができるので、全体としてみれば効率的に解くことにもつながります。こういう共通点(場合分けの意義)が見いだせるのはおもしろいですね。他にもいろんなDomino Wallの作り方があるようなのでいくつか作ってみたいと思っています。(※今回作ったDomino Wallは平面壁なので高くすると前後に倒れやすい。)
0