ライツアウトの問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
紅葉

ライツアウトの問題

#1

投稿記事 by 紅葉 » 15年前

ライツアウト(3×3版)と呼ばれているパズルゲームを作りました。
全てのマスの電気をつけるとクリアできるゲームです。
http://ja.wikipedia.org/wiki/%E3%83%A9% ... 6%E3%83%88

ライツアウトの問題を紹介しているサイトはないでしょうか?
初期状態の問題が欲しいです。
これ専用のプログラムを作った方が早いのでしょうか?

mats

Re:ライツアウトの問題

#2

投稿記事 by mats » 15年前

きっと紅葉さんが欲しいのはこういう問題ではないんだろうなぁ…と思いながらもURLを貼ってみます.
一応ライツアウトの問題ですが,6×5ですし,答えを送るには(簡単ではありますが)登録が必要です.

http://acm.pku.edu.cn/JudgeOnline/problem?id=1222

紅葉

Re:ライツアウトの問題

#3

投稿記事 by 紅葉 » 15年前

matsさん
URLを教えて下さってありがとうございます。
参考にさせて頂きます!!

asd

Re:ライツアウトの問題

#4

投稿記事 by asd » 15年前

#紹介されているURLにあるとおり、全部消すとクリアですよね?

個人的に思ったことですが、既にライツアウトのルールに則ったプログラムが出来ているのであれば、
全て消えた状態でランダムにライトをつけたり消したりするだけで、
解のある問題ができるのではないかなぁと思ったりします。

まぁ押した順番を覚えておいてそれを逆順すると解答になってしまいますが^^;
全てのライトをランダムに点灯、消灯させてしまうと解のないものが出来てしまうことがあるので
上記のような提案をしてみます。

紅葉

Re:ライツアウトの問題

#5

投稿記事 by 紅葉 » 15年前

asdさん
回答ありがとうございます。
確かにそうなのですが数百問近く用意したいので被らせたくないんです。
同じ場所を何回押しても意味が無いので
この問題は解ける問題なら最高で8手で解けるんですね?

9マスだったら2の9乗で512パターンあり
全てがついてる状態とついてない状態を抜かすと510パターンもあるんです・・・。

フリオ

Re:ライツアウトの問題

#6

投稿記事 by フリオ » 15年前

 
 回転、対称による問題の重複や、解ける解けないに関係なく、510パターンを用意するなら、
000000001 ~ 111111110 のビット列を配列に入れるだけです。

asd

Re:ライツアウトの問題

#7

投稿記事 by asd » 15年前

>確かにそうなのですが数百問近く用意したいので被らせたくないんです。

ごめんなさい。そんなにたくさん作るとは思っていなかったので先の回答をした次第です。
問題を作る=解けないものは除きたいと考えていますので、
それであれば、9つのライトそれぞれを押すか押さないかをビット列で組み合わせをつくり、
実際に全てのライトが消えている状態でビット列に従い実際にライトを操作するプログラムを作ってしまったほうがよいと思います。
(3*3マスで数百問近くも掲載しているサイトがあるとは考えにくいので)

余り参考にならなくて申し訳ないです。

mats

Re:ライツアウトの問題

#8

投稿記事 by mats » 15年前

まだ解決していないようだったので,全問題を作ってみました
全部点灯しているパターンと全部消灯しているパターンを含む512通りです

3×3だと512通り全てに解があるようです
(もちろん,私のプログラムが間違っている可能性もあります)

紅葉さんがどのような形式で問題を欲しいのかわからなかったので,期待と違うかもしれません
添付したファイルは512行全てが以下の形式になっています


盤面を表す9桁2進数 その盤面を消灯させるのに必要な最小手数


盤面を表す9桁2進数は,3×3に直して使って下さい
1が点灯、0が消灯を表しています

例)
000000101

000
000
101

上記の説明もかなり不親切になってしまったので,もしわからないことがあればまた聞いて下さい

紅葉

Re:ライツアウトの問題

#9

投稿記事 by 紅葉 » 15年前

皆様ご回答ありがとうございます。
色々と勉強になりました。

問題を全て作って頂けるとは・・・Σ
お手間を取らせてしまい申し訳御座いません。
家宝にさせて頂きます!!

これは反転させる回数ではなく解ける問題の数でいいのでしょうか?

mats

Re:ライツアウトの問題

#10

投稿記事 by mats » 15年前

う,すいません,「解ける問題の数」が何を表してるのかわかりません…


補足すると,添付したファイルの

000100110 1

という行なら,

000
100
110

という盤面が最小1手で消灯できることを表しています
(左下を押す)


000100111 4

という行ならば,

000
100
111

という盤面が最小4手で解けることを表しています
(上,右上,左,右下を押す)


最小手数は,最短解法にこだわらないなら無視しても構いません

解けるか解けないかだけならば,3×3版ライツアウトは512パターン全て解けるようです
(上でも言ったように自分のプログラムが間違っている可能性もあります)


的外れなことを言っていたらごめんなさい…

閉鎖

“C言語何でも質問掲示板” へ戻る