Questions tagged «puzzle-solver»

如果您的挑战是编写解决数独难题的程序,例如数独,魔方,填字游戏等,请使用此标记。

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 

10
写一个单词方程解算器
这个问题已经在这里有了答案: 利用“自由空白” (10个答案) 2个月前关闭。 介绍 考虑以下示例: CODE + GOLF —————— GREAT 这是一个等式,其中每个字母代表一个十进制数字,而单词代表自然数(相似的字母代表相似的数字,不同的字母代表不同的数字)。任务是将每个字母与其数字值进行匹配,以使方程式正确。上式的一种解决方案是: 9265 + 1278 —————— 10543 你的任务 您的任务是编写一个程序或函数来解决上述等式。 输入值 输入是以下格式的字符串: [A-Z]+\+[A-Z]+=[A-Z]+ 例: CODE+GOLF=GREAT AA+BB=CC 省略空格,仅使用大写字母A和Z之间的字母(不使用特殊字母或小写字母)。 可以从标准输入,文件或功能参数中读取此字符串。 输出量 您有以下两个输出格式选项: 原始方程式已替换数字 字母列表及其值 如果有多个解决方案,则应返回其中的任何一个(但只有一个)。如果没有解决方案,则程序应返回一个空字符串或null。输出可以作为字符串返回,可以写入标准输出或文件。 例: 9265+1278=10543 A=1 B=2 C=3 (您可以使用任何定界符) 规则 为了简化起见,数字以0开头是可接受的,但是您可以将数字以0开头作为无效解决方案,这取决于您 相似的字母代表相似的数字,不同的字母代表不同的数字 您可以使用任何语言和所选语言的标准库(无外部库) 您无法连接到Internet上的任何资源(为什么仍要这么做?) 这是一项代码高尔夫任务,最短的代码获胜。连续的空白字符算作单个字符。(因此,用空格编写的任何程序都会自动获胜) 我有一个使用179个字符的解决方案。如果不清楚,请在评论中问我。

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
给定长度列表和代表这些长度的字符串,它们匹配吗?
给定一个表示长度列表的模式,以及一个表示这些长度的字符串,它们匹配吗? 对于感兴趣的人来说,这等同于验证Nonogram的行或列是否正确。但是,我省略了与非图相关的所有语言,以使那些不熟悉这些谜题的人感到困惑。 输入值 两行数据,由换行符分隔。 第一行将是一个由空格分隔的整数列表,例如: 3 6 1 4 6 该行描述的填充模式的大小等于整数列表,并由第二行必须匹配的,未知长度,正长度的空白空间分隔。匹配的字符串的开头和结尾处也可能有空格。 第二行将是可能与第一行中的模式不匹配的行。它完全由#,x和_。这条线被保证为至少只要在第一行中的整数的总和,再加上不同整数的数目减1,并且可以更长。因此,在这种情况下,第二行保证至少为(3+6+1+4+6) + (5) - 1或24个字符长。这是与第一行中的模式匹配的示例24个字符行: ###_######_#_####_###### 符号的含义: # 这代表一个填充的盒子 x 这表示一个标记为“保证为空”的框 _ 这表示一个未知/未标记的框。 目标 这个想法是: 验证第二行可能是符合第一行模式的有效行。 ERROR如果未知空格不能用#或x匹配第一个,则必须打印明确的错误消息(选择方式由您决定;下面的示例编写,但不必是这5个字符)线。 打印已完全放置在行中,以空格分隔的整数的零索引索引。如果有歧义,请勿打印索引。 例子: Input: | Output: | Reason: -------------------------------------------------------------------------- 3 6 1 4 6 | 0 1 2 3 4 | This is …

1
我们喜欢我们奇怪的难题,我们英国人
在英国的几家报纸上有一种被称为Hidato的游戏。它与Sudoku有点类似,尽管不是在行和块中放置1-9,而是放置数字以使它们从头到尾依次连接,01直到它们都水平,对角线或垂直。 输入将包含由分隔的多行\n,其中包含以空格分隔的块,您可以假定它们是两个字符宽。每个块将是一个数字,一个要填充的空白(由表示--)或一面不能在(XX)中具有数字的墙。 您的输出应与提供的一个相匹配,尽管带有带有数字的空块。请注意,可能没有唯一的解决方案,甚至不存在解决方案 -有些解决方案可能由于其含糊不清而产生多个结果,就像Sudoku一样,而有些解决方案实际上是无法解决的,在这种情况下,您应该给出错误的输出,但是您可以假设输入的格式如下。 使用标准标题Language: XX bytes。打高尔夫球快乐! 例子 输入01 XX 03,01 -- 04,01 --,等应该都是一些回报falsey。 输入: 01 -- -- -- XX 05 输出: 01 03 04 02 XX 05 输入: -- 33 35 -- -- XX XX XX -- -- 24 22 -- XX XX XX -- -- -- 21 -- …

