Painter Programming
パ研合宿 2019 体験企画「Painter Programming」とは?
「パ研合宿 2019」体験企画の体験企画、「Painter Programming」です!
この企画では、2 次元のマス目上でロボットを動かし、マス目を目標のものに塗り替えます。ロボットを動かす際には、独自のプログラミング言語を使わなければなりません。できるだけ少ないプログラムの長さで問題を解いた人が勝ちとなります。
プログラミング言語の文法
まず、マス目の大きさ H × W を指定することができます。初期時点でのマス目はすべて白となっています。その中で、ロボットを次のように動かします。
使用するプログラミング言語は、以下のような文法になっています。
- 最初ロボットは左上のマスにおり、右方向を向いています
F
:向いている方向に 1 マス進む。外壁に当たった場合はそのマスにとどまるL
:向いている方向を 90° 左に回転させるR
:向いている方向を 90° 右に回転させる!
:現在ロボットがいるマスの色が白なら黒に、黒なら白にする()
:カッコの中をループする。1 回のループの開始時点で、現在のマスが黒マスならば、ループを抜け出す。[]
:カッコの中をループする。1 回のループの開始時点で、現在のマスのロボットが向いている目の前が外壁ならば、ループを抜け出す。
例えば、![F!]
というコードを書くと、一番上の行のマスを全部黒に塗り替えて、プログラムの実行が終了します。
100,000 回以上のイテレーションをした場合、無限ループとして扱われ、プログラムはランタイムエラーを起こします。
E869120 さんの記事「大好評!たった 6 種類の文法で塗り絵パズルが楽しめる、新感覚プログラミング言語「Painter Programming」を作った話」にもとても分かりやすい説明が載っています。ぜひこちらの方もご一読ください。
プログラムを書く
まず、マス目の縦の長さと横の長さを設定してください。
- 縦の長さ H (1 ≦ H ≦ 30):
- 横の長さ W (1 ≦ W ≦ 30):
次に、ここにプログラムを書いてください。
プログラム: 文字 / メッセージ:なし
「Run!」を押すと、プログラムが実行されます。