問題タブ [sudoku]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ブロック数独Javaで整数を比較する
こんにちは、完成したボードのソリューションが正しいことを確認する数独チェッカーに取り組んでいます。私は現在、ブロック内をチェックする方法に困惑しています。現在、左上のブロック(Block1)をチェックしている次のようなブール値があります。私が確信していないのは、それを設定するパラメータと、2 つの for ループを正常に実行する方法です。
問題は、3x3 の正方形に凝縮された 2 次元配列のセクションをチェックし、その領域の整数が繰り返されていないかどうかを確認したいことです。行に繰り返し整数と列があるかどうかを確認するこのコードを作成した同様のコードがあります。
これは、ブロックチェッカーを作成するために参照として使用した行チェッカーです
java - 入力をスキャンして特定の文字をスキップする
いくつかのセパレーターを含む数独ボードを含むテキスト ファイルをスキャンしています。サンプル入力は次のようになります。
「|」がある場所 ボーダーとして、=====+====+==== 仕切りとして。| を無視するようにこのコードを作成しました。および ====+===+=== しかし、コードのその部分をスキップし、それらを無効な文字として宣言し、そこに0を追加しています
家庭教師と話しましたが、これを修正する方法についての彼の提案を覚えていません。
java - 特定のブロック内の整数を比較する Sudoku Java
だから私は自分のコードを更新しましたが、完成した数独ボード内の 3x3 ブロックをチェックして、繰り返し番号がないかどうかを確認する方法にまだ困惑しています。これは私が更新した私の方法です。
これは呼び出しメソッドです。メソッドに送信するパラメーターがわかりません isBlock1Valid
java - 9x9の2次元配列Javaから9つのサブ配列を作成する
こんにちは、9x9 配列から 3x3 次元の 9 つのサブ配列を作成するのに助けが必要です。stackOverflow にも同様の質問が既にありましたが、残念ながらそれは c++ でした。サブ配列を作成する方法について、誰でも正しい方向に向けることができますか。
編集: had aa similar が had a similar に変更されました
これは、実装したブール式を呼び出す検証クラスです。Validate でブール値を送信するためのパラメーターがわかりません。代わりに 3x3 寸法のブロックを送るように再配置することを考えました。
および c++ リンク Dividing a 9x9 2d array to 9 sub-grids (sudoku のように)? (C++)
performance - Haskellでの数独ソルバーの最適化
Haskellで数独ソルバーを書きました。リストを調べ、「0」(空のセル)が見つかると、適合する数を取得して試してみます。
いくつかのパズルでは、これは機能します。たとえば、これは次のとおりです。
1秒もかかりませんでしたが、これは次のとおりです。
仕上がりは見ていません。正しい結果が返されるので、これはメソッドの問題ではないと思います。
プロファイリングは、ほとんどの時間が「isValid」関数に費やされたことを示しました。その機能について明らかに非効率的/遅いものはありますか?
android - 「残念ながら数独が停止しました」などのメッセージでアプリケーションが停止します
私はAndroidにまったく慣れていません。こんにちは、Androidという本を使用しています。数独ゲームに関する情報を表示する「バージョン情報」のボタンを作成しました。しかし、クリックするとすぐに、アプリケーションは「残念ながら数独が停止しました」と表示しなくなります。
02-22 09:27:27.693:E / AndroidRuntime(554):致命的な例外:メイン02-22 09:27:27.693:E / AndroidRuntime(554):java.lang.RuntimeException:アクティビティComponentInfo{orgを開始できません。 example.sudoku / org.example.sudoku.About}:android.view.InflateException:Binary XML file line#2:Error inflating class scrollview 02-22 09:27:27.693:E / AndroidRuntime(554):at android.app .ActivityThread.performLaunchActivity(ActivityThread.java:1956)02-22 09:27:27.693:E / AndroidRuntime(554):android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)02-22 09:27:27.693 :E / AndroidRuntime(554):android.app.ActivityThread.access $ 600(ActivityThread.java:123)02-22 09:27:27.693:E / AndroidRuntime(554):android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1147)02-22 09:27:27.693:E / AndroidRuntime(554):android.os.Handlerで。dispatchMessage(Handler.java:99)02-22 09:27:27.693:E / AndroidRuntime(554):android.os.Looper.loop(Looper.java:137)02-22 09:27:27.693:E / AndroidRuntime(554):android.app.ActivityThread.main(ActivityThread.java:4424)02-22 09:27:27.693:E / AndroidRuntime(554):java.lang.reflect.Method.invokeNative(ネイティブメソッド) 02-22 09:27:27.693:E / AndroidRuntime(554):at java.lang.reflect.Method.invoke(Method.java:511)02-22 09:27:27.693:E / AndroidRuntime(554):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)02-22 09:27:27.693:E / AndroidRuntime(554):com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)02-22 09:27:27.693:E / AndroidRuntime(554):dalvik.system.NativeStart.main(ネイティブメソッド)02-22 09:27:27.693:E / AndroidRuntime(554):原因作成者:android.view.InflateException:バイナリXMLファイルの行#2:クラスscrollviewの膨張エラー02-2209:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)02-22 09:27:27.693:E / AndroidRuntime(554) :at android.view.LayoutInflater.inflate(LayoutInflater.java:466)02-22 09:27:27.693:E / AndroidRuntime(554):at android.view.LayoutInflater.inflate(LayoutInflater.java:396)02-22 09:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflater.inflate(LayoutInflater.java:352)02-22 09:27:27.693:E / AndroidRuntime(554):com.android.internal .policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)02-22 09:27:27.693:E / AndroidRuntime(554):android.app.Activity.setContentView(Activity.java:1835)02-22 09 :27:27.693:E / AndroidRuntime(554):org.example.sudoku.About.onCreate(About.java:9)02-22 09:27:27.693:E / AndroidRuntime(554):android.app。Activity.performCreate(Activity.java:4465)02-22 09:27:27.693:E / AndroidRuntime(554):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)02-22 09:27:27.693: E / AndroidRuntime(554):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)02-22 09:27:27.693:E / AndroidRuntime(554):... 11 more 02-22 09:27: 27.693:E / AndroidRuntime(554):原因:java.lang.ClassNotFoundException:android.view.scrollview 02-22 09:27:27.693:E / AndroidRuntime(554):dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader。 java:61)02-22 09:27:27.693:E / AndroidRuntime(554):java.lang.ClassLoader.loadClass(ClassLoader.java:501)02-22 09:27:27.693:E / AndroidRuntime(554) :java.lang.ClassLoader.loadClass(ClassLoader.java:461)02-22 09:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflaterで。createView(LayoutInflater.java:552)02-22 09:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)02-22 09:27:27.693:E / AndroidRuntime(554):com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)02-22 09:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflater.onCreateView (LayoutInflater.java:653)02-22 09:27:27.693:E / AndroidRuntime(554):android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)02-22 09:27:27.693:E / AndroidRuntime (554):... 20 more 02-22 09:30:52.675:E / AndroidRuntime(582):FATAL EXCEPTION:main 02-22 09:30:52.675:E / AndroidRuntime(582):java.lang.RuntimeException :アクティビティを開始できませんComponentInfo {org.example.sudoku / org.example.sudoku.About}:android.view.InflateException:バイナリXMLファイルの行#2:クラスscrollviewの膨張エラー02-2209:30:52.675:E / AndroidRuntime(582):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)02-22 09:30:52.675:E / AndroidRuntime(582) :at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)02-22 09:30:52.675:E / AndroidRuntime(582):at android.app.ActivityThread.access $ 600(ActivityThread.java:123)02- 22 09:30:52.675:E / AndroidRuntime(582):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)02-22 09:30:52.675:E / AndroidRuntime(582):androidで。 os.Handler.dispatchMessage(Handler.java:99)02-22 09:30:52.675:E / AndroidRuntime(582):android.os.Looper.loop(Looper.java:137)02-22 09:30: 52.675:E / AndroidRuntime(582):android.app.ActivityThread.main(ActivityThread.java:4424)02-22 09:30:52.675:E / AndroidRuntime(582):java.lang.reflect.Method。invokeNative(ネイティブメソッド)02-22 09:30:52.675:E / AndroidRuntime(582):at java.lang.reflect.Method.invoke(Method.java:511)02-22 09:30:52.675:E / AndroidRuntime (582):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)02-22 09:30:52.675:E / AndroidRuntime(582):com.android.internal.osで。 ZygoteInit.main(ZygoteInit.java:551)02-22 09:30:52.675:E / AndroidRuntime(582):dalvik.system.NativeStart.main(ネイティブメソッド)02-22 09:30:52.675:E / AndroidRuntime (582):原因:android.view.InflateException:バイナリXMLファイル行#2:クラスscrollviewの膨張エラー02-22 09:30:52.675:E / AndroidRuntime(582):android.view.LayoutInflater.createViewFromTag(LayoutInflater .java:691)02-22 09:30:52.675:E / AndroidRuntime(582):android.view.LayoutInflater.inflate(LayoutInflater.java:466)02-22 09:30:52.675:E / AndroidRuntime(582 )::at android.view.LayoutInflater.inflate(LayoutInflater.java:396)02-22 09:30:52.675:E / AndroidRuntime(582):at android.view.LayoutInflater.inflate(LayoutInflater.java:352)02-22 09 :30:52.675:E / AndroidRuntime(582):com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)02-22 09:30:52.675:E / AndroidRuntime(582):at android.app.Activity.setContentView(Activity.java:1835)02-22 09:30:52.675:E / AndroidRuntime(582):org.example.sudoku.About.onCreate(About.java:9)02-22 09:30:52.675:E / AndroidRuntime(582):android.app.Activity.performCreate(Activity.java:4465)02-22 09:30:52.675:E / AndroidRuntime(582):android.app.Instrumentation .callActivityOnCreate(Instrumentation.java:1049)02-22 09:30:52.675:E / AndroidRuntime(582):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)02-22 09:30:52.675:E / AndroidRuntime(582):... 11 more 02-22 09:30:52.675:E / AndroidRuntime(582):原因:java.lang.ClassNotFoundException:android.view.scrollview 02-22 09:30:52.675 :E / AndroidRuntime(582):dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)02-22 09:30:52.675:E / AndroidRuntime(582):java.lang.ClassLoader.loadClass(ClassLoader。 java:501)02-22 09:30:52.675:E / AndroidRuntime(582):java.lang.ClassLoader.loadClass(ClassLoader.java:461)02-22 09:30:52.675:E / AndroidRuntime(582) :at android.view.LayoutInflater.createView(LayoutInflater.java:552)02-22 09:30:52.675:E / AndroidRuntime(582):at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)02-22 09:30:52.675:E / AndroidRuntime(582):com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)02-22 09:30:52.675:E / AndroidRuntime(582):android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)02-22 09:30:52.675:E / AndroidRuntime(582):android.view.LayoutInflater.createViewFromTag(LayoutInflater.java) :678)02-22 09:30:52.675:E / AndroidRuntime(582):... 20 more 02-22 09:35:04.594:E / AndroidRuntime(596):致命的な例外:メイン02-22 09:35 :04.594:E / AndroidRuntime(596):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {org.example.sudoku / org.example.sudoku.About}:android.view.InflateException:バイナリXMLファイル行#2:クラスscrollviewの膨張エラー02-2209:35:04.594:E / AndroidRuntime(596):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)02-22 09:35:04.594:E / AndroidRuntime(596) :android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)02-22 09:35:04.594:E / AndroidRuntime(596):at android.app.ActivityThread.access $ 600(ActivityThread.java:123)02-22 09:35:04.594:E / AndroidRuntime(596):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)02 -22 09:35:04.594:E / AndroidRuntime(596):android.os.Handler.dispatchMessage(Handler.java:99)02-22 09:35:04.594:E / AndroidRuntime(596):android.os .Looper.loop(Looper.java:137)02-22 09:35:04.594:E / AndroidRuntime(596):android.app.ActivityThread.main(ActivityThread.java:4424)02-22 09:35:04.594 :E / AndroidRuntime(596):at java.lang.reflect.Method.invokeNative(Native Method)02-22 09:35:04.594:E / AndroidRuntime(596):at java.lang.reflect.Method.invoke(Method .java:511)02-22 09:35:04.594:E / AndroidRuntime(596):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)02-22 09:35:04.594 :E / AndroidRuntime(596):com.android.internal.osで。ZygoteInit.main(ZygoteInit.java:551)02-22 09:35:04.594:E / AndroidRuntime(596):dalvik.system.NativeStart.main(ネイティブメソッド)02-22 09:35:04.594:E / AndroidRuntime (596):原因:android.view.InflateException:バイナリXMLファイル行#2:クラスscrollviewの膨張エラー02-22 09:35:04.594:E / AndroidRuntime(596):android.view.LayoutInflater.createViewFromTag(LayoutInflater .java:691)02-22 09:35:04.594:E / AndroidRuntime(596):android.view.LayoutInflater.inflate(LayoutInflater.java:466)02-22 09:35:04.594:E / AndroidRuntime(596) ):android.view.LayoutInflater.inflate(LayoutInflater.java:396)02-22 09:35:04.594:E / AndroidRuntime(596):android.view.LayoutInflater.inflate(LayoutInflater.java:352)02- 22 09:35:04.594:E / AndroidRuntime(596):com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)02-22 09:35:04.594:E / AndroidRuntime(596):android.app.Activity.setContentView(Activity.java:1835)02-22 09:35:04.594:E / AndroidRuntime(596):org.example.sudoku.About.onCreate(About .java:9)02-22 09:35:04.594:E / AndroidRuntime(596):android.app.Activity.performCreate(Activity.java:4465)02-22 09:35:04.594:E / AndroidRuntime(596) ):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)02-22 09:35:04.594:E / AndroidRuntime(596):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)02- 22 09:35:04.594:E / AndroidRuntime(596):... 11 more 02-22 09:35:04.594:E / AndroidRuntime(596):原因:java.lang.ClassNotFoundException:android.view.scrollview 02 -22 09:35:04.594:E / AndroidRuntime(596):dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)02-22 09:35:04.594:E / AndroidRuntime(596):Javaでlang.ClassLoader.loadClass(ClassLoader.java:501)02-22 09:35:04.594:E / AndroidRuntime(596):at java.lang.ClassLoader.loadClass(ClassLoader.java:461)02-22 09:35: 04.594:E / AndroidRuntime(596):android.view.LayoutInflater.createView(LayoutInflater.java:552)02-22 09:35:04.594:E / AndroidRuntime(596):android.view.LayoutInflater.onCreateView(LayoutInflater .java:636)02-22 09:35:04.594:E / AndroidRuntime(596):com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)02-22 09:35:04.594 :E / AndroidRuntime(596):android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)02-22 09:35:04.594:E / AndroidRuntime(596):android.view.LayoutInflater.createViewFromTag(LayoutInflater。 java:678)02-22 09:35:04.594:E / AndroidRuntime(596):... 20 more 02-22 09:43:32.034:E / AndroidRuntime(610):致命的な例外:main 02-22 09:43:32.034:E / AndroidRuntime(610):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {org.example.sudoku / org.example.sudoku.About}:android.view.InflateException:バイナリXMLファイル行#2:クラスscrollviewの膨張エラー02-22 09:43:32.034:E / AndroidRuntime(610):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)02-22 09:43:32.034 :E / AndroidRuntime(610):android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)02-22 09:43:32.034:E / AndroidRuntime(610):android.app.ActivityThread.access $ 600(ActivityThread .java:123)02-22 09:43:32.034:E / AndroidRuntime(610):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)02-22 09:43:32.034:E / AndroidRuntime (610):android.os.Handler.dispatchMessage(Handler.java:99)02-22 09:43:32.034:E / AndroidRuntime(610):at android.os.Looper.loop(Looper.java:137)02-22 09:43:32.034:E / AndroidRuntime(610):at android.app.ActivityThread.main(ActivityThread.java:4424)02-22 09 :43:32.034:E / AndroidRuntime(610):at java.lang.reflect.Method.invokeNative(Native Method)02-22 09:43:32.034:E / AndroidRuntime(610):at java.lang.reflect.Method .invoke(Method.java:511)02-22 09:43:32.034:E / AndroidRuntime(610):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)02-22 09 :43:32.034:E / AndroidRuntime(610):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)02-22 09:43:32.034:E / AndroidRuntime(610):dalvikでsystem.NativeStart.main(ネイティブメソッド)02-22 09:43:32.034:E / AndroidRuntime(610):原因:android.view.InflateException:バイナリXMLファイル行#2:クラスscrollviewの膨張エラー02-22 09: 43:32.034:E / AndroidRuntime(610):at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)02-22 09:43:32.034:E / AndroidRuntime(610):at android.view.LayoutInflater.inflate(LayoutInflater.java:466)02-22 09 :43:32.034:E / AndroidRuntime(610):android.view.LayoutInflater.inflate(LayoutInflater.java:396)02-22 09:43:32.034:E / AndroidRuntime(610):android.view.LayoutInflaterで。 inflate(LayoutInflater.java:352)02-22 09:43:32.034:E / AndroidRuntime(610):com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)02-22 09: 43:32.034:E / AndroidRuntime(610):android.app.Activity.setContentView(Activity.java:1835)02-22 09:43:32.034:E / AndroidRuntime(610):org.example.sudoku.About .onCreate(About.java:9)02-22 09:43:32.034:E / AndroidRuntime(610):android.app.Activity.performCreate(Activity.java:4465)02-22 09:43:32.034:E / AndroidRuntime(610):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)02-22 09:43:32.034:E / AndroidRuntime(610):android.app.ActivityThread.performLaunchActivity(ActivityThread.java) :1920)02-22 09:43:32.034:E / AndroidRuntime(610):... 11 more 02-22 09:43:32.034:E / AndroidRuntime(610):原因:java.lang.ClassNotFoundException:android .view.scrollview 02-22 09:43:32.034:E / AndroidRuntime(610):dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)02-22 09:43:32.034:E / AndroidRuntime(610) :at java.lang.ClassLoader.loadClass(ClassLoader.java:501)02-22 09:43:32.034:E / AndroidRuntime(610):at java.lang.ClassLoader.loadClass(ClassLoader.java:461)02-22 09:43:32.034:E / AndroidRuntime(610):android.view.LayoutInflater.createView(LayoutInflater.java:552)02-22 09:43:32.034:E / AndroidRuntime(610):at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)02-22 09:43:32.034:E / AndroidRuntime(610):at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java: 66)02-22 09:43:32.034:E / AndroidRuntime(610):android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)02-22 09:43:32.034:E / AndroidRuntime(610):at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)02-22 09:43:32.034:E / AndroidRuntime(610):... 20 moreat android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)02-22 09:43:32.034:E / AndroidRuntime(610):... 20 moreat android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)02-22 09:43:32.034:E / AndroidRuntime(610):... 20 more
java - バックトラッキングと再帰を使用した Java の数独ソルバー
Java で 9x9 グリッドの数独ソルバーをプログラミングしています。
次の方法があります。
グリッドの印刷
指定された値でボードを初期化する
競合のテスト (同じ番号が同じ行または 3x3 サブグリッドにある場合)
数字を 1 つずつ配置する方法で、最も手間がかかります。
その方法について詳しく説明する前に、再帰とバックトラッキングを使用して解決する必要があることを覚えておいてください (例として、こちらのアプレットをご覧ください http://www.heimetli.ch/ffh/simplifiedsudoku.html ) 。
また、私はこの数独を、左上から始めて最初の列、次に 2 番目の列など、垂直に下に移動して解決しています。
これまでのところ、私は次のものを持っています:
BACKTRACKING とラベルを付けた場所は、コードの残りの部分を移動する必要があると思われる場所です。
私は次の行に沿って何かを考え出しました:
- 値が 10 の場合、その値を 0 に戻し、行を戻し、その値を 1 増やします
その後戻りの「戦略」は、いくつかの理由で正確には機能しません。
前の行が指定された値だった場合 (つまり、インクリメントしたり触れたりすることは想定されていませんが、代わりに、そこに配置した最後の値に戻ります)
前の値が 9 だった場合はどうなるでしょうか。それを 1 増やしたら、今度は 10 になり、うまくいきません。
誰かが私を助けてくれますか?
java - バックトレース中の数独再帰の問題。(強引な)
重複の可能性:
Java の数独ソルバー、バックトラッキングと再帰を使用
再帰と総当たりを使用して数独を解くプログラムを作成しています。私の主な問題は、行き詰まったものを元に戻す方法を理解できないことです。
プログラムの一般的なアルゴリズムは次のとおりです。
数独のゼロの数を見つけます。
最初の 0 の位置に (getNextEmpty メソッドがこれを行います)、数字を挿入します (insertnumber は、値が数独ルールに準拠していることを確認し、準拠している場合は true を返します)。
次に、再帰呼び出しを行い、ゼロがなくなったら終了します (n はゼロの数です)。
プログラムが動かなくなった場合は、後戻りして部分を変更する必要があります。しかし、これはどのように可能ですか?
Cell クラスは、調整するセルの位置を [row, column] 形式の配列で実際に保持します。そのセルに関連付けられた行、列、またはより小さいグリッドを返すメソッドがあります。
私は手持ちやすべてのコードを要求しているわけではありません。再帰を理解することに正当に興味があるので、正しい方向に微調整するだけで十分です。
c# - LINQ 斜め数独フィラー
私は数独ジェネレーターを持っています。私のアルゴリズムは次のとおりです。
- 有効な塗りつぶされた 9x9 グリッドを作成するには、数独グリッド全体を数字で埋めます。
- 一定量の数字を削除します。
- が解けるかチェック。
- 人間の解決技術を実装して解決し、使用する技術の難易度に応じて難易度を評価します。
問題はステップ 1 にあります。私のブルート フォース アルゴリズムは、通常の数独では完全に機能しますが、対角数独を作成しようとすると (グリッド内の 2 つの対角線のそれぞれにも一意の番号が必要です)、生成時間が数分に増加します。これは受け入れがたい。
そこで、linq を使用してグリッドを埋めることが良い解決策であることがわかりました。
私の考えは:
- 可能なすべてのセルと値のコレクションを作成します (81 の位置、それぞれに 9 つの可能な値があります)。
次に、次のようなクエリのクエリを作成します。
- すべての可能なセルから、各位置が正確に 1 回存在する必要があります (たとえば、セル 0,0 が 1 回、セル 1,1 が 1 回)。
- 各セルの値 (1 ~ 9) は、その行、セル、正方形 (セルが対角線上にある場合は対角線) で一意である必要があります。
- 返される組み合わせは毎回ランダムでなければなりません
より良い解決策があると確信していますが、まだ何も見ていません.linqに関する私のスキルはかなり限られているため、正しい方向性を示してくれて非常に感謝しています. ありがとうございました。