A 回答 (3件)
- 最新から表示
- 回答順に表示
No.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のアルゴリズムを勉強するとよろしかろう。
No.2
- 回答日時:
こんにちは
表示を簡単にすることを考えると、エクセルやブラウザ(table)などの「表」的な表示機能を有しているソフトを利用するのが良いのではないでしょうか?
(もちろん独自に表示しても良いですが)
初期表示だけを考えれば、VBからHTMLのソースを生成するよりもエクセルの方が簡単にセットできそうに思えます。
(HTMLでも、先に雛形を作成しておいて値だけセットするようにすれば、あまり変わらないと思います。)
一方で、UIに関してはブラウザの方がより細かく作り込みやすいかも知れません。
(javascriptの知識が必要になりますが…)
ユーザに対しての便利機能(メモ機能など)等も考慮するなら、そのあたりも含めてどのようなものにするのかを具体的にイメージして、使用するソフトを決めるのが良いかも知れません。
あとは質問者様にVB以外の知識がどれだけあるか等によっても、ハードルの高さが変わってくると思います。
No.1
- 回答日時:
初級者ですので的外れかもですが。
>数字などのランダム生成の仕方など。
ただ単に数字を『意味もなく並べても』仕方ないですよね?
正解に辿り着けるよう並べなければならない。
ならまずはVBAなどで行なわれている『数独の解析』をやってみてアルゴリズムを身に付けるのが宜しいのではないかなと。
文章だけでは説明も厳しいと思いますよ。
マスを何にするかってのもどう操作させたいのかによって変わるでしょ。
特に回答と問題(固定値)をどのように見分けさせるかとか。
最初は〇×ゲーム辺りにチャレンジしても良いのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- その他(プログラミング・Web制作) .netに近いjsフレームワークは何ですか 2 2022/05/12 22:28
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# visual studioでフォームデザインを作成する時のVB.netとC#の違い 2 2023/06/22 03:04
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- Visual Basic(VBA) ChatGPTに作らせたい Excel VBA 1 2023/04/05 19:56
- 雑誌・週刊誌 「ナンプレ」好きですか? 6 2022/06/13 16:05
- インフルエンザ ダイソーのナンプレは認知症予防に効果ありますか? 4 2023/06/30 19:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
期間重複チェックがわかりません
-
正しい五十音順について
-
ルービックキューブの解法プロ...
-
[ EXCEL VBA ] 図形を読み込む...
-
ランダム関数を作りたい。
-
多変数関数の最小値を求めるプ...
-
最短経路を計算するプログラム
-
visual basic プログラミング
-
グループを均等に分けるには?...
-
BCDについて
-
巡回セールスマン問題
-
画像から文字を認識してテキス...
-
OpenCVのライセンスについて
-
あいまい検索(文字列一致率)
-
アルゴリズムの学習サイト
-
バケット法による文字列ソート
-
最大公約数を求めたい!
-
C♯で電卓を作成しています。演...
-
プラグラマーを続けていくため...
-
プログラムの作り方、アルゴリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
アルゴリズムとプロトコールの違い
-
BCDについて
-
[ EXCEL VBA ] 図形を読み込む...
-
Stuck
-
グループを均等に分けるには?...
-
画像から文字を認識してテキス...
-
Dijkstraて
-
期間重複チェックがわかりません
-
多変数関数の最小値を求めるプ...
-
JPEG圧縮で8×8に分割する理由に...
-
OpenCVのライセンスについて
-
データを圧縮したい
-
ルービックキューブを揃えるた...
-
5人のテストの点数を入力すると...
-
C♯で電卓を作成しています。演...
-
ドロネー三角形のプログラム
-
vbaで、連立方程式を解く方法に...
-
オンラインゲームのオートラン...
-
トップダウン解析とボトムアッ...
おすすめ情報