Questions tagged «string»

通过使用和操纵琴弦来解决特定问题的竞赛。

9
爱情测试员代码高尔夫
创建一个程序,该程序计算两个名称公用的字母总数,并查找其长度的乘积,以充当“爱情测试仪”。 条件:您可能不会得到1:1答案(3之3,等等)输出。 输入项 来自STDIN的两个名称或最接近的替代名称。 输出量 计算x为两个名称之间共有的字母总数,忽略大小写。计算y为名称长度的乘积。然后,输出到STDOUT或最接近的替代品 Name1 and Name2 have x out of y chances of love. 例子 输入: Wesley Polly 输出: Wesley and Polly have 2 out of 30 chances of love. Wesley和Polly有两个共同的字母,y和l,其长度的乘积为6 * 5 = 30。 输入: Bill Jill 输出: Bill and Jill have 3 out of 16 …

7
找到最长的音乐子串
一个音乐弦线是可以在钢琴键盘上播放任何字符串。 对于那些没有被迫在小时候学习钢琴的人来说,这就是键盘的样子。 所以该字符串feed a dead cabbage是一个音乐字符串,因为每个单个字母都对应于其中一个。 您的挑战是编写一个程序,该程序将一个字符串作为来自STDIN的输入,并找到最长的音乐子字符串。然后,您的程序必须打印子字符串及其长度。这是一些示例输入/输出。 输入:“喂我!我饿了!” 输出:提要4 输入:不不不,没有musistrin! 输出:0 输入: "A **bad** !!!fAd82342" 输出:abadfad 7 输入:“打高尔夫球好!” 输出:dg 2 规则 您的输出可以是大写或小写字母,但不能有标点或空格。 输入字符串中会有大写和标点符号,但这并不影响子字符串是否被视为“音乐”。 音乐子字符串和数字之间必须有一个空格。

3
IMP:隐式乘法解析器
杰克喜欢C编程语言,但不喜欢写表达式,例如V=a*b*h; 将值相乘。 他想改写V=abh;,为什么编译器抱怨abh自int a, b, h;定义后就没有定义符号,所以我们可以得出乘法呢? 如果已知当前作用域中定义的变量集,请帮助他实现一个解析器,该解析器可解密单个乘法项。 为简单起见,2*a*b不考虑乘以数字(如中的),仅显示变量。 输入是一个乘法项T,满足正则表达式: [a-zA-Z_][a-zA-Z_0-9]* 和可变组Z。 变量集Z上的项T的解析P是满足以下条件的字符串: *从P中删除所有出现的项后,我们收到T, 要么是Z中的变量名,要么由Z中的适当变量名组成,并用单个*字符分隔。 解决方案应打印术语的所有分析。 样品: Vars a, c, ab, bc Term abc Solution ab*c, a*bc Vars ab, bc Term abc Solution - Vars - Term xyz Solution - Vars xyz Term xyz Solution xyz Vars width, height Term widthheight …

1
最短子串索引
我是一个懒惰但有效率的人,你们中的许多人也可能是如此。因此,每当我在做某事时,我都想用最少的精力去做。这就是为什么我要你为我解决这个问题。 我在这里有各种各样的文件。本文档的每一行上都有一个单词或简短的短语。该文档未排序,但是我知道所有内容都可以。我可以使用一些帮助更快地找到事物,为此,我需要第二个清单。这就是您的来历。对于本文档中的每一行文本,我都需要一些标识符。我可以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 …

