问题标签 [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.

0 投票
2 回答
310 浏览

delphi - Delphi 文本文件为空

我最近开始在 delphi 中编程。

现在,我有一个练习。

我必须将最高分保存在文本文件中。我有这个功能:

输入(scorelijst/lijst1):

现在,我想在文本文件的正确位置对新的最高分进行排序。但是,输出是空的......我做错了什么?

评论是荷兰语,对不起。

TArray = array of string;

0 投票
14 回答
2851 浏览

algorithm - Code Golf:验证数独网格

介绍

一个有效的数独网格用数字 1 到 9 填充,在每个 9 行或列的子块中没有任何数字出现超过一次。如果您不熟悉这个流行的谜题,请阅读本文了解更多详情。

挑战

挑战在于编写最短的程序来验证可能未满的数独网格。

输入将是一串 9 行,每行 9 个字符,代表网格。一个空单元格将由 a 表示.。如果网格有效,您的输出应该Valid是,否则输出Invalid

例子

输入

输出

输入

输出

代码高尔夫规则

请以解决此问题的任何语言发布您的最短代码。输入和输出可以通过标准输入和标准输出或您选择的其他文件来处理。

获胜者将是一种语言中最短的解决方案(按字节数计算),并且在发布此问题之前已经存在实现。因此,尽管您可以自由地使用您刚刚编写的语言来提交 0 字节解决方案,但它不会被计算在内,而且您可能会被否决。

0 投票
3 回答
4984 浏览

java - 在 Java 中创建数独

我正在创建一个发明新数独谜题的程序。我最初计划这样做的方法是发明一个新的谜题,然后删除随机数。但是,我使用的算法(见下文)创建一个新谜题可能需要 5 分钟才能完成。有没有人有更快的解决方案?

创建算法


方法:


resetBoard() 只是用 NULL_VAL 填充板。

0 投票
8 回答
2049 浏览

matlab - 数独求解器评价函数

所以我正在尝试编写一个简单的遗传算法来解决数独问题(我知道这不是最有效的方法,但这只是为了练习进化算法)。我在想出一个有效的评估函数来测试这个谜题是否得到解决以及有多少错误时遇到了一些问题。我的第一直觉是检查矩阵的每一行和每一列(以八度音程进行,类似于 matlab)通过对它们进行排序、检查重复项然后将它们放回原样来检查它们是否具有唯一元素,这似乎很长缠绕。有什么想法吗?

抱歉,如果之前有人问过这个问题...

0 投票
2 回答
1381 浏览

logic - 通过生产规则解决数独

我正在尝试使用生产规则解决任何数独难题,并​​使用 Drools 作为我的推理引擎。Drools 的示例之一正是数独求解器,以下是相关规则:

http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/sudokuSolver.drl

...但它不能正常工作。一直以来,网格中的一个或多个单元格最终都是空的,程序将这个谜题报告为“未解决”。

有没有人为数独构建了一个基于推理规则的工作求解器?使用的语言或引擎无关紧要,我希望看到一组规则,以便我可以将它们调整为 Drools

0 投票
2 回答
549 浏览

java - 数独递归问题(Java)

我在创建随机数独网格时遇到问题。我尝试修改用于解决难题的递归模式。拼图本身是一个二维整数数组。这就是我所拥有的(顺便说一句,该方法不仅随机化第一行。我有一个随机化第一行的想法,然后决定做整个网格):

这会导致 ArrayIndexOutOfBoundsException 异常高或低(+- 100,000)。我试图看看它在方法中的应用程度,它永远不会超出这条线:

我不明白数组索引如何变得如此之高。谁能帮我吗?

0 投票
3 回答
5326 浏览

c++ - 将 9x9 2d 数组划分为 9 个子网格(如数独)?(C++)

我正在尝试编写一个数独求解器,我尝试这样做的方法是拥有一个 9x9 的指针网格,这些指针包含具有解决方案或有效可能值的“集合”对象的地址。

我能够通过 2 个 for 循环遍历数组,首先遍历每一列,然后转到下一行并重复。

但是,我很难想象如何指定特定单元格属于哪个子网格(或框、块等)。我最初的印象是在 for 循环中有 if 语句,例如 if row < 2 (rows start at 0) & col < 2 then we're in the 1st block,但这似乎变得混乱。会有更好的方法来做到这一点吗?

0 投票
6 回答
9560 浏览

algorithm - 如何展示一个数独解决方案是独一无二的

给定一个未解决的数独,如何证明它有一个独特的解决方案?

0 投票
6 回答
6403 浏览

c# - 数独有效性检查算法 - 此代码如何工作?

我正在阅读此处发布的问题:C# 中的数独算法

发布的解决方案之一就是这段代码。

这个想法是它将检测值数组中的重复项;但我不知所措。谁可以给我解释一下这个?

编辑:谢谢大家。这么多好答案,我不知道如何选择一个。现在完全有道理。

0 投票
1 回答
1052 浏览

java - 安卓数独游戏,按下按钮会导致游戏崩溃

我正在创建一个数独游戏,但是当我按下按钮时它会导致游戏崩溃。这是我的代码:

FPSudoku.java:

Howtoplay.java

更新

安卓清单.xml

更新的日志猫

02-25 00:36:08.623: 调试/AndroidRuntime(818): >>>>>>>>>>>>>> AndroidRuntime 开始 <<<<<<<<<<<<<<
02-25 00 :36:08.623: DEBUG/AndroidRuntime(818): CheckJNI 开启
02-25 00:36:08.763: DEBUG/AndroidRuntime(818): --- 注册本机函数 ---
02-25 00:36:09.504: DEBUG /dalvikvm(237):GC_EXPLICIT 在 127 毫秒内释放了 130 个对象/6944 个字节
02-25 00:36:09.544:DEBUG/PackageParser(43):扫描包:/data/app/vmdl10845.tmp
02-25 00:36:09.544 : WARN/PackageParser(43): 包 /data/app/vmdl10845.tmp 中的问题:
02-25 00:36:09.544: WARN/PackageParser(43): Unknown element under : activity at /data/app/vmdl10845.tmp二进制 XML 文件行 #15
02-25 00:36:09.634:INFO/PackageManager(43):删除非系统包:org.example.fpsudoku
02-25 00:36:09.634: INFO/ActivityManager(43): 强制停止包 org.example.fpsudoku uid=10036
02-25 00:36:09.734: DEBUG/PackageManager(43): 扫描包 org.example.fpsudoku
02-25 00:36:09.734: INFO/PackageManager(43): 包 org.example.fpsudoku 代码路径从 /data/app/org.example.fpsudoku-1.apk 更改为 /data/app/org.example.fpsudoku -2.apk;保留数据并使用新的
02-25 00:36:09.744: INFO/PackageManager(43): /data/app/org.example.fpsudoku-2.apk 更改;开箱
02-25 00:36:09.754: DEBUG/installd(35): DexInv: --- BEGIN '/data/app/org.example.fpsudoku-2.apk' ---
02-25 00:36:09.904 :调试/dalvikvm(825):DexOpt:加载 28ms,验证 17ms,选择 2ms
02-25 00:36:09.904:调试/安装(35):DexInv:--- END '/data/app/org.example.fpsudoku-2.apk'(成功)---
02-25 00:36 :09.914:WARN/PackageManager(43):pkg 的代码路径:org.example.fpsudoku 从 /data/app/org.example.fpsudoku-1.apk 更改为 /data/app/org.example.fpsudoku-2。 apk
02-25 00:36:09.914:WARN/PackageManager(43):pkg 的资源路径:org.example.fpsudoku 从 /data/app/org.example.fpsudoku-1.apk 更改为 /data/app/org .example.fpsudoku-2.apk
02-25 00:36:09.914: DEBUG/PackageManager(43): 活动: org.example.fpsudoku.FPSudoku
02-25 00:36:09.924: INFO/ActivityManager(43): Force停止包 org.example.fpsudoku uid=10036
02-25 00:36:10.004: INFO/installd(35): 移动 /data/dalvik-cache/data@app@org.example.fpsudoku-2.apk@classes.dex -> /data/dalvik-cache/ data@app@org.example.fpsudoku-2.apk@classes.dex
02-25 00:36:10.014: DEBUG/PackageManager(43): 新包安装在 /data/app/org.example.fpsudoku-2。 apk
02-25 00:36:10.174: DEBUG/dalvikvm(43): GC_FOR_MALLOC 在 97 毫秒内释放了 7382 个对象/491576 个字节
02-25 00:36:10.274: INFO/ActivityManager(43): 强制停止包 org.example.fpsudoku uid=10036
02-25 00:36:10.334:DEBUG/dalvikvm(117):GC_EXPLICIT 在 53ms 内释放了 814 个对象/43456 个字节
02-25 00:36:10.554:DEBUG/dalvikvm(43):GC_EXPLICIT 释放了 3804 个对象/210760 102 毫秒内的字节数
02-25 00:36:10.574: WARN/RecognitionManagerService(43): 找不到可用的语音识别服务
02-25 00:36:10.614: INFO/installd(35): 取消链接 /data/dalvik-cache/data@app@ org.example.fpsudoku-1.apk@classes.dex
02-25 00:36:10.654: DEBUG/AndroidRuntime(818): 关闭 VM
02-25 00:36:10.664: DEBUG/dalvikvm(818): 调试器有分离的;对象注册表有 1 个条目
02-25 00:36:10.694:INFO/AndroidRuntime(818):注意:附加线程“Binder Thread #3”失败
02-25 00:36:11.254:DEBUG/AndroidRuntime(831):> >>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
02-25 00:36:11.254: DEBUG/AndroidRuntime(831): CheckJNI 开启
02- 25 00:36:11.414:
02-25 00:36:12.034:INFO/ActivityManager(43):开始活动:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=org.example。 fpsudoku/.FPSudoku }
02-25 00:36:12.064: INFO/ActivityManager(43): 为活动 org.example.fpsudoku/.FPSudoku 启动 proc org.example.fpsudoku: pid=837 uid=10036 gids={}
02 -25 00:36:12.094:DEBUG/AndroidRuntime(831):关闭 VM
02-25 00:36:12.104:DEBUG/dalvikvm(831):调试器已分离;对象注册表有 1 个条目
02-25 00:36:12.954: INFO/ActivityManager(43): Displayed activity org.example.fpsudoku/.FPSudoku: 901 ms (total 901 ms)
02-25 00:36:14.024: INFO/ ActivityManager(43):开始活动:Intent { cmp=org.example.fpsudoku/.Howtoplay }
02-25 00:36:14.034: DEBUG/AndroidRuntime(837): 关闭 VM
02-25 00:36:14.034: WARN/dalvikvm(837): threadid=1: 线程退出未捕获异常 (group=0x4001d800)
02 -25 00:36:14.044: ERROR/AndroidRuntime(837): FATAL EXCEPTION: main
02-25 00:36:14.044: ERROR/AndroidRuntime(837): android.content.ActivityNotFoundException: Unable to find explicit activity class {org. example.fpsudoku/org.example.fpsudoku.Howtoplay}; 您是否在 AndroidManifest.xml 中声明了此活动?
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 android. app.Instrumentation.execStartActivity(Instrumentation.java:1378)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at android.app.Activity.startActivityForResult(Activity.java:2817)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at android. app.Activity.startActivity(Activity.java:2923)
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 org.example.fpsudoku.FPSudoku.onClick(FPSudoku.java:31)
02-25 00: 36:14.044: ERROR/AndroidRuntime(837): at android.view.View.performClick(View.java:2408)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at android.view.View$PerformClick .run(View.java:8816)
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 android.os.Handler.handleCallback(Handler.java:587)
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 android.os.Handler.dispatchMessage(Handler.java:92)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at android.os.Looper.loop(Looper.java:123)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at android. app.ActivityThread.main(ActivityThread.java:4627)
02-25 00:36:14.044: 错误/AndroidRuntime(837): 在 java.lang.reflect.Method.invokeNative(Native Method)
02-25 00:36:14.044 : ERROR/AndroidRuntime(837): at java.lang.reflect.Method.invoke(Method.java:521)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at com.android.internal.os。 ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-25 00:36:14.044: 错误/AndroidRuntime(837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-25 00:36:14.044: ERROR/AndroidRuntime(837): at dalvik.system.NativeStart.main(Native Method)
02-25 00:36:14.054: WARN/ActivityManager(43): 强制完成活动 org.example .fpsudoku/.FPSudoku
02-25 00:36:14.564:WARN/ActivityManager(43):HistoryRecord{43f8d620 org.example.fpsudoku/.FPSudoku}
02-25 00:36:15.764 的活动暂停超时:INFO/Process( 837): 发送信号。PID: 837 SIG: 9
02-25 00:36:15.774: INFO/ActivityManager(43): Process org.example.fpsudoku (pid 837) 已经死亡。
02-25 00:36:15.774: INFO/WindowManager(43): WIN DEATH: Window{440296f8 org.example.fpsudoku/org.example.fpsudoku.FPSudoku paused=false}
02-25 00:36:15.824:WARN/InputManagerService(43):得到 RemoteException 向 pid 837 uid 10036 发送 setActive(false) 通知
02-25 00:36:18.894:DEBUG/SntpClient(43):请求时间失败:java .net.SocketException:协议 02-25 00:36:20.194 不支持地址系列
:DEBUG/dalvikvm(237):GC_EXPLICIT 在 133 毫秒内释放了 156 个对象/11312 个字节
02-25 00:36:24.782:WARN/ActivityManager(43 ): HistoryRecord{43f8d620 org.example.fpsudoku/.FPSudoku}
02-25 00:36:25.254: DEBUG/dalvikvm(262): GC_EXPLICIT 在 131 毫秒内释放 26 个对象/1144 个字节的活动销毁超时