アプリ版:「スタンプのみでお礼する」機能のリリースについて

先日、学校でこんな課題が出されました。

「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です。

A 回答 (3件)

課題ということなのでヒントを出しますので


がんばりましょう。

概略のフローは次のようになると思いますが
どこがわからないのでしょうか。

1) ライトの状態を格納する5x5の二次元配列に「問題」を作る(点灯=1, 消灯=0)
2) ライトの状態を表示する
3) どのライトを点灯させるか入力させる
4) 入力された位置と上下左右に相当する値(1/0)を反転させる
5) ライトの状態を表示する
6) 配列の値をチェックしすべて1になるまで3)から繰り返す
    • good
    • 0
この回答へのお礼

お礼がたいへん遅くなって申し訳ありません。
今更かもしれませんが、ポイントをつけさせていただきます。
どうか御無礼をお許しください。

お礼日時:2006/05/26 10:32

これは昔にタカラから出てたライツアウトってパズルゲームですね。



>最初にどこが点灯しているかという「問題」は各自で適当に作成してよい。

初期値によっては答えがない場合があるので、初期値は全部消灯から始めるといいと思います。
    • good
    • 0
この回答へのお礼

お礼がたいへん遅くなって申し訳ありません。
どうか御無礼をお許しください。
回答して下さってありがとうございました。

お礼日時:2006/05/26 10:34

昔々、Javaで書きました。


全点灯判定は実装していませんけど。

参考URL:http://www02.so-net.ne.jp/~epi-/html/java/Lights …
    • good
    • 0
この回答へのお礼

お礼がたいへん遅くなって申し訳ありません。
今更かもしれませんが、ポイントをつけさせていただきます。
どうか御無礼をお許しください。

お礼日時:2006/05/26 10:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!