Questions tagged «string»

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

12
KITT汽车ASCII艺术
80年代的电视连续剧《骑士骑士》采用了一种名为KITT的智能自我意识汽车。车上的一个独特的方面是安装在前部,允许KITT“看见”(这看上去扫描条形迹可疑熟悉的另一扇,早期的电视连续剧)。 如图所示,扫描仪有八盏灯: 灯光“移动”,如该动画图像所示。 正如您现在所猜到的,您的任务是使用ASCII艺术作品中的移动灯重新创建扫描仪栏。 挑战 给定一个整数t,输出该时刻扫描器栏的状态,定义如下: 扫描仪由八个灯组成。 在任何时刻,其中一个灯都处于活动状态,并显示为#。那名有时活性灯t-1和t-2现在变暗,并且被示出为+; 除非它们与当前活动的一致。其余指示灯熄灭,显示为-。 活动指示灯从左到右移动,然后从右到左移动。 每个的确切输出在t下面详细说明。 0 --> #++----- % The leftmost light is active, and it just came from the right. % The two neighbouring lights are dimmed 1 --> +#------ % The active light has bounced to the right, and it is covering …

25
爆炸后缀
给定一个ASCII字符串,输出它的爆炸后缀。例如,如果字符串是abcde,则有5个后缀,按从长到短的顺序排列: abcde bcde cde de e 然后,每个后缀都会爆炸,这意味着每个字符将被复制与其后缀中的一个索引位置一样多的次数。例如,展开后缀abcde, abcde 12345 abbcccddddeeeee bcde 1234 bccdddeeee cde 123 cddeee de 12 dee e 1 e 总之,的爆炸后缀abcde是 abbcccddddeeeee bccdddeeee cddeee dee e 规则 这是代码高尔夫球,因此最短的代码获胜。 输入将包含可打印的ASCII字符。(这不包括换行符,但包括空格。) 输出将每个字符串放在单独的行中。 每行都允许使用尾随空格,并且末尾可能会有多余的换行符。 测试用例 '' 'a' a 'bc' bcc c 'xyz' xyyzzz yzz z 'code-golf' coodddeeee-----ggggggooooooollllllllfffffffff oddeee----gggggoooooolllllllffffffff dee---ggggooooollllllfffffff e--gggoooolllllffffff -ggooollllfffff …
20 code-golf  string 

4
从子字符串中识别字符串
介绍 之前,我曾提出过两个 挑战,即如何使用尽可能少的查询类型的操作来重建对象。这将是第三。 任务 您的输入应为S字母abc及其长度上的非空字符串,而您的输出应为S。没有限制,这当然是一件微不足道的任务。问题是您不允许S直接访问。您唯一可以做的S就是调用函数num_occur(T, S),其中T还有其他一些字符串,并num_occur计算Tin 中出现的次数S。重叠事件都算作不同,所以num_occur(T, S)真正返回的指标的数量i,使得 S[i, i+1, …, i+length(T)-1] == T 例如,num_occur("aba", "cababaababb")将返回3。注意也num_occur(S, S)将返回1。的结果num_occur("", S)是不确定的,因此您不应在空字符串上调用该函数。 简而言之,您应该编写一个函数或程序,该函数或程序以S和length(S)作为输入,num_occur对一些较短的字符串进行调用,并S进行多次调用,然后S从该信息中重构并返回它。 规则和计分 您的目标是编写一个尽可能少调用的程序num_occur。在此存储库中,您将找到一个名为的文件abc_strings.txt。该文件包含100个字符串,每个字符串在其各自的行上,长度在50到99之间。您的得分是这些输入上被调用num_occur的总次数,得分越低越好。您的解决方案最好在运行时跟踪该数字,并在完成后打印出来。通过从中选择均匀随机的字母来生成字符串abc。您可以针对这种生成字符串的方法进行优化,但不能对字符串本身进行优化。 没有时间限制,除了您应该在提交测试案例之前运行您的解决方案。您的解决方案应该适用于任何有效的输入S,而不仅仅是测试用例。 num_occur如果您不使用别人的,也鼓励您也分享自己的实现。为了使事情顺利进行,这是Python中的实现: def num_occur(needle, haystack): num = 0 for i in range(len(haystack) - len(needle) + 1): if haystack[i : i + len(needle)] == needle: num += 1 return num