3
受限内存优化
两个字符串之间的编辑(或Levenshtein)距离是将一个字符串转换为另一个字符串所需的最小单字符插入,删除和替换次数。如果两个字符串的长度均为n,则众所周知可以通过动态编程在O(n ^ 2)时间内完成。以下Python代码针对两个字符串s1和进行此计算s2。 def edit_distance(s1, s2): l1 = len(s1) l2 = len(s2) matrix = [range(l1 + 1)] * (l2 + 1) for zz in range(l2 + 1): matrix[zz] = range(zz,zz + l1 + 1) for zz in range(0,l2): for sz in range(0,l1): if s1[sz] == s2[zz]: matrix[zz+1][sz+1] = min(matrix[zz+1][sz] + …

15
不转换的字符串总和
您必须接受2个字符串输入并输出这两个字符串的总和,而无需将它们转换为int或使用任何数字数据类型。 例如 string one = "123"; string two = "456"; string sum = "579"; 假设字符串不能超过10位数字。 这是代码高尔夫,最短的答案是角色获胜。对C#中答案的编辑会使我微笑:)。 编辑:转换为int可以定义为这种性质的任何东西 Int.TryParse,(int),Convert.ToInt等

4
森林小径
您之后灾难性乘坐独木舟,你结束了在湍急的河流最终掉下瀑布。您的独木舟爆炸了,但您成功度过了爆炸。但是,您的河流之旅完全偏离了地图-您现在发现自己迷失在森林之中。幸运的是,您仍然具有编程技能,因此决定将程序雕刻到树的一边,以帮助您找到穿过森林的道路。但是,树上没有太多的表面积,因此您必须使程序尽可能短。 森林可以用字符n的n(n > 5)平方来描述,该字符仅由小写字母组成a-z。一个示例森林: anehcienwlndm baneiryeivown bnabncmxlriru anhahirrnrauc riwuafuvocvnc riwnbaueibnxz hyirorairener ruwiiwuauawoe qnnvcizdaiehr iefyioeorauvi quoeuroenraib cuivoaisdfuae efoiebnxmcsua 您可能已经注意到,在这个森林中,a从左上角到右下角有一条斜线贯穿其中。这是穿过森林的“路径”,如果您跟随它,它将指引您到达某个地方。您的任务是编写一个程序,它将找到单数路径。我现在将更具体地描述在此挑战中什么代表“道路”。 在此挑战中,“路径”被定义为类似于可能用Bresenham算法生成的线,但具有以下附加要求: 该行必须至少6个字符长 行中的每个共线(完全相邻)字符组必须具有相同的长度。 它将从森林的一侧开始,到另一侧结束(详细说明请参见我的评论) 为了更清楚地解释第二个要求,请考虑以下内容: aaa aaa aaa aaa aaa 该行由字符的共线“段”组成,每个字符正好是三个字符长。它有资格作为一条路径。现在考虑这一行: a aa a aa a aa 该行由共线的“段”组成,它们并非完全相同长度的字符(其中一些长度为1个字符,而某些长度为2个)。因此,这条路径不符合条件。 给定森林图,您的程序将识别路径中使用的字符。输入是方便的任何内容(例如,命令行参数,STDIN prompt()等)。不能将其预先初始化为变量。输入的第一部分是一个单个整数,n代表森林的大小(森林总是一个正方形)。在那之后是一个空格,然后将整个森林作为单个字符串。例如,示例林将作为输入呈现,如下所示: 13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua 输出为: a 因为路径是使用字母形成的a。森林中只有一条路。这是代码高尔夫,因此获胜的字符数最少。如有疑问,请在评论中提问。

5
printf样式的字符串格式
挑战 编写一个实现C printf样式字符串格式的函数。 规则 你必须至少实现%%,%c,%s,%d和%f。 您不得使用内置的字符串格式化方法。 您不得运行外部程序或从程序连接到Internet。 由您决定如何处理无效输入,但是您的程序不得异常终止。 如果可能,您应该编写一个可变参数函数。 本文档中的关键字“必须”,“不得”,“必须”,“应”,“应禁止”,“应”,“不应”,“推荐”,“可以”和“可选”是按照RFC 2119中的描述进行解释。

3
解析Python字符串文字
挑战在于像Python一样解析字符串并打印字符串的内容。 输入(命令行参数或标准输入):字符串文字(例如"hello")(或多个文字,请参见下面的字符串文字串联) 输出(stdout):字符串的内容(例如hello) 解析字符串的规则: 字符串文字包含在匹配的单引号('a'),双引号("a"),三重单引号('''a''')或三重双引号("""a""")的匹配对中。打开字符串的引号类型的第一次再次出现将结束字符串。 反斜杠转义: \'字符串中的成为',\"成为"和\\成为\。您不需要实现任何其他反斜杠转义。不在转义序列中的反斜杠保留为反斜杠。 字符串文字串联:串联相邻字符串文字的内容。例如,"hello" 'world'变为helloworld。 输入中可能包含不属于任何文字的空格。 无论文字内外,您都不需要支持任何其他类型的空格。 附加规则: eval,exec并且不允许使用类似的内容来解析其文字或部分内容。 您可以假设输入有效。 您可以假设最大输入长度为1023个字符。 例子: "hello" ' world' -> hello world """\"""'\\\A""" -> """'\\A ( '''"""'''"""'''""" ) (不带括号,但带空格)-> """''' 最短的代码胜出。

5
任意长度三进制Squarefree词
如果字符串连续两次不包含子字符串,则该字符串是无平方的。 可以使用3个字母的字母来包含任意长的squarefree单词。 写接受来自标准输入的正整数n和打印长度的任何无平方字N,使用字符的程序A,B和C。 最短的代码胜出。

5
简单标签解析器
这是宽容HTML解析器的模型。在此代码中,代替解析HTML和提取属性,标记解析器将很简单。 编写一个解析标记结构并返回其括号形式的函数。开头标签由一个小写字母组成,结束标签由一个大写字母组成。例如,aAbaAB解析为(a)(b(a))或以HTML形式解析<a></a><b><a></a></b>。当然,标签可以并列和嵌套。 必须处理“过早”的关闭标签。例如,在中abcA,A闭合最外面a,因此将其解析为(a(b(c)))。 多余的结束标记将被忽略:aAB解析为(a)。 不处理重叠的标签。例如,根据先前的额外结束标记(-> ()+ (extra))abAB解析为(a(b)),而不是。(a(b))(b)abABabA(a(b))B 假设输入中没有空格和其他非法字符。 您无权使用任何库。 这是参考实现和测试用例列表: #!/usr/bin/python def pars(inpu): outp = "" stac = [] i = 0 for x in inpu: lowr = x.lower() if x == lowr: stac.append(x) outp += "(" + x i = i + 1 else: while len(stac) > 1 and …
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.