Questions tagged «sudoku»

这个挑战与数独难题的解决,创建或其他工作直接相关。


14
数独压缩
您的工作是用以下任何一种语言编写一个程序(或两个单独的程序): 可以将完整的数独板作为输入(以任何逻辑格式)并将其压缩为字符串 可以将压缩后的字符串作为输入并解压缩以获得完全相同的完整数独板(以9行的任何逻辑格式输出) 注意:使用数独规则以发挥自己的优势;这就是这一挑战背后的想法。 数独规则在维基百科上 规则 压缩输出中仅允许使用可打印的ASCII字符(32-126)(例如,不允许多字节字符)。 您可以假定输入是有效的3x3 Sudoku板(正常规则,无变化)。 我不会施加时间限制,但不会创建暴力破解算法。或者,提交者应该能够在发布之前测试其提交的内容(谢谢Jan Dvorak)。 如果您有任何疑问或疑虑,可以要求澄清或在评论中提出建议。 获奖条件 分数=所有十个测试用例的字符总数 最低分获胜。 测试用例 您可以使用它们来测试程序的运行状况。 9 7 3 5 8 1 4 2 6 5 2 6 4 7 3 1 9 8 1 8 4 2 9 6 7 5 3 2 4 7 8 6 5 ...


25
输出数独板
今天的挑战很简单:无需输入任何内容,即可输出任何有效的数独板。 如果您不熟悉数独,则Wikipedia描述了有效的面板应该是什么样的: 目的是用数字填充9×9网格,以便组成该网格的每列,每一行以及9个3×3子网格(也称为“框”,“块”或“区域”)包含从1到9的所有数字。 现在这就是事情了……有6,670,903,752,021,072,936,960个不同的有效数独板。其中一些可能很难压缩并以较少的字节输出。他们中的其他人可能更容易。挑战的一部分是弄清楚哪些板将是最可压缩的,并且可以以最少的字节输出。 您提交的内容不必每次都输出相同的板。但是,如果可能有多个输出,则必须证明每个可能的输出都是有效的电路板。 您可以使用此脚本(感谢Magic Octopus Urn)或任何这些答案来验证特定网格是否为有效解决方案。它将[1]为有效板输出a ,为无效板输出其他任何内容。 我不太挑剔您输出答案的格式,只要它显然是二维的即可。例如,您可以输出9x9矩阵,9个3x3矩阵,一个字符串,字符串数组,9位整数数组或9个带有分隔符的9位数字。一维输出81位数字是不允许的。如果您想了解特定的输出格式,请随时在评论中问我。 像往常一样,这是代码高尔夫,因此请用您选择的语言写出最短的答案!

10
最短的唯一标识子字符串
给定一个字符串列表,请用其非空子字符串之一替换每个字符串,该子字符串不是列表中任何其他字符串的子字符串,并且应尽可能短。 例 给定list ["hello","hallo","hola"],"hello"应替换为,"e"因为该子字符串未包含在其中"hallo","hola"并且它尽可能短。"hallo"可通过任一取代"ha"或"al"并"hola"通过任何"ho","ol"或"la"。 规则 您可以假定字符串将为非空,并且仅包含大小写相同的字母字符。 您可以假定列表中的每个字符串都存在这样的子字符串,即列表中的任何字符串都不是其他任何字符串的子字符串。 输入和输出可以采用任何合理的格式。 这是code-golf,因此请尝试使用您选择的语言使用尽可能少的字节。 测试用例 在大多数情况下,仅给出一种可能的输出。 ["ppcg"] -> ["p"] (or ["c"] or ["g"]) ["hello","hallo","hola"] -> ["e","ha","ho"] ["abc","bca","bac"] -> ["ab","ca","ba"] ["abc","abd","dbc"] -> ["abc","bd","db"] ["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"] ["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"] 相关:最短识别子字符串 -类似的想法,但涉及更多规则和繁琐的格式。
23 code-golf  string  code-golf  string  code-golf  array-manipulation  code-golf  quine  code-golf  array-manipulation  integer  matrix  classification  code-golf  quine  code-golf  string  matrix  conversion  code-golf  string  number  code-golf  string  code-golf  number  sequence  integer  code-golf  decision-problem  matrix  code-golf  string  code-golf  math  code-golf  math  array-manipulation  combinatorics  code-golf  random  code-golf  code-golf  alphabet  code-golf  python  c  code-golf  base-conversion  code-golf  string  counting  code-challenge  code-generation  fastest-code  code-golf  kolmogorov-complexity  matrix  code-golf  string  code-golf  array-manipulation  decision-problem  random  sudoku  code-golf  chess  code-golf  card-games  encode  code-golf  decision-problem  code-golf  code-golf  math  array-manipulation  matrix 

