パズルを作る
先日、学校でこんな課題が出されました。
「5×5の盤面の何カ所かにライトが点灯している(下の図で黒く示した部分)。
0 1 2 3 4
0□□□□□
1□■■□□
2□■□□□
3□□□□□
4□□□□□
ここで(x,y)=(2,2)の場所のライトを点灯させる。すると、この部分を中心に上下左右1マスのライトの点灯/消灯が反転する。斜め方向のライトは影響を受けない。
0 1 2 3 4
0□□□□□
1□■□□□
2□□■■□
3□□■□□
4□□□□□
これを繰り返し、すべてのライトを点灯させたら終わり。
上記のプログラムを作成せよ。どの場所のライトを点灯/消灯させるかをキー入力させて盤面を更新し、終了条件(すべて点灯)を満たすまでループするようにする。最初にどこが点灯しているかという「問題」は各自で適当に作成してよい。」
というものなのですが、はっきり言って手も足も出ません。どなたか詳しい方、どうか作成方法を教えて下さい。ちなみに使っているパソコンのOSはFreeBSD 4.9-RELEASEで、コンパイラはgcc for version 2.0です。