3
建立有毒的葡萄酒测试计划程序
最近在Puzzling.SE上,我遇到一个问题,即当毒药仅在两种成分都被喝下时才激活时,确定更大数量的哪两个瓶子是有毒的。最终,它变得相当折磨,大多数人使用完全不同的算法设法将其减少到18或19个囚犯。 原始问题说明如下: 您是喜欢举行派对的中世纪王国的统治者。这位上次试图毒害您的葡萄酒瓶的朝臣大怒,得知您设法从十名囚犯中识别出他在1,000瓶中毒了。 这次他有点狡猾。他研发了一种复合毒药 P:一种二元液体,只有两种单独无害的成分混合时才致命。这类似于环氧树脂的工作原理。他又给您寄了1,000瓶葡萄酒。一瓶有成分C_a,另一瓶有成分C_b。(P = C_a + C_b) 喝完这两种成分的任何人都将在喝完最后一种成分的夜晚的午夜中途死亡,无论他们在白天何时吸收液体。每种有毒成分都保留在体内,直到第二种成分激活为止,因此,如果一天喝一种成分,第二天喝另一种成分,则第二天结束时您将在午夜死亡。 您下一场聚会还有两天。您需要使用最少多少名囚犯进行测试才能识别出哪两个瓶子受污染,以及在该数目的囚犯身上需要遵循什么算法? 额外的 好处是,假设您有20名囚犯的固定限制,那么理论上可以测试的最大瓶子数量是多少,从而得出关于哪些瓶子受到影响的准确结论? 您的任务是建立一个程序来解决奖金问题。对于n囚犯,您的程序将制定一个测试计划,以便能够m在m尽可能大的瓶子中检测出两个有毒的瓶子。 您的程序最初将N囚犯人数作为输入。然后将输出: M,您将尝试测试的瓶子数量。这些瓶子将被标记为从1到M。 N 行,其中包含每个囚犯将喝的瓶子的标签。 然后,您的程序将输入第一天死亡的囚犯作为输入,第一行的囚犯为1,下一行的囚犯为2,等等。然后,它将输出: N更多的行,其中包含每个囚犯将喝的瓶子的标签。死囚将有空白行。 然后,您的程序将输入第二天哪些囚犯死亡的信息,并输出两个数字A和B,表示您的程序认为哪个瓶子包含毒药。 两个囚犯和四瓶一例输入可能会去这样,如果瓶子1和3中毒: > 2 // INPUT: 2 prisoners 4 // OUTPUT: 4 bottles 1 2 3 // OUTPUT: prisoner 1 will drink 1, 2, 3 1 4 // OUTPUT: prisoner …

2
拒绝的好时机
设置 假设你给ñ保险丝,1≤ ñ ≤5,每一个都是一米长,其中每个保险丝具有的相关燃烧率ñ每米d小时。 保险丝可以在一端或两端点亮,然后在一端或两端熄灭,重新点亮,重新熄灭等,直到保险丝完全耗尽为止。您可以立即点亮和熄灭保险丝,并且可以观察到保险丝完全耗尽(烧毁)的确切时间。 保险丝不能切断,也不能在除其末端以外的任何地方点亮。 通过测量任意两个保险丝点亮/消耗事件之间的时间,这样的设置允许无限精确的计时系统。例如,给定两个保险丝,其每小时的燃烧速度为1米,则您可以精确地测量45分钟(3/4小时) 同时:在两端点亮第一个保险丝,在一端点亮第二个保险丝,并标记时间间隔的开始 消耗第一根保险丝的瞬间(30分钟后)点亮第二根保险丝的第二端 在消耗第二根保险丝的瞬间(15分钟后)标记时间间隔的结束 挑战 给定小时数t的分数,以及代表n个保险丝的确切烧毁率的n 个分数的集合,编写一个程序或函数,如果可以通过系统性地熔断保险丝来精确地测量t小时,则输出或返回真实值。否则为假值。 程序的输入可以是以下任意一项: 形式的命令行参数 TN/TD N1/D1 N2/D2 N3/D3 ... TN/TD N1/D1 N2/D2 N3/D3 ...读取stdin或等效形式的字符串 TN/TD N1/D1 N2/D2 N3/D3 ...作为函数参数传递的形式的字符串 ["TN/TD", "N1/D1", "N2/D2", "N3/D3", ...]作为函数参数传递的字符串数组 在所有情况下,t = TN/ TD,其中TN,TD∈[1,10000]。 同样地,在所有的情况下:燃烧速率为熔丝我 = Ñ 我 / d 我 = N<i>/ D<i>,其中N<i>,D<i>∈[1,10]∀ 我。 …