3
原子比例游戏
您的任务是使机器人扮演得分最高的Atomas。 游戏的运作方式: 游戏板以6个“原子”的环开头,数字范围为1到3。您可以“玩”两个原子之间或另一个原子上的原子,具体取决于原子本身。 您可以有一个普通原子,也可以有一个特殊原子。 正常原子: 您可以在板上任意两个可用原子之间播放普通原子。 您从处于该范围内的原子开始1 to 3,但是该范围每40移动一次就增加1(因此,在40移动之后,范围变为2 to 4)。 如果板上的原子小于该范围,则有1 / no. of atoms of that number on the board可能产生。 假设您有一个2要玩的地方,董事会看起来像这样: 1 1 2 1 让我们将放在的2右侧1。 董事会现在变成: 1 1 2 1 2 注意:木板环绕,所以1最左侧的实际上2是最右侧的旁边。稍后将很重要。 有“特殊”原子的4种类型,它们是: 的+原子: 这个原子在两个原子之间起作用。它有五分之一的机会产卵。 如果原子两侧的+原子相同,则会发生聚变。运作方式如下: The two atoms fuse together to create an atom one higher. ...
21 code-challenge  game  code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

20
创建一个数独解决方案CHECKER
创建Sudoku解决方案CHECKER 这里有Sudoku SOLVERS的面条,但是我希望您创建一个尽可能小巧的解决方案CHECKER(代码高尔夫球)。 一个有效的条目将能够采用9x9数组作为参数(通过引用传递,在命令行上序列化,或者您要采用它),或者接受输入文件,该文件是最后一行网格的九行九位数。请参阅下面的输入示例。 有效输入应以10为底的数字(1-9) 缺失,空,多余,非数字的位置或数字在1-9之外的位置应通过返回非零结果,打印错误或同时拒绝这两种方法而被视为无效输入。 您的程序需要测试每个数字是否在每列,每行一次和每个3x3子网格中出现一次。如果通过,则返回“ 0”,否则,返回非零结果。 避免使用外部资源(网站等)。 如果您的解决方案是独立程序,则退出状态为退出或打印时,“通过”或“失败”分别为“ 0”或非零是可以的。 让最小的答案赢! 输入示例: C数组: int input[9][9]={{1,2,3,4,5,6,7,8,9}, {4,5,6,7,8,9,1,2,3}, {7,8,9,1,2,3,4,5,6}, {2,3,1,5,6,4,8,9,7}, {5,6,4,8,9,7,2,3,1}, {8,9,7,2,3,1,5,6,4}, {3,1,2,6,4,5,9,7,8}, {6,4,5,9,7,8,3,1,2}, {9,7,8,3,1,2,6,4,5} }; 文件: 123456789 456789123 789123456 231564897 564897231 897231564 312645978 645978312 978312645 9个子网格: +---+---+---+ |123|456|789| |456|789|123| |789|123|456| +---+---+---+ |231|564|897| |564|897|231| |897|231|564| +---+---+---+ |312|645|978| |645|978|312| |978|312|645| +---+---+---+

