最短子串索引


9

我是一个懒惰但有效率的人,你们中的许多人也可能是如此。因此,每当我在做某事时,我都想用最少的精力去做。这就是为什么我要你为我解决这个问题。

我在这里有各种各样的文件。本文档的每一行上都有一个单词或简短的短语。该文档未排序,但是我知道所有内容都可以。我可以使用一些帮助更快地找到事物,为此,我需要第二个清单。这就是您的来历。对于本文档中的每一行文本,我都需要一些标识符。我可以CTRL+的东西F,但是它不能超过获得一个结果绝对必要的时间。

输入示例:

(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)

输出示例:

ap,3,7,q,f,w,ba,bi

我将在这里重复一遍,以确保我们在同一页面上:

  • 输入是一个无格式的文本文件,其中包含项目列表,并用换行符分隔。我在这里以.txt格式保存,称为“ STUFF.TXT”
  • 文档的第一行和最后一行为空。每隔一行包含一个长度> 0的条目。
  • 该文件仅包含字母数字字符(全部为小写),空格和换行符。
  • 所需的输出是标识符列表,其顺序与我的原始列表相同。
  • 我不希望每个列表项都有多个搜索词。如果有多个答案,请选择一个,我不在乎。在上面的示例中,我为选择了“ ap” an apple,但您可能选择了“ n”,“ a”,“ pp”,“ pl”或“ le”。不是'an',因为它在中banana
  • 我可以向您保证,该文件永远不会为空,并且永远不会包含重复项。
  • 如有必要,您可以在行终止符上进行匹配。但这是万不得已的方法,只有在没有其他方法可以区分列表项(例如“苹果”和“苹果”)时才使用。

不允许出现标准漏洞。同样,这是代码高尔夫球,因此最短的代码获胜。

再举一个例子:

(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)

及其输出:

ban,ny,g,be,ye,ke,aki,ar

1
@CarpetPython它必须是最短的。输入和输出中可以包含空格,并将其添加到问题中。
freekvd

如果一个字符串是另一个字符串的后缀,我们还可以在搜索词的开头使用换行符吗?
Martin Ender

@MartinBüttner是的。这就是为什么文档以空白行开头和结尾的原因,因此在每个列表项的开头和结尾都有换行符。
freekvd 2015年

4
我很确定这个问题是NP完全的。我认为我可以将确切的掩护问题简化为这一问题。
FUZxxl 2015年

4
更有什者,您不会看到任何有创意的解决方案,因为没有比暴力破解更好的解决方案了。
FUZxxl 2015年

Answers:


3

Pyth,39个字节

Lsm.:bdtUbKfT.zj\,mhf!}Yjb-Kk+yky++bkbK

蛮力地增加每个字符串的所有子集的长度,并检查该字符串是否出现在其他字符串中。如果不起作用,除了的所有子集外,它将执行相同的操作\nstring\n


我对此进行测试时遇到错误的类型组合错误。pyth.herokuapp.com/...
freekvd

@freekvd Heroku必须具有过时的Pyth版本,因为.:使用第一种类型的字符串和第二种类型的int 调用不是错误。尝试从仓库中
orlp
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.