1
建立一个MU解谜器
该MU的难题是,你看看你是否可以打开一个难题MI成MU给出以下操作: 如果您的字符串以结尾I,您可以U在末尾添加a 。(例如MI -> MIU) 如果您的字符串以开头M,则可以在M该字符串之后追加零件的副本。 (例如MII -> MIIII) 如果您的字符串包含三个连续I的,则可以将它们更改为U。 (例如MIII -> MU) 如果您的字符串包含两个连续U的,则可以将其删除。(例如MUUU -> MU)。 您的任务是构建一个程序,该程序确定此命令是否适用于任何开始和结束字符串。 您的程序将使用两个字符串作为输入。每个字符串将包含以下内容: 一M。 了一个字符串29 I年代和U的。 true如果第二个字符串可从第一个字符串到达​​,则您的程序将返回(或您的编程语言的表示形式/ YPLRT),false否则返回(或YPLRT)。 输入和输出示例: MI MII true MI MU false MIIIIU MI true 任何语言中最短的代码均可胜出。

3
高尔夫代码:通过解析英语解决“骑士与刀子”的逻辑问题
背景 有两个人,比尔和约翰。其中一个是骑士,总是说出真相,另一个是小刀,总是说出谎言。您不知道谁是骑士,谁是骑士。然后每个人都说几句关于谁是小刀和谁是骑士。使用此信息,您必须得出结论,谁是骑士,谁是骑士。 的骑士和无赖逻辑问题是基于Booleen代数。一个人说的话构成了Booleen可满足性问题。骑士的陈述必须始终为false,其他骑士的陈述必须始终为true。 约翰说:“我既是个刀匠,比尔也是个刀匠”。如果约翰是骑士,那么这个说法将是错误的,因此他不能成为骑士。如果他是骑士,而比尔是骑士,那么即使第一部分是正确的,这个陈述仍然是错误的。所以,约翰是个k夫。 挑战 您面临的挑战是编写尽可能最短的程序,该程序将列出每个人的声明列表,并弄清楚谁是骑士,谁是骑士。有很多细节要介绍,因此在三个部分中描述了此问题。 输入值 输入将是两行,后跟一个换行符。每行将给出一个字符的名称,后跟一个冒号,然后是该人说的几句话。如果一个人是骑士,那么他所有的句子都是正确的,而所有那位知识分子的句子都是错误的。句子的第一个字母将始终大写,并且每个句子将以句号结尾。这是一个例子: Joe: Both I am a knight and neither Steve is a knave nor I am a knave. Steve: Joe is a knave. Either Joe is a knight or I am a knight. 解析中 每个句子至少包含一个从句。每个子句包含以下几项之一(希望您能理解我的表示法): both [clause] and [clause] either [clause] or [clause] …