8
最快的数独求解器
找到优胜者 好像我们有赢家!除非有人计划与世界上最快的数独求解器竞争,否则用户53x15会以惊人的快速解算器Tdoku获胜。对于仍在使用其求解器的任何人,我将在有时间的时候仍然对新提交的内容进行基准测试。 挑战 数独游戏的目标是用数字1-9填满棋盘,每个单元格中填入一个数字,这样每一行,每一列和每个盒子只包含一个数字。数独难题的一个非常重要的方面是应该只有一个有效的解决方案。 挑战的目标很简单,您应该尽快解决数独难题。但是,您不仅会解决任何旧的Sudoku问题,而且还将解决存在的最困难的Sudoku难题,即17线索Sudokus。这是一个例子: 规则 语言 您可以自由使用任何语言。如果我没有使用您的语言安装的编译器,则应该能够提供安装在Linux上可以运行脚本的环境所需的一组命令行说明。 标杆机 该基准测试将在Dell XPS 9560、2.8GHz Intel Core i7-7700HQ(3.8GHz增强)4核,8线程,16GB RAM上运行。GTX 1050 4GB。该机器运行Ubuntu 19.04。这是uname输出,任何有兴趣的人。 Linux 5.0.0-25-generic #26-Ubuntu SMP Thu Aug 1 12:04:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 输入项 输入将作为文件给出。可以在这里找到。该文件包含49151个数独难题。文件的第一行是拼图的数量,其后每行长81个字符,代表一个拼图。未知细胞是0,已知细胞是1-9。 您的程序应该能够将文件名作为参数,或者具有来自STDIN的文件输入,以便于手动检查解决方案。请提供有关程序如何输入的说明。 时间/计分 通过评论中的讨论和一些反思,评分标准已更改为您整个程序的时间。即使在官方评分中,您的程序也应生成具有正确哈希值的输出文件。这不会干扰任何现有解决方案,也不会改变目前的排名。对计分系统的任何想法都将受到赞赏。 如果两个解决方案的单次运行得分相似,则我将运行多个基准测试,平均时间为最终得分。如果平均分数相差不到2%,我会认为这是平局。 如果您的解决方案运行时间超过一个小时,则不会获得正式评分。在这种情况下,您有责任报告其运行所在的计算机以及您的分数。对于优化的求解器,这应该不是问题。 编辑:引起我注意的是,尽管困难重重,但摆在眼前的问题并不是最困难的。如果有时间,我将尝试将此处介绍的解决方案与较难的难题组合进行基准测试,并将分数添加到每个提交的内容中。但是,这并非官方评分,只是为了好玩。 验证 您的解决方案将通过MD5 / SHA256校验和进行验证。您的脚本应该能够生成包含所有难题及其解决方案的文件。但是,该文件也将被手动检查,因此请勿尝试获取哈希冲突。您的输出文件应匹配: MD5:41704fd7d8fd0723a45ffbb2dbbfa488 SHA256:0bc8dda364db7b99f389b42383e37b411d9fa022204d124cb3c8959eba252f05 该文件将采用以下格式: <num_puzzles> <unsolved_puzzle#1>,<solved_puzzle#1> ...

13
实施蛮力数独解算器
使用猜测实现最短的数独求解器。由于我收到了一些请求,因此我将其添加为希望实施蛮力数独解决方案的用户的替代问题。 数独拼图: | 1 2 3 | 4 5 6 | 7 8 9 -+----------------------- A| 3 | 1 | B| 6 | | 5 C| 5 | | 9 8 3 -+----------------------- D| 8 | 6 | 3 2 E| | 5 | F| 9 3 | 8 | ...

1
独特的Sudoku Finder
挑战: 给定Sudoku开发板的标准输入,找到添加的最小数量以使开发板唯一。 具体/规则: 输入的格式如下(所有空格均有效) 516|827|943 278|394|615 349|615|872 ---+---+--- 98 |4 2|156 465|189|237 12 |5 6|489 ---+---+--- 892|743|561 634|951|728 751|268|394 输出的格式为每行一个数字,格式如(x,y):z-x和y从左上角的一个开始,然后向下和向右递增;z是要加的数字。 在这种情况下,这些都将是有效的输出:(3,4):3,(3,4):7,(5,4):3,(5,4):7,(3,6):3,(3,6):7,(5,6):3,和(5,6):7,如其中任何一项将允许板来解决。 如果输入了唯一/已解决的Sudoku开发板,则该程序不应打印任何内容,甚至不能换行。 该程序对于任何开发板都应在不到一个小时的时间内运行(我建议使用完全空白的开发板或上面带有一个随机数字的开发板进行测试...)。 得分: 以字符为单位的总(行进)代码大小,包括所有空格 ... 奖金: 1/2代码大小:如果程序只打印一个感叹号,并且在没有输入解决方案的电路板时停止。 1/2代码大小:如果程序打印两个感叹号并在输入内部矛盾的木板时停止(两个数字在同一行/列/正方形上相同)。
19 code-golf  game  sudoku 