24
选择给定字符串中给定索引周围的单词
在Windows中,当您双击文本时,将选中文本中光标周围的词。 (此功能具有更复杂的属性,但对于此挑战无需实施。) 例如,让|您成为的光标abc de|f ghi。 然后,当您双击时,def将选择子字符串。 输入输出 您将得到两个输入:一个字符串和一个整数。 您的任务是返回由整数指定的索引周围的字符串的单词子字符串。 您的光标可以在指定索引的字符串中的字符之前或之后。 如果您之前使用,请在答案中指定。 规格(规格) 索引保证在单词内,因此不会出现诸如abc |def ghi或的边缘情况abc def| ghi。 该字符串将仅包含可打印的ASCII字符(从U + 0020到U + 007E)。 单词“ word”由regex定义(?<!\w)\w+(?!\w),其中\w由[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]或“ ASCII中的字母数字字符(包括下划线)”定义。 索引可以是1索引或 0索引。 如果您使用0索引,请在答案中指定。 测试用例 测试用例是1索引的,并且光标位于指定的索引之后。 光标位置仅用于演示目的,不需要输出。 string index output cursor position abc def 2 abc ab|c def abc def 5 def abc d|ef abc abc …
20 code-golf  string 

19
在双射基数62中计数
任务是生成从“ a”到“ 999”的所有字符串,包括大写字符,如下所示: 'a', 'b', 'c' ... 'y', 'z', 'A', 'B', 'C' ... 'Y', 'Z', '0', '1', 2' ... '8', '9', 'aa', 'ab', 'ac' ... 'az', 'aA', 'aB' ... 'aZ', 'a0' ... 'a9', 'ba' 等等(填补空白),可以选择从空字符串开始。 输入: 程序必须打印到的连续字符数。 输出: 包含每个字符串或每行一个字符串的数组 说明: 顺序无关紧要,可以根据需要先打印大写或小写字母。 输出可以返回任何可枚举的类型,不必专门是数组,尽管我怀疑打印所有组合不是最简单的方法。 的输入3将打印所有从字符串'a'(或'')至'999'的输入5最多'99999'等。

1
小狗命令
该puppy实用程序将文件名作为输入,并且完全按照您希望小狗执行的操作:将它切碎! 如何切碎 用牙齿撕开页面将输入文件换行。 用爪子撕开每一页对于每一行(不包括换行符),选择一个随机整数,n例如2 <= n <= # of characters in the line。将行拆分n为随机长度的非空非重叠子字符串。 将碎片分散在整个地板上在当前目录中,将每行的每个子字符串输出到唯一的随机文件名([a-zA-Z0-9]仅,任何一致的扩展名,包括none和length 1 <= n <= 12)。只要不干扰提交的运行,就可以覆盖当前目录中的现有文件(包括输入文件,如果它位于当前目录中)。 澄清说明 永远不会有可能耗尽所有可能的文件名的输入。 文件将仅包含可打印的ASCII(序号32-127)和换行符,并将使用UNIX / Linux样式的行尾(LF,而不是Windows样式的CRLF)。 只要每个输出文件都具有尾随换行符,就可以接受输出文件中的尾随换行符,但这不是必需的。您可以选择输入文件是否包含尾随换行符。 输入中的每一行将至少包含2个字符。 所选的随机值必须从给定的一组可能值的均匀随机分布中选择。 如果您的语言无法执行文件I / O,则可以将输入文件的内容作为输入,然后输出代表输出文件名和该文件文本的字符串对。但是,您提交的内容将不符合获奖资格。 例 参考实现: #!/usr/bin/env python3 import random import string import sys fname = sys.argv[1] with open(fname) as f: txt = f.read().rstrip().split('\n') …