30
创建一个鹦鹉程序
给定输入,输出该输入,然后不断地换行。 输入将是仅由可打印的ASCII字符(0x20-0x7E)和换行符(0x0A)组成的字符串。 如果输入长度为0,则不断输出换行符。 这是代码高尔夫球,因此每种语言中最少的字节会获胜!
15 code-golf  string  sequence  combinatorics  fastest-code  number  code-challenge  restricted-source  rosetta-stone  code-golf  arithmetic  decision-problem  integer  factorial  code-golf  arithmetic  decision-problem  integer  bitwise  code-golf  kolmogorov-complexity  code-golf  tips  vim  code-golf  quine  code-generation  code-golf  string  restricted-source  code-golf  string  random  unicode  code-golf  audio  code-golf  ascii-art  code-golf  decision-problem  code-golf  puzzle-solver  code-golf  restricted-source  code-golf  kolmogorov-complexity  permutations  hexagonal-grid  code-golf  string  math  combinatorics  fastest-code  code-golf  restricted-source  code-golf  string  code-golf  arithmetic  code-golf  math  number  code-golf  string  decision-problem  balanced-string  code-golf  binary  code-golf  string  number  code-challenge  restricted-source  code-golf  ascii-art  printable-ascii  interactive  code-golf  string  ascii-art  code-challenge  restricted-source  source-layout  code-golf  arithmetic  tips  functional-programming  golfing-language  code-golf  binary  encryption 


2
我如何在生活中获得更多的Klotski?
我真的很喜欢滑动拼图,但是最近,我没有时间去做。因此,我需要一个程序来解决滑动砖块难题,特别是Klotski难题。 您的输入将采用以下格式: ####### #001gg# ##.222# .###### 其中#代表墙壁,.代表开放区域,g代表目标,相邻数字代表不同的方块。您可以假设: 不会超过10个街区 不会有两个号码相同的方块 所有街区将被围墙包围 网格是矩形 该0块是大到足以覆盖所有的目标方格。 有一个有效的解决方案 您需要返回一系列移动步骤,以放置0方块,使其覆盖所有目标方格。方块不能穿过墙壁或其他方块。对于上述难题,适当的顺序是 2L,1R,1R,1D,0R,0R,0R while代表将2方块向左移动1方块,1方块向右移动2方块(在球门顶部),然后向下移动1方块,再0向右移动3方块。 实际上,有几个序列可以解决上述问题,并且产生其中的任何一个都是可以接受的。您的解决方案应该是最佳的,这意味着它应该产生一个序列,以尽可能少的步骤解决难题。 序列应如上打印,但可以用逗号,换行符或空格分隔。我不在乎是否有逗号或空格。您应该在合理的时间内产生输出(在以下难题中最长为120秒)。 难题1: ..####.. ..#00#.. ###00### #......# #.1122.# ##3124## .#3344#. .##55##. ..#gg#.. ..####.. 难题2: ###### #1002# #1002# #3445# #3675# #8gg9# ###### 难题3: .####. ##1g## #22g3# #4255# #4.56# #.006# #7008# ###### 难题4: .####. ##00## #.00g# …

5
熄灭7段版本
给定一个7段显示,其中某些段处于打开状态而某些段处于关闭状态,请找到一个数字序列(0-9),以便在切换每个数字的相应段之后,所有段均被关闭。 例 _ _ [3] => | [1] => [OFF] _ | 数字及其对应的段: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| 规则 Codegolf⊨最短进入获胜。 输入值 已打开的段的非空列表,给出为 一连串数字。段从上到下,从左到右编号;从0或1开始。数字不必按顺序排列。 一个7位数字。未指定MSB / LSB(因此可以选择)。 …

1
旧金山的出租车
您是旧金山的出租车司机。正如出租车司机的典型做法一样,您正在浏览一个网格,在该网格中,您只能移动的有效方向是左,右,上和下。但是,圣弗朗西斯科(San Fransisco)非常丘陵,因此两个相邻交叉路口之间的距离不一定相同。更具体地,在海拔处的交叉点与在海拔处a的相邻交叉点之间的距离b将是1 + |a - b|。您的目标是找到从地图左上角的起点到右下角的目的地的所有最短路径。 输入值 整数高度的二维网格,采用最方便的格式(二维数组,具有宽度和/或高度的一维数组等)。 输出量 方向行进的顺序以给定的距离,高度的两个相邻交叉点之间的距离留在最短的距离可能顶部的输入的右下角到达a和b由下式给定1 + |a - b|。如果有多个解决方案,请输出所有解决方案。 虽然我使用U,D,L,和R为上,下,左,右在你的程序可以使用任何四个不同的字符串来表示的方向上,只要它是与他们一致,并在所有输入下面的例子。 例子 Input: 0 3 0 0 0 0 2 0 2 0 0 0 0 3 0 Output: D D R R U U R R D D Input: 3 Output: <empty> Input: 11 11 …

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.