The Blocks Problem

http://acm.uva.es/p/v1/101.html
ブロック積み上げロボットに4種の命令からなる指令を与え、実行結果を答えさせるプログラムを作れと。ブロックの積み上がり状態をどういうデータ構造で表現するかがポイント。
「ブロックは多くても25個までとする」とわざわざ限定してくれているので素直に利用して、「自分の下にあるブロックの集合」をビットマップで表現しました。
このデータ構造を表示させるときには、まず底のブロックの番号のビットだけ立てたパターンを生成し、これに一致するブロックを探します。みつかったらその番号のビットもパターンに追加して探し・・・と繰り返していきます。