18
将Salesforce 15个字符的ID转换为18个字符
在Salesforce CRM中,每个对象都有15个字符的字母数字ID,区分大小写。如果有人好奇,实际上它是62的基数。但是,用于数据迁移和集成的工具可能支持也可能不支持区分大小写。为了克服这个问题,可以将ID安全地转换为18个字符的不区分大小写的字母数字ID。在该过程中,将3个字符的字母数字校验和添加到ID。转换算法为: 范例: a0RE000000IJmcN 将ID分成三个5个字符的块。 a0RE0 00000 IJmcN 反转每个块。 0ER0a 00000 NcmJI 1如果每个字符都用大写字母替换,0否则用大写字母替换。 01100 00000 10011 对于每个5位二进制数i,在位置获取字符i在大写字母和数字0-5(ABCDEFGHIJKLMNOPQRSTUVWXYZ012345)串联的。 00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5` 屈服: M A T 将这些字符(校验和)附加到原始ID。 输出量: a0RE000000IJmcNMAT 编写以15个字符的字母数字(ASCII)字符串作为输入并返回18个字符的ID的程序或函数。 输入验证不在此问题的范围内。程序可能会返回任何值,或者由于无效输入而崩溃。 请不要使用使该挑战变得微不足道的Salesforce专有语言的功能(例如,公式CASESAFEID(),转换Id为String在APEX&c中 Formula)。 测试用例 a01M00000062mPg …
20 code-golf  string 

11
制作数字列表转换器
当您想将一个数字列表(向量,数组...)从一个程序复制粘贴到另一个程序时,您是否讨厌它,但是您使用数字的格式与您所需要的格式不匹配? 例如,在MATLAB中,您可能会有一个用空格分隔的列表,如下所示: [1 2 3 4 5] (you can also have it comma separated, but that's not the point) 在Python中,您需要插入逗号以使该列表成为有效输入,因此您必须将其转换为 [1, 2, 3, 4, 5] 使它工作。在C ++中,您可能需要类似以下内容: {16,2,77,29} 等等。 为了简化每个人的生活,让我们创建一个列表转换器,该转换器接受任何格式的列表*,然后输出另一种指定格式的列表。 有效括号为: [list] {list} (list) <list> list (no surrounding brackets) 有效的分隔符为: a,b,c a;b;c a b c a, b, c <-- Several …

10
支架平衡
您将得到一个(可能为空)字符串,其中包含方括号([{()}])和其他任何字符(A- Z,a- z,0- 9,标点符号)。您需要检查其是否遵循以下规则: 非方括号字符将被忽略。 每个开放式括号[{(都有一个封闭式括号)}]。所以[](是不允许的。 支架正确嵌套。[(])不允许。 弯括号中不能包含方括号。简单括号内不能包含大括号或方括号。因此[({})],[{[]}]并且({})是不允许的。括号可以与类似的括号嵌套,因此[[{((()))}{{(())}}]()]{()}是允许的。 根据您的选择,输出是单个真实/错误值。 最短的代码胜出。 测试用例 b[[a{(/)}(())+={{}-}],] ->有效 ([h][e][l][l][o]) ->无效 [///[{(\/(arg()))}1{{((-)-2)}}]()]{()} ->有效 hi ->有效

12
多项式的符号微分
象征性的区别1:去了Coefishin' 任务 编写一个程序,将x的多项式从stdin(1 <deg(p)<128)引入并进行微分。输入多项式将是以下形式的字符串: "a + bx + cx^2 + dx^3 +" ... 其中每个项的系数是整数(-128 <a <128)。每个术语由一个空格,一个+和另一个空格分隔;线性和常数项如上所示(即no x^0或x^1)。项将按照递增的顺序出现,并且那些零系数的幂被省略。所有系数为1或-1的项都会明确显示该系数。 您的输出必须具有完全相同的形式。请注意,输出中的系数可能高达127 * 127 == 16129。 例子 "3 + 1x + 2x^2" ==> "1 + 4x" "1 + 2x + -3x^2 + 17x^17 + -1x^107" ==> "2 + -6x + 289x^16 + -107x^106" "17x …

16
编写一个程序,查找字符串中出现次数最多的配对字母
程序必须输出配对最多的字母。例如,如果为您的程序提供了以下字符串: "Sally's friend Bobby searched for seashells." 它必须输出,L因为"ll"发生两次,这比另一对更频繁"bb"。 规则: 如果出现多个字母的位置排在第一位,则以字母顺序输出所有字母(例如,"Sally's friends Jimmy and Bobby rummaged for seashells."应同时输出两个LAND M(或"LM"请输出),因为它们都比其他字母对更频繁出现。) 三倍,四倍等的字母算作一对(例如"lll"in中"willless"仅算作一对L。) 字母对必须在一个单词中(例如,"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."应该输出,L而不是S因为尽管"ss"出现的次数多于"ll",但它们之间用空格隔开。) 仅计算英文字母中的字母 大小写无关紧要(例如"Ss",与"SS"或相同"ss",并且全部计为一对S。) 您可以从任何地方阅读您的输入。最短的代码胜出。

9
消除死代码
死代码坐在那里什么也没做,盯着我们知道它永远不会被执行……但是今天我们可以报仇了。 规格 输入将是多行字符串。 每行可以是一个赋值或一个表达式。 分配 作业的形式为 <name> = number name是字母,下划线和数字的序列,但不能以数字开头。 变量可以被分配任意次。 表达 表达式的形式 <var_name OR number> <operation> <var_name OR number> ... 表达式可以是以下各项的任意组合: 已经定义的变量 基本算术运算符 +-*/ 数字(整数) 预期产量 您应该输出带有多余赋值的字符串,该赋值已删除,其后的任何表达式都不会使用这些赋值。请注意,如果在执行使用变量的表达式之前执行了对同一变量的附加分配,则分配也可以变得多余。 测试用例 在 a = 10 a * 3 出 a = 10 a * 3 在 foo = 8 2 - 1 …

7
优化Scralphabet
cr 普通的Scrabble磁贴袋中包含以下字母(?是空白磁贴,可以代表任何其他字母): AAAAAAAAABBCCDDDDEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLMMNNNNNNOOOOOOOOPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ?? 字母具有以下值: {"A": 1,"B": 3,"C": 3,"D": 2,"E": 1,"F": 4,"G": 2,"H": 4,"I": 1,"J": 8,"K": 5,"L": 1,"M": 3,"N": 1,"O": 1,"P": 3,"Q": 10,"R": 1,"S": 1,"T": 1,"U": 1,"V": 4,"W": 4,"X": 8,"Y": 4,"Z": 10,"?": 0} 给定一个正常的拼字游戏包,请在以下条件下构造得分最高的一组不相交的单词(即单个单词,不在拼字板上): 每个字的分数是sum(letter_values) * length(word)。 您最多只能在一个字母的每个字母开头包含一个单词(因此,最多26个单词)。 仅可包含有效的拼字游戏单词(来自此词典)。您可以从文件中读取字典,对其进行硬编码(ugh)或从网站上将其刮取。 您无需使用每个图块,但所有未使用的图块都组成一个单词,以相同的方式评分,并从您的分数中扣除。 如果您愿意,您的代码可以接受两个输入:袋子内容为字符串,字母值采用类似于python的某种格式dict(如上所述);或者,您可以对包装袋中的物品和字母值进行硬编码。它应该以某种合理的格式输出您的单词集中的单词,它们各自的得分和您的总得分。 得分最高的单词组获胜,并列第一个。

3
将Stack Exchange问​​题标题分析成程序
Stack Exchange目前有134个问答站点。这包括所有Beta版网站(例如PPCG),但不包括Area 51提案,也没有任何meta网站(“ mother meta”除外)。 要回答这个问题,请选择其中一个站点并编写程序,其中每一行代码都是该站点上另一个问题的标题的类似字母。只要未删除该站点上的任何问题,并且该问题之前已被询问,则可以使用该问题。 问题的标题包括单击问题下方的链接时出现在文本框中的所有字符,包括空格,mathjax格式,疯狂的Unicode字符等。(如果要一次查询一堆问题,可以使用Stack Exchange API。)Titleedit 您编写的程序必须输出可靠地出现在每个Stack Exchange页面顶部的字符串: Questions Tags Users Badges Unanswered Ask Question 该确切的文本以及一个可选的结尾换行符是您的程序应该输出的唯一内容。没有输入。输出应该转到stdout,或者如果不可能的话,转到类似的替代方法。 由于仅用题名的字谜进行此操作可能会有些棘手,因此您可以选择在程序的每一行中的任何列中添加一个选择的字符。并非所有行都需要有一个额外的字符,并且行之间不必是相同的字符。字符可以是行终止符以外的任何东西。该行中的字符减去一个新字符仍应是问题标题的完美组合。 计分 你的分数是(number of lines with no added character) + 2 * (number of lines with an added character)。最低分获胜。如果是平局,则较早的答案为准。 细节 您必须提供指向使用标题的所有问题的链接。 您可以选择与其他人相同的Stack Exchange站点,尽管我们鼓励您选择未使用的站点(仅出于某种用途)。 如果您在选择获胜者之前删除了所使用的问题,则您提交的内容将无效,因此最好选择公认的问题。 如果在某些问题上对标题进行了编辑,则只要编辑历史记录显示您发布答案时标题是正确的,您的提交仍然有效。 程序中的注释很好。 根据您的需求编辑问题标题是非常糟糕的形式。

30
游程长度解码
用您选择的语言编写最短的代码,以执行给定字符串的游程长度解码。 该字符串将以以下形式作为标准输入提供: CNCNCNCNCNCNCNCN 其中每个C可以是任何可打印的ASCII字符和每N一个数字1来9(含)。 输入样例: :144,1'1 对应的输出: :4444,'
20 code-golf  string 

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.