プロが教えるわが家の防犯対策術!

VBを使ってナンプレを作ろうと思っているのですが、どうやればいいのかが全く分かりません。
ナンプレのマスには何を使えばいいのか、数字などのランダム生成の仕方など。
VBを始めて間もない初心者ですが、分かりやすく教えていただけたらうれしいです。

A 回答 (3件)

「ナンプレ」はパチモンの名称であって、本家本元は「数独(SUDOKU)」と言う。

世界中で通用する名称です。てのはさておき、

(a)ユーザインターフェースを作るという課題と、(b)問題を作るという課題の二つを達成する必要があります。(a)は結構時間がかかりますが、ま、頑張ればなんとかなる話であって、サンプルコードとかを参考にしていろいろ工夫するんです。学べることは多いでしょうけれど、それは所詮VB限定の知識でしかありません。労働集約的な課題ですね。
 アタマが必要なのは(b)。というのは、数字をデタラメに並べたって、ほぼ全てが(A)複数の解がある問題か、(B)解がない問題、のどちらかになってしまう。(C)ちょうど一つの解がある問題を作るのが難しいんです。
 そのためのひとつの方針を考えてみると:

(b1) 与えられた問題を解くアルゴリズムを考案する。
 難しい問題になると分岐がある。すなわち、「ここが仮に"1"だとすると、…」ということ(先読み)をやってみて、もしダメだったら分岐点まで戻る、ということをやる。さらに、問題が解けたら、また分岐点まで戻って、他に解がないかを探す。これはback trackingという技術です。これを組み込まなくてはならない。

(b2) 問題を作るアルゴリズムは以下の通り。まずはテキトーにいくつかのマスに数字を入れて問題を作る。すると(A)とか(B)になってるかもしれない(てか、大抵そうなってる)。なので(b1)を使って解を探す。
 もし(A)だったら、さらに空白のマスをひとつ選んで数字を入れ、(b1)で解を探す。
 もし(B)だったら失敗で、最後に数字を入れたところを取り消しにして、別の空白のマスに数字を入れ、再度やりなおす。つまり、これもback trackingです。
 もし(C)だったら、ちょうど一つの解がある問題ができた。

ついでに、
(c) 与えられた問題を直感的に解くプログラムを考案する。
 ただいま大流行中のAIの問題です。(b1)とは違って先読みをせずに解くんで、時には失敗する。ANNでやってみると面白そうではある。

 一方、back trackingを学ぶには、今時じゃない昔(90年代以前)のAIの入門書とかアルゴリズムの教科書で、searchのアルゴリズムを勉強するとよろしかろう。
    • good
    • 1

こんにちは



表示を簡単にすることを考えると、エクセルやブラウザ(table)などの「表」的な表示機能を有しているソフトを利用するのが良いのではないでしょうか?
(もちろん独自に表示しても良いですが)

初期表示だけを考えれば、VBからHTMLのソースを生成するよりもエクセルの方が簡単にセットできそうに思えます。
(HTMLでも、先に雛形を作成しておいて値だけセットするようにすれば、あまり変わらないと思います。)
一方で、UIに関してはブラウザの方がより細かく作り込みやすいかも知れません。
(javascriptの知識が必要になりますが…)

ユーザに対しての便利機能(メモ機能など)等も考慮するなら、そのあたりも含めてどのようなものにするのかを具体的にイメージして、使用するソフトを決めるのが良いかも知れません。
あとは質問者様にVB以外の知識がどれだけあるか等によっても、ハードルの高さが変わってくると思います。
    • good
    • 0

初級者ですので的外れかもですが。



>数字などのランダム生成の仕方など。

ただ単に数字を『意味もなく並べても』仕方ないですよね?
正解に辿り着けるよう並べなければならない。
ならまずはVBAなどで行なわれている『数独の解析』をやってみてアルゴリズムを身に付けるのが宜しいのではないかなと。

文章だけでは説明も厳しいと思いますよ。
マスを何にするかってのもどう操作させたいのかによって変わるでしょ。
特に回答と問題(固定値)をどのように見分けさせるかとか。

最初は〇×ゲーム辺りにチャレンジしても良いのでは?
    • good
    • 0

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