プレイ日記
yos yos-taro
こんばんは~ みむ*mimさんが作成されたmポケコンの 追加サンプル集をリリースします~。 mポケコン 追加サンプル集 公開キー:7E7EV3G4 ※-RUN_SMPL- が実行コマンドです。 ※mポケコンライブラリ v0.3 [E22E5VAE]も  一緒に入っているのでそのまま遊べます。
8そうだね
プレイ済み
返信[1]
親投稿
yos yos-taro
以前より、みむ*mimさんが作ったmポケコンライブラリでゲームを作っていましたが、今回、【お支払い】というゲームを作ってみました。 また【ナイン】【ナンプレ】についても少し修正しました。
1そうだね
プレイ済み
返信[2]
親投稿
yos yos-taro
【お支払い】 パズルゲームです。1円,5円,10円,50円,100円,500円の6種類の硬貨を使います。右側と下側に合計金額が出ますので、マスの中に硬貨を入れ、行・列の合計金額が同じになるようにする…というルールです。 出題数は自作疑似乱数を使い、9999問くらい用意してみました。BIGでも同じ問題が出るようになっています。 【余談】 うちの子が小学校2年(今は3年)のときに、学校からプリントを持ってきたんです。そして見たのがこの問題でした…。自分なら当時「こんなの解けただろうか?」と思いました;; 見せてもらい、自分は5分弱くらいで解きましたけど…これ、難しい気がするのですが…w
1そうだね
プレイ済み
返信[3]
親投稿
yos yos-taro
【ナイン】 少し修正しました。 牌を選ぶときのカーソルを動かすとき、1つ1つ方向キーを押さないとならなかったので、少し面倒に感じたので、押しっぱなしでもカーソルが動くようにしました。
1そうだね
プレイ済み
返信[4]
親投稿
yos yos-taro
【ナンプレ】 個人的に気になっていたところを修正しました。前回リリースしたものと出題は変わりません。 ◆少し休みたいときでもTIMEが動き続けるのが気になったので、ポーズ機能を実装しました。プレイ中、Xボタンでポーズが出来ます。 ◆おちゃめさんが公開されている「スリープ関数」を使わせてもらい、スリープ中や、ミーバースへのアクセス時などの未プレイ時間は、TIMEとしてカウントしないように修正しました。 ◆なんとなく、ANSWERを押したときに、Give up と表示するようにしました。 ◆10x10, 12x12 の問題を遊んでいるときに出題される数字を少し太くしました。出題されている数字なのか、自分で入れた数字なのかを判別しやすくするためです。
1そうだね
プレイ済み
返信[5]
親投稿
yos yos-taro
【御礼】 以下、使わせてもらいました。 ありがとうございました! みむ*mim さん:mポケコンライブラリ りゅうまごさん:RMG_IME ほしけんさん:プチフォントエディター おちゃめさん:SLEEP()関数(すごく便利です!) ねこはちさん:BREPEATノウハウなど その他、大勢のミナサマ:色々なプログラムのソースコードを参考にさせてもらいました。ありがとうございました!
1そうだね
プレイ済み
返信[6]
親投稿
みなつ tksm372
お支払いやってみました~^^ 最初、戦略がよくわからなかったので適当に置いてたんですが、だんだん考え方が分かってきて、楽しくなってきちゃいましたw 1プレイが短いので、お手軽にできていいですね~(*´▽`*)
2そうだね
プレイ済み
返信[7]
親投稿
yos yos-taro
みなつさん: 遊んでくださり&感想くださり、 ありがとうございます~b デバッグ中に何度もランダムで出題させて遊びまくっていたのですが、やればやるほどに発見があり・・・どんどん楽しくなって、デバッグということを忘れて数十プレイとかしちゃってましたw ナンプレのようにバリエーションを豊富に(しかもナンプレとは違い、行・列の数を別に)することも可能なのですが、テストプレイしているうち、「これくらいのサイズだから何度も遊びまくれてるんじゃないか!?」と不意に気付き、4×4の固定サイズにしてみました。 好感触で良かったです~b
2そうだね
プレイ済み
返信[8]
親投稿
yos yos-taro
ゲーム内容が何も変わっていないので、ここでひっそり告知です~。 mポケコンの追加サンプル集ですが、少し修正しました。 公開キー:K8DD3E3 【修正点】 「ナンプレ」と「数理パズル:お支払い」ですが、連続で遊びたいときに、「出題番号を選ぶとき、前の番号が出ていたほうが遊びやすい」というご要望をいただきましたので仕様を変えました~b 具体的には… ◆ランダム(0000番)で遊んでいた場合 次ゲームも0000番を表示しておく。 ◆遊ぶ側が番号を選んで遊んだ場合 次ゲームは前回遊んだ番号が表示される。 としています。
2そうだね
プレイ済み
返信[9]
親投稿
MIKI ifconfig
私もお支払い遊んでみました。楽しいですね! 解の一意性はあるのだろうか??? こういうの見るとソルバー作りたくなります。
1そうだね
プレイ済み
返信[10]
親投稿
yos yos-taro
MIKIさん: ありがとうございます~b 解の一意性…鋭いですね! はい、一意になるように作っていますb こういう遊びは一意で決まったほうが気持ちいいかなと思ってまして…。出題の中で、最初から確定しているマスが出ると思うのですが、あれが複数解を防いでいる…といった感じですb
0そうだね
プレイ済み
返信[11]
親投稿
MIKI ifconfig
すごいなあ!! 一意性はどうやって保証してるの??
1そうだね
プレイ済み
返信[12]
親投稿
yos yos-taro
MIKIさん: えっと…正解盤面を先に作っちゃって、16マス分の硬貨を全部取ろうとします。(答えが空欄のところは、0円硬貨があるとみなして。) あとは・・・ ①順番に従い硬貨を1枚取ります。 ②各マスの硬貨が入る可能性をマスク処理。 ③総当たりで解かせます。再帰探索ですね。再帰がRETURNしてくる可能性は3つで「解けた(単一解)」「0円硬貨含めて入れられる硬貨が無いマス出現(矛盾)」「また解けた(複数解)」ですね。 ④ 再帰が最上位に戻ってくる頃には単一解もしくは複数解の判定しかない(答え作ってから硬貨を抜いてるので、総当たりなら必ず答えを見つけてくれる)はずで、単一解なら空欄のまま放置、複数解なら硬貨を戻します。(戻した硬貨が複数解防止) ⑤ まだ盤面から取ることが出来るようなら①に戻り、16マス調べきったら終わり ⑥レッツプレイ! という感じです~b
1そうだね
プレイ済み
返信[13]
親投稿
yos yos-taro
MIKIさん: 一意性の保証が簡潔に説明出来そうに無かったので、出題の仕組みについて説明しちゃいました;; 長文になってしまいすみません~;; こんな仕組みなので「一意性を保証します」というよりは「出来上がる出題は複数解を排除している かつ 正解盤面から作っているので、一意性がある出題になっているよ」といった感じです~b
0そうだね
プレイ済み
返信[14]
親投稿
yos yos-taro
そういえば…MIKIさんにお礼を言わないと…。 以前、DEFの深度についてトピック立てたのを拝見し、有益な情報ですごく安心したんですよ! ありがとうございます!! https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0gAEu_3VA ナンプレの出題も、お支払いと同様に再帰を使っているんですよ。お支払いの出題盤面作成と似たような原理で出題盤面作ってまして…。 お支払いのほうは最大でも16潜りなので深度は気にしなかったのですが、ナンプレの場合、12x12 で最大80潜りとかしちゃうので、何かの拍子でエラーを吐いて止まったらどうしよう?と不安だったんですよね;; あのトピックのおかげで凄く救われました~b 連レス、失礼しました~!
0そうだね
プレイ済み
返信[15]
親投稿
MIKI ifconfig
解説ありがとうございます。 ソルバー内蔵とは思っていましたが、ソルバーのアルゴリズムが予想と違ってて驚いています。 ヒントから解くのかとおもっていましたが・・・ 解くためのソルバーと、問題を作るためのソルバーは、まあ確かに違うかもね。 (2)のマスク処理って??? def 深度、あいまいな記憶のまま書いてしまって恥ずかしい限りです。 おちゃめさんが軌道修正してくださったのでたすかりました。 ナンプレのソルバーも内蔵しているのか・・・・・・ 私の今年の目標の一つがナンプレソルバー作ることなのだが・・・・
1そうだね
プレイ済み
返信[16]
親投稿
yos yos-taro
MIKIさん: すみません、説明不足でした。。 全てのマスにどの硬貨が入れられるのか?を示すフラグを持たせていて、注目マスに硬貨を入れられなくなると、フラグを潰します。このことを【マスク処理】と呼ばせてもらいました。総当たりをするときになるべく総数を減らしたい(減らさないと POW(7,16)通り 総当たりしなきゃならなくなる…)のでやっていますね。 ナンプレソルバー、是非作っていただきたいです!! 自分は諦めて安易に総当たりにしちゃいました;; あれこれ解き方を考えて、実装したりもしましたが…総当たりよりも、自分で考えたルーチンのほうが遅くてがっかりして(苦笑) それに総当たり方式だと、人間が解くには難解な(本当に総当たりして行かないと解けないような)問題が出来てしまうのが難点なんです;; ニコリさんとか良くあんな美しい問題作れるなぁ…と尊敬しますよ;;
0そうだね
プレイ済み
返信[17]
親投稿
MIKI ifconfig
一意性の件最初読んだときは理解できなくて焦ったが、 大量の C2H5OH があらかた CH3CHO に分解されてから読んだらちゃんと理解できた!! ソルバーはいろいろ書いたけど、クリエイターという立場で考えたことはなかったので、めちゃくちゃ勉強になりました。 立体ピクロス(初代)ご存知ですか? あれが好きでソルバーも書いたけど、問題どうやって作るのか謎だったけど、 yosさんの方法使えば意外と簡単? 1. ヒント数字を全部並べる 2. 全ヒント調べたら終了 3. 未処理のヒントをひとつ選び、空白にしてソルバーに解かせる 4-1. 単一解なら 2 へ 4-2. 複数解ならヒントを戻して 2 へ
1そうだね
プレイ済み
返信[18]
親投稿
MIKI ifconfig
あっ! ナンプレって数独か!! 私の今年の目標はピクロスソルバーでした。(ズゴー ナンプレもピクロスも、工夫するよりバックトラッキングによる総当りの方が速いですね。 工夫が足りないてのはあるかもですが。 みむさんがフリーセル作ってらっしゃるようですね。あれもソルバー書きたいパズルのひとつ。
1そうだね
プレイ済み
返信[19]
親投稿
yos yos-taro
MIKIさん: たびたびありがとうございます~b 数独・・・ズコー! 残念です!!w 解が欲しいだけなら総当たりで求めればもういいかなと思うのですが、正解から取りながら作る向きには解法テクニックに沿った手法のほうが遊びやすいかなと思ってます。自分の作ったナンプレは、9x9以上になると難しくなりすぎる上、問題作成に時間がかかりすぎるので、一定量のマスが消せたら打ち切ってますし…(妥協;;) 立体ピクロス、遊んだことありますよ! が、操作方法がちょっと馴染めず(でもこれしかないのかもね…とは感じてますが…) 少し遊んで仕組みを理解したところでやめました…;; ピクロスはランダムな問題ならたぶん同じ方法で作れますね。でも…ピクロスも立体ピクロスもですけど、解いたときに絵になっていたほうが良いよね~と思っているので、作ろうとは思わないですが…。
0そうだね
プレイ済み
返信[20]
親投稿
yos yos-taro
遊ぶ側にとっては、中の仕組みについてはどうでも良いのよね~と思い、こういった話はあえて控えてましたが、話題を振ってくださりありがとうございました! なんだかここ数日、とても充実しましたb お話出来て良かったです~b
0そうだね
プレイ済み
返信[21]
親投稿
MIKI ifconfig
ソルバー視点で言うと確かにどうでも良い でもクリエイター視点だと、もっと遥かな高みから俯瞰してるんですね~ 全然知らなかったよ!!! クリエイターさんありがとう!! 私はどうしたってクリエイターにはなりえないと思うので、あくまでもソルバー視点です。 このコミュにいぎょさんという方がいらっしゃって、 ソルバーに興味をお持ちで、私はソルバー仲間ができたと思って喜んでましたが、 こうしてみると、いぎょさんはソルバーというよりはむしろクリエイターなのだなと 今理解しました。 むーん・・・
1そうだね
プレイ済み
返信[22]
親投稿
MIKI ifconfig
えと、MxNのマスに、マーカーのペアをいくつか配置して、 同じマーカー同士を、互いに交差しない経路で結ぶ というパズルがあったような気がします。 mポケコンで作りませんか?ww
1そうだね
プレイ済み
返信[23]
親投稿
yos yos-taro
いやいやw MIKIさんのほうが良いゲーム作ってるじゃないですか! くらげー! にぎやかトレイン! 絵を動かせるプログラムを作れるってだけで、自分の中では、尊敬モノです~bbb それでいて、これらのゲームは肌触りも良くってb いぎょさんも、すごいと思ってます。 表現力が今の自分には足りないので、これからも学ばせてくださいb お支払いも、ホントはカラーにしてちゃんと硬貨を描きたかったですし、下画面で作りたかった…orz
0そうだね
プレイ済み
返信[24]
親投稿
yos yos-taro
マーカーですか…心当たりが無いですね…。 一瞬、DS(3DSではないほう)のピクピクの線引き屋かも?…と思ったのですが、これでは無さそうですね。 mポケコンならグラフィックを考えなくても良くって、ロジックさえ組めれば何となくゲームを作れてしまうのが…快適すぎてスキル向上を怠ってしまうのが参りますw(苦笑:褒め言葉です!) mポケコンの色は目にも優しい感じですし、シンプルな仕上がりになるので、パズルゲームには向いてそうですよねb これからも頑張ります!!! ありがとうございます!
0そうだね
プレイ済み
返信[25]
親投稿
yos yos-taro
発見! ナンバーリンクとか、アルファベットコネクションとかいうヤツですね! これは・・・難しそうです;;
0そうだね
プレイ済み
返信[26]
親投稿
MIKI ifconfig
あーっっ!! これですこれです!! ブックマークロストして困ってたんです。 ありがとうございます!! これ難しいですよね。 マーカーの種類ごとにマスを色分けするとして、 かたっぱしから全数探索? でも効率よく枝刈りするには??? あるいは A 同士結んで、B 同士結んで・・・と進めるか・・・ ニコリさんてだれ? と思ったら会社だったのねww
1そうだね
プレイ済み
返信[27]
親投稿
yos yos-taro
MIKIさんに話題を振られた手前、少し考えてみましたよ!!w ソルバーは、やっぱり全然思い浮かばなかったです;; MIKIさんの発言で思いましたけど、ソルバー作るとしたら「とりあえず結んでみる」という案はアリかも!と思いましたb ただし事前に最短距離 or 経路総数を測ってあげた上でそれが最小となる順に…でしょうね。 出題作成については…ナンプレやお支払いがソルバーありきで作っていたので、最初ソルバーを先に決める前提で考えてました。が、ソルバー無しでちゃんと一意に解ける問題が作れることに気付きました。アルゴリズムはどうなるだろう?と思案中…。 案外、問題作って遊べるようにしたものを作ってしまい何度も遊んでみたら良いソルバーが浮かぶかもですね。昨日とあるサイトに問題があったので解いたのですが、もう少し経験が必要そうといった感じです~;;
0そうだね
プレイ済み
返信[28]
親投稿
MIKI ifconfig
>ソルバー無しでちゃんと一意に解ける問題が作れることに気付きました。 え、すごい!! どういうこと!?!? てかさすがクリエイター脳ですね! ソルバーはただ口をあけてクリエイターさんが給餌に来るのを待ってるだけなので気楽なものです。 私もこのパズルは一度も解いたことがなかったのでした。 見た瞬間のインパクト(ソルバー書けない!!?!?)が大きすぎて。 やはりパズルは手を動かさないとですね。 時間を見つけて挑戦したいと思います。 マス目制限を考えなければ、 マーカー同士を直線で結んだとき、 交点があればそれをずらして外せばいい・・・
1そうだね
プレイ済み
返信[29]
親投稿
yos yos-taro
あれ…こんなのを考えて一意なのでは?と思いました…が……ちょっと浅はか過ぎたでしょうか…? 広域になると、経路をごっそり変えての別解出てしまいそうですか?? うーん…行けたと思ったのですが…やはりソルバーあったほうが安心そうですね…はぁ…、難しいです;;
0そうだね
プレイ済み
返信[30]
親投稿
MIKI ifconfig
ソルバー書くだけは書いてみました。(C言語です) バックトラックする総当りです。 yosさんの例だと 0 秒で解けます。 画像検索で見つけた 6x6 4種の問題は 12 秒かかりました。 同じく 10x10 7種の問題は、生きてるうちには返ってこないかも・・・ 枝刈りをもっともっと賢くしないとたぶんだめ これ簡単に三次元化できますね。
1そうだね
プレイ済み
返信[31]
親投稿
yos yos-taro
すごい!!! 自分は未だ問題作成の手法すらアルゴリズムとして落とし込めてないですよ(苦笑) にしても、6x5の4で0秒なのに、5行が6行になっただけで12秒とは…どんな感じの総当たりなのでしょうか? 知りたいです! 主に探索順序と、マークからマークまで一気に線を引く方式なのか、ちょびちょび引く方式なのか、ですかね…。ちょびちょびなら、一部の線を確定してあげれば総当たりが減らせそうかなぁ~と…。 自分がぱっと作った問題は、総当たりするまでもなく先行確定で一撃…。キモは「線を引けないところ探し」と「ちょびちょび線の確定」ですよね…。うーん…。
0そうだね
プレイ済み
返信[32]
親投稿
yos yos-taro
1つ前の投稿は、×⇒鍵の順に最初から確定(?)ですかね。でもこれを確定するということは「決め付け」になっちゃうでしょうか?内側に入る意味が無いので確定しちゃっても良さそうには思いますが…。 なんにせよ、難しすぎます!!w
0そうだね
プレイ済み
返信[33]
親投稿
MIKI ifconfig
一マスずつ順に仮置きして、破綻なければ再帰的に次のマスへ、全てのマス埋まったら解。以下擬似コードです。 bt(k, w[wy*wx]){ if(k==wy*wx){out(w); return;}//見つけた if(w[k]){bt(k+1,w); retrun;}//マーカーマスはスルー for(m=1;m<N;m++){ w[k]=m; '経路仮置き if まだいける(w) bt(k+1,w);//次のマス } w[k]=0;//マス戻す } w[wy*wx]=初期配置; '0=空白,1..Nはマーカー bt(0,w);
0そうだね
プレイ済み
返信[34]
親投稿
MIKI ifconfig
int まだいける(w[wy*wx]){ int ok=1; for(m=1;m<N;m++){ ok=ok&&リンク可能(マーカーmの片方座標,もう片方座標); } return ok; } 問題はリンク可能()関数で int リンク可能(マーカー種m, m1座標, m2座標){ m1の座標から,塗りつぶしアルゴリズムでm2へ到達可能か調べる; 塗りつぶしていいのはmであるセルと空白であるセル; } つまり、一マスすすめるごとに、全マーカー種に対して塗りつぶしアルゴリズムで到達可能性を調べるという力業なわけです。ズゴー
0そうだね
プレイ済み
返信[35]
親投稿
MIKI ifconfig
yosさんのパターンはたまたま塗りつぶしがはやく手詰まりになるからですかね? ただ一行増えただけとはいえ全配置数は ln(4^(6*5-4*2))/ln(10) = 約13桁 ln(4^(6*6-4*2))/ln(10) = 約18桁 と3桁の開きがあるわけです。 これが10x10@7だと ln(7^(10*10-7*2))/ln(10) = 約73桁(!!!!!!) 話になりません。
0そうだね
プレイ済み
返信[36]
親投稿
MIKI ifconfig
あ、全て m<=N です。等号抜けてた
0そうだね
プレイ済み
返信[37]
親投稿
MIKI ifconfig
広がりの低い順に攻めるセオリーに従えば、壁沿いのマーカー優先でいいですよね。 二つとも壁沿いなら右回りか左回りかしかないので、そうとう節約できます。
0そうだね
プレイ済み
返信[38]
親投稿
MIKI ifconfig
訂正 ln(4^(6*6-4*2))/ln(10) = 約17桁 約4桁の差 でした。たびたびごめんなさい
0そうだね
プレイ済み
返信[39]
親投稿
yos yos-taro
ありがとうございます!!! MIKIさんの考えているアルゴリズムを見てひらめきました! 左上⇒右へ⇒一番右へ行ったら次の段の一番左へ…と進むアルゴリズムですが…どうでしょ!? b(){  (マス,最小)=最小調査()  if(最小==-1){戻0} //解  else if(最小==0){戻1} //矛盾  else if(最小==1){マス移動して戻b()}  else if(最小>1){   R=1;行ける方向ループ{    仮移動; S=b();    if(S==2 || (S==0 && R==0)){戻2} // 複数解    if(S==0){R=0} // 解   }; 戻1  } }
0そうだね
プレイ済み
返信[40]
親投稿
yos yos-taro
最小調査(){  R=-1  全マーカー見る{   if( not マーカー隣接 ){ R=行ける方向の数() }  }  return マス,R } ナンプレとお支払いに使ってる総当たりを、ほぼそのまま流用…w
0そうだね
プレイ済み
返信[41]
親投稿
yos yos-taro
ひとまず、自分がひらめいた案を書かせてもらいました。 MIKIさんに教えてもらったもの、ある程度の雰囲気は掴んだのですが、まだ消化出来ていません;; ちゃんと追って頭の中でイメージをしっかり捉えてみます!
0そうだね
プレイ済み
返信[42]
親投稿
yos yos-taro
最小調べながらの探索ということで… ◆総当たり数は(平均2~3くらい?)^(6*5-4*2) ? ◆次のマスに移行するときの処理は4方向チェックのみです。極力処理させずにひたすら回せ~!としています。MIKIさんの塗りつぶしアルゴリズムのほうが、きっと、ごっそり枝刈り出来ていそう…。自分のは、根元で行き先を間違えると、矛盾が生じるまで間違った道をひたすら突っ走ってしまいますのでw
0そうだね
プレイ済み
返信[43]
親投稿
yos yos-taro
b() の最後の戻1は、戻R でした;;
0そうだね
プレイ済み
返信[44]
親投稿
yos yos-taro
やっと理解しました、2点を結ぶときの塗りつぶしアルゴリズム。 プログラミングを普段やっていないもので…こういうアルゴリズム、私的にはとても難しいです(苦笑)こういう考え方がパッと出てくるのって、すごく尊敬します!! で、このアルゴリズムを毎回使うのは、結構効率悪そうですね…;; 一発実行するモノとしては良いんでしょうけど…。一発やったあと、各マーカーの行ける範囲を保持しておいて、あるマーカーからの線の移動が行われたら単純に行ける範囲を消す…みたいなことをして、消したときに行ける範囲が切れたら矛盾…のようにするのはいかがでしょう!? 行ける範囲が切れたかどうかは、今、線を引いた場所の上下左右マスの線を引いたところの3方向を見るだけ…のような感じで…。
0そうだね
プレイ済み
返信[45]
親投稿
MIKI ifconfig
科学技術週間終わりましたねー 擬似コードありがとうございます。 よく吟味させていただきます。 塗りつぶしいかにも効率悪いですよね。経路の記憶含め効率化を考えたいと思っています。並行してピクロスソルバーのプチコンへの移植作業も行っています。
0そうだね
プレイ済み
返信[46]
親投稿
yos yos-taro
MIKIさんへ: 以前、解が一意に決まっているのか?と質問を受けたことがあり、一意です。と答えましたが…当時確認されていたときは複数解が生じる可能性ありました;; 元々、問題作成の処理で「5円、50円、500円硬貨については、最大でも1度しか使えない」という前提で作っていたのですが、そのことをルールとして提示してなかったため、5円、50円が複数枚使える別解が生じてしまいます。 (あえてルールを伏せていた理由は…簡単になりすぎるかも?と思ったためですね…。でも実際に問題作成でこのルールに基づいて作っているので出すべきでした;;) ということで、このルールを表に出すことにしました。MIKIさんとは問題作成などで色々と会話させていただいたので、先ほど、新しい公開キーとともに別スレを立てたのですが、ここにも書いておきますね! 公開キー:43F5X3WD では。
0そうだね
プレイ済み