13
逆排列索引
介绍 具有n个元素的列表的字典排列可以从0到n编号!-1.例如3!= 6个置换(1,2,3)将是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 将排列应用于列表时,其元素的排列顺序与排列中的数字相同。例如,将置换(2,3,1)应用于l = (a,b,c)yield (l[2],l[3],l[1]) = (b,c,a)。 排列的逆定义为颠倒此操作的排列,即应用排列,然后其逆(反之亦然)不会修改数组。例如,(2,3,1)is 的逆(3,1,2),因为将其应用于(b,c,a)yields (a,b,c)。 同样,应用于排列本身的排列的逆值会产生整数1… n。例如,应用(3,1,2)到(2,3,1)产率(1,2,3)。 现在,我们将函数revind(x)定义为索引为x的排列的逆排列的索引。(如果您有兴趣,这是A056019。) 由于与指数置换我只修改了最后ķ列表中的项目当且仅当 0≤ 我 < ķ!,我们可以添加任意数量的元素到列表的开始,而不会影响revind(我)。因此,列表的长度不影响结果。 挑战 您的任务是实现revind(x)。您将编写一个完整的程序或函数,以单个非负整数x作为输入/参数,并以单个非负整数输出/返回结果。 输入和输出可以是0索引或1索引,但是它们之间必须保持一致。 禁止按索引生成排列,返回排列的索引或找到逆排列的内建函数。(允许生成所有排列或下一个排列的构建体。) 适用标准代码高尔夫球规则。 例子 下面的示例是0索引的。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 ...
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

3
查找字符串中的模式
在这种挑战下,您的任务是找到具有给定结构的子字符串。 输入项 您的输入应为两个非空的字母数字字符串,一个模式 p和一个text t。这个想法是,的每个字符都p代表一个连续的非空子字符串,t该子字符串彼此相邻出现,并p表示它们的串联。相同的字符对应于相同的子字符串。例如,模式aa代表任何非空正方形(通过将较短的字符串与其自身连接而获得的字符串)。因此,模式aa可以匹配子字符串byebye,并且每次a匹配bye。 输出量 如果文本t包含p匹配的子字符串,则您的输出应为该子字符串,并:在与的字符相对应的字符串之间插入冒号p。例如,如果我们有t = byebyenow和p = aa,那么bye:bye它是可接受的输出。匹配子字符串可能有多个选择,但是您只能输出其中之一。 如果t不包含匹配的子字符串,则您的输出将是悲伤的表情:(。 规则和说明 的不同字符p可以对应相同的子字符串,因此p = aba可以匹配字符串AAA。请注意,这些字符必须对应于非空字符串;特别是,如果p长于t,则输出必须为:(。 您可以编写完整的程序或函数,还可以更改两个输入的顺序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 以格式给出pattern text -> output。注意,可能存在其他可接受的输出。 a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> re:re:re xx ABAAAB -> A:A MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA x33x 10100110011001 -> 10:1001:1001:10 ...
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

1
最大化数独国王之旅
背景 数独是一个数字难题,如果将n × nñ×ñ n \times n 网格划分为大小为ññ n 框,则1个1个 1 到ññ n 每个数字应在每一行,每一列和每个框中精确地出现一次。 在国际象棋游戏中,国王可以轮流移动(最多)8个相邻单元中的任何一个。“相邻”在这里是指水平,垂直或对角线相邻。 在国王的巡演是骑士旅行的比喻; 这是一条(可能是开放的)路径,通过国际象棋王的动作,可以在给定的板上精确地访问每个单元一次。 任务 考虑一个6乘6的数独网格: 654 | 321 123 | 654 ----+---- 462 | 135 315 | 246 ----+---- 536 | 412 241 | 563 和国王之旅(从01到36): 01 02 03 | 34 35 36 31 32 33 ...

4
构建最小线索数独解算器
我试图说明这个问题,但提出了更为客观的解决标准。 您的任务是构建一个程序或函数,该程序或函数采用S您选择的格式的已解决的Sudoku网格,并尝试生成具有S唯一解决方案的尽可能少线索的问题网格。(S只要解决方案证明是唯一的,什么方法是唯一的解决方案,包括蛮力都没有关系。) 通过在此文件中找到的一组100,000个解决方案网格中运行该程序,可以对您的程序进行评分(下载7.82 MB),并将解决方案产生的所有100,000个问题网格中的线索总数相加。 上面测试文件中的Sudoku解决方案从左到右,然后从上到下,以81个字符的字符串表示。将测试文件中的输入转换为可用解决方案所需的代码不会计入解决方案的字节数。 就像在我的Flood Paint挑战中一样,您的程序实际上必须为所有100,000个难题产生有效的输出,才能将其视为有效的解决方案。在所有100,000个测试案例中,输出总线索最少的程序是赢家,而较短的代码打破了平局。 当前记分牌: 2,361,024 -Nutki,C 2,580,210 -es1024,PHP 6,000,000 -CarpetPython,Python 2 720万-Joe Z.,Python

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.