Questions tagged «string»

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

30
子序列替换
大多数语言都带有内置功能,可以在字符串中搜索所有出现的给定子字符串,然后用另一个替换。我不知道有什么语言可以将此概念推广为(不一定是连续的)子序列。因此,这就是您面临的挑战。 输入将包含三个字符串A,B和C,其中B和C保证长度相同。如果B出现为子序列,A则应替换为C。这是一个简单的示例: A: abcdefghijklmnopqrstuvwxyz B: ghost C: 12345 可以这样处理: abcdefghijklmnopqrstuvwxyz || | || abcdef12ijklmn3pqr45uvwxyz 如果有几种查找子B序列的方法,则应贪婪地替换最左边的子序列: A: abcdeedcba B: ada C: BOB Result: BbcOeedcbB and NOT: BbcdeeOcbB 如果B可以在多个不相交的地方找到,则同样适用: A: abcdeedcbaabcde B: ed C: 12 Result: abcd1e2cbaabcde and NOT: abcd112cbaabc2e (or similar) 当B没有出现时A,您应该输出A不变。 规则 如上所述,采取三个串A,B和C作为输入和替换的最左边的发生B在作为子A带C,如果有的话。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您可以按照在答案中指定的任何一致顺序选择三个字符串。您可以假设B且C具有相同的长度。所有字符串将仅包含字母数字字符。 适用标准代码高尔夫球规则。 测试用例 每个测试用例是四行:A,B,C随后的结果。 abcdefghijklmnopqrstuvwxyz ghost …

24
说你所见
“请说一说”或“说您看到的内容”序列是一系列数字,每个数字都描述了最后一个数字。 1 11 (one one) 21 (two ones) 1211 (one two, one one) 111221 (one one, one two, two ones) 312211 (three ones, two twos, one one) 等等... https://oeis.org/A005150 无论如何,这是一个常规的代码挑战(以最少的字节数获胜),使程序需要两个参数,即初始数和迭代次数。例如,如果您插入“ 1”和“ 2”,则结果将是“ 21”。如果您插入“ 2”和“ 4”,则结果将是“ 132112”。玩得开心!

3
救命!我的计算器坏了!(将整数表达式转换为计算器按键)
介绍 救命!我不小心将TI-84计算器掉到了窗外(不要问怎么做),它坏了。我明天要进行数学测试,唯一能找到的计算器就是这些按钮: 7 8 9 + 4 5 6 - 1 2 3 * 0 = / 我的数学测试是关于评估表达式的复习测试。我需要一个程序来接受诸如的表达式1+(5*4)/7,并将其转换为在备用计算器上求解所需的击键。(如果您想知道,这确实发生在我身上)。 挑战 鉴于含有非空输入串仅字符0-9,(,),+,-,*,和/,输出以空间分隔的字符串的键击(例如1 + 3 / 3 =)。输出末尾必须始终有一个等号。不允许出现标准漏洞。 例子: 输入:1+(5*4)/7,输出:5 * 4 / 7 + 1 = 输入:6*(2/3),输出:2 / 3 * 6 = 输入:(7-3)/2,输出:7 - 3 / 2 = 为了使这个挑战更容易: 您可能假定输入具有一系列与其关联的击键,不需要清除计算器(这1-(7*3)是无效的,因为它需要您查找7 * 3然后清除计算器才能进行1 …

30
实施“ TAC”:从文件反向打印行
在小猫问题和在U&L看到有关sed魔术的问题之间,如何实施tac? 目的 实现一个程序,该程序将反转并打印文件中的行。 输入值 作为名称或通过标准输入提供的文件 输出量 线颠倒了,以标准输出。 计分 源代码字节。
30 code-golf  string 

7
我可以将所有的电线和适配器绑在一起吗?
假设有一天,您正在翻阅一大盒未使用的计算机线和适配器(USB到USB mini,VGA到DVI等)。到处都有缠结的电线,使情况变得一团糟,您想知道是否可以通过将所有电线绑成一长串然后将其卷起来来简化事情。 问题是,是否可以像这样将所有电线和适配器连接成一条长线?显然并非总是可能的,例如,如果您只有两条完全不同的插头的电线,则它们无法连接在一起。但是,如果您有第三条可以同时连接到它们的电线,则可以将所有电线捆扎在一起。 您不必担心全绳线末端的插头类型。他们不需要互相插入就可以形成一个循环。您只想知道是否可以制作全绳缆绳,如果可以,如何做。 挑战 编写一个包含多行字符串的程序或函数,其中每行都描述您拥有的一根电线。电线由一个或多个破折号(-)组成,两端均带有插头。插头始终是8个字符之一()[]{}<>。 因此,以下是一些有效的方法: >-> (--[ }-{ <-----] (---) 但是这些不是: --> (-- )-- [{ --- 连接电线时,只能将支架类型完全相同的插头连接在一起。 因此,以下是一些有效的电线连接: ...---((---... ...---))---... ...---]]---... ...---{{---... ...---<<---... 这些是无效的: ...---()---... ...---)(---... ...---{]---... ...---{[---... ...---><---... ...--->)---... 如果输入中的所有软线都可以重新排列并连接成一长串,则将其输出到一行上的stdout(带有可选的尾随换行符)。如果有多种解决方案,则可以选择其中一种进行输出。如果无法制作单条链,则不输出任何内容(或输出带有可选尾随换行符的空字符串)。 例如,如果输入是 [--> {---] >----{ 输出可能是 [-->>----{{---] 所有的电线都缠绕在一起。 但是如果输入是 [--> {---] 电源线无法连接,因此没有输出。 请注意,电线可以尽可能多地翻转以进行连接。例如[-->,<--]并且实际上是同一根电线,因为它们可以进行相同类型的连接。某些输出可能取决于翻转输入线。 例如 (-[ }--] 可能有输出 (-[[--{ …
30 code-golf  string 

10
正弦文字
目标:编写一个程序或函数,以正弦形状打印输入字符串。 ASCII正弦波 这是正弦曲线的一个周期: ....... ... ... .. .. . . . . . . . . . . . . . . . .. .. ... ... ....... 请注意,每一列上只有一个点。 输入字符串中的每个字符将从左到右替换上面形状中的一个点。 输入中的空格必须像普通字符一样输出,代替点。 起始字符对应于上图中最左边的点。 这只是一个周期,输入的长度可能大于上面的点数。 输入值 输入是ASCII字符串,仅包含ASCII十进制32(空格)和ASCII十进制126(波浪号〜)之间的字符。 输入将始终仅是一行(没有换行符)。 可以通过STDIN,函数参数,命令行参数或任何类似方式进行输入。 输出量 输出必须完全按照给定的测试用例打印。 允许在行上使用尾随空格,只要具有这些尾随空格的行的长度不超过最长行(在其上最后一个字符的行)的长度即可。 不允许前导/尾随线。 测试用例 输入: ................................................. 输出: ....... ... ... .. .. …

30
2个字符串的最长公共前缀
编写一个程序,将2个字符串作为输入,并返回最长的公共前缀。这是code-golf,所以最短字节的答案会获胜。 Test Case 1: "global" , "glossary" "glo" Test Case 2: "department" , "depart" "depart" Test Case 3: "glove", "dove" ""
30 code-golf  string 

30
最大的通用子字符串
创建一个将字符串列表作为输入的程序或函数,并输出最长的字符串,该字符串是所有输入字符串的子字符串。如果有几个长度相等的子字符串,并且不再有子字符串,则输出其中任何一个。 这可能意味着输出空字符串。 如果有多个有效输出,则可以输出其中任何一个。只要输出始终有效,就不需要为给定的输入提供一致的输出。 输入中将始终至少包含一个字符串,但可能不会存在非空字符串。 所有可打印的ASCII字符都可能出现在输入中。您可以假设这些是唯一出现的字符。 您可以通过任何默认方法获取输入或产生输出。 不允许出现标准漏洞。 这是代码高尔夫球 -代码字节越少越好。 测试用例: [Inputs] -> [Valid outputs (choose one)] ["hello", "'ello"] -> ["ello"] ["very", "much", "different"] -> [""] ["empty", "", "STRING"] -> [""] ["identical", "identical"] -> ["identical"] ["string", "stRIng"] -> ["st", "ng"] ["this one", "is a substring of this one"] -> ["this one"] …

30
猫又吃了你的输入!
创建一个cat程序,也就是一个接受输入并打印的程序。 ...此外,该程序将随机从输入中删除字符并打印出来。 输入中的每个字符的机率通常应相等,但是很难做到,每个字符的机率最多只能相差10%。 您的程序应采用输入,然后从输入中随机删除字符,然后再次打印该版本。(如果您的语言必须打印换行符,则可以使用尾随换行符或其他字符进行打印。) 如果输入为BOOOWL,则不应以相等的机会删除所有O:应该考虑每个字符(不是唯一的),因此,每个O都应具有1的机会,而不是每个合并的O具有1/5的机会。 / 5的机率,因此,BWL与其应该有1/5的机率,不如应该有1/5的机率BOWL,BOOWL。 输入仅限于STDIN或最接近的等效项。 每个字符必须必须除去最低10%和最大30%的机会的。 每个角色的赔率应单独计算。 您可以使用语言中支持随机动作的任何组件,无论是函数还是其他组件。 输出必须通过STDOUT或最接近的等效输出。如果您的语言确实有STDOUT,请勿以任何其他方式输出。如果您的语言无法将字符串输出为文本,请使用最接近的等效字符串(此处的C的字符数组输出可以)。 这是代码高尔夫。最短的程序获胜。

30
特斯拉脱氧核糖核酸
或者,“交换每个单词的首字母和尾字母” 您面临的挑战是,给定一串字母ASCII字符以及一个用作分隔符(分隔每个单词)的其他字符,交换每个单词的第一个和最后一个字母。如果有一个字符的单词,请不要理会。 示例/测试用例使用小写字母和空格作为分隔符。 您不需要处理标点符号。所有输入将仅由字母a到z组成,并由定界符分隔,所有字母均为统一大小写。 例如,使用字符串“ hello world”: Input string: "hello world" Identify each word: "[hello] [world]" Identify the first and last letters of each word: "[[h]ell[o]] [[w]orl[d]]" Swap the first letters of each word: "[[o]ell[h]] [[d]orl[w]]" Final string: "oellh dorlw" 注意:不需要单独输入定界符。分隔符只是用于分隔单词的字符。可以是任何东西。我想为有创意的高尔夫球手提供开放的选择,所以我不想将其限制为仅空格或换行。分隔符只是一个字符,用于分隔输入字符串中的单词。 测试用例: "swap the first and last letters of each …
30 code-golf  string 

10
解释///(发音为“斜杠”)
因为我们无法获得足够多的深奥语言高尔夫,我们可以吗? /// —发音 斜杠)是一种有趣的小语言,它基于s///Perl成名的正则表达式替换功能。它仅包含两个特殊字符slash /和反斜杠\。您可以在esolangs Wiki上找到完整的文章,但我将在下面复制对语言的描述以及一些示例。 简而言之,它通过/pattern/repl/rest在程序中进行标识并进行尽可能多的替换来起作用。除特殊字符外,没有其他特殊字符/和,\::/划定程序中的模式和替换,同时\允许您在代码中插入文字/或\字符。值得注意的是,这些不是正则表达式,只是纯字符串替换。 您面临的挑战是为///语言生成解释器,作为一个读取STDIN的程序或一个带有字符串参数的函数,并使用尽可能少的字符。 您可以使用///以外的任何语言。您不得使用任何解释///的库;但是,您可以使用正则表达式,正则表达式库或字符串匹配库。 执行 有四种状态,分别是print,pattern,replace和replace。在每个国家中,除了替代: 如果程序为空,则暂停执行。 否则,如果第一个字符为\,则对下一个字符(如果存在)进行操作,然后从程序中删除这两个字符。 否则,如果第一个字符是 /,请将其删除,然后更改为下一个状态。 否则,对第一个字符进行处理,然后将其从程序中删除。 重复。 状态依次遍历print,pattern,replace和替换。 在打印模式下,“执行某些操作”表示输出字符。 在模式模式下,“执行某些操作”意味着将字符添加到当前模式。 在替换模式下,“执行某些操作”意味着将字符添加到当前替换中。 在替换模式下,您遵循一组不同的规则。重复用程序中的当前替换替换当前模式的第一个匹配项,直到不再有替换可用为止。此时,清除“模式和替换”并返回打印模式。 在程序中/foo/foobar/foo foo foo,发生以下情况: /foo/foobar/foo foo foo foo foo foo foobar foo foo foobarbar foo foo foobarbarbar foo foo ... 这将永远循环,并且永远不会退出替换模式。同样,如果Pattern为空,则空字符串的第一个匹配项(在程序开头)总是匹配的,因此替换模式永远循环,永不停止。 例子 no 输出:no。 / world! world!/Hello,/ world! world! …

15
冰箱贴替代
当写有冰箱贴一个消息,你经常会发现自己代以1一个I。在此挑战中,您的目标是找出是否可以使用另一封邮件的字母来写一封邮件。允许的替换为: A = 4 B = 8 C = U E = M = W = 3 G = 6 = 9 I = 1 L = 7 N = Z O = 0 R = 2 S = 5 例如,CIRCA 333可以将邮件重新排列为拼写ICE CREAM,其中前两个3s旋转180度以形成两个Es,最后一个s 3逆时针旋转90度以形成M。消息中可以包含空格,但是不应在解决方案中考虑空格,因为空格是通过将磁铁放在冰箱上制成的。 输入值 两个字符串(或字符数组)。所有消息都将匹配^[A-Z0-9 ]+$ 输出量 如果两个输入字符串相互有效重排,则为真,否则为假。 例子 …

26
箭头那些变量!
挑战 罗宾喜欢用箭头来声明变量。他的做法如下: 输入任意数量的字符串 按长度顺序排列 将它们按中间顺序输出,大致形成一个负箭头,如下所示(以顺序最好的一个为佳): 5 or 4 3 2 1 1 2 3 4 5 测试用例 输入: bow arrows sheriffOfNottingham kingRichard maidMarian princeJohn sherwoodForest 输出: sheriffOfNottingham kingRichard maidMarian bow arrows princeJohn sherwoodForest 输入: a bb cc 输出(均有效): bb a cc cc a bb 输入: one four seven fifteen 可能的输出(唯一有效的输出是其垂直镜像): …

7
我们从开始的地方结束了!…
挑战: 输入: 您有两个输入: -仅包含可打印ASCII的字符串(不包括空格,制表符或换行符) -可打印的ASCII字符 输出: 第一行将包含字符串输入。i该字符的每个-modulo-3首次出现都将朝东南方向移动;每出现i-modulo-3秒事件将向南移动一次;并且每i-modulo-3出现的三分之一将沿西南方向移动。您将继续操作,直到字符将再次位于其初始起始位置(这意味着如有必要,它将从一侧缠绕到另一侧),然后再次使用字符串输入将最后一行打印到完成它。(请注意,所有测试用例都将在最多length(input)行之后(包括包含尾随输入的行)结束于其初始输入。但是,如下面的第一个测试用例所示,它可能更快,长度为14,但在之后9.) 这可能都非常模糊,因此这里有一个示例: 测试用例1: 字符串输入:"This_is_a_test" 字符输入:'s' 输出: This_is_a_test s s s ss s s s sss sss s s ss s s s s This_is_a_test 这是三个颜色路径相同的测试用例s: 第一条's'沿着绿色路线向东南方向行驶;第二条's'沿着黄线向南行驶;第三条's'沿着淡蓝色的路径向西南方向移动。(如果有第四个's',它将再次朝东南方向移动,这可以在下面的其他一些测试案例中看到。) 挑战规则: 输入将仅包含可打印的ASCII(不包括空格,制表符和换行符) I / O格式很灵活。可以是换行符分隔的字符串,字符矩阵等。您的呼叫。 给定字符可能不存在于字符串中,在这种情况下,允许您将输入字符串输出一次或两次(即,"test", 'a'可以将其中之一作为可能的输出:"test\ntest"/ "test")。 前导空格是强制性的;尾随空格是可选的。允许一个或多个前导/尾随换行符。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法和返回类型的完整程序。你的来电。 默认漏洞是禁止的。 如果可能,请为您的代码添加一个带有测试的链接。 另外,如有必要,请添加说明。 …

9
是山区吗?
挑战 对于这一挑战,山区字符串是一个符合语法规则的字符串,M: x(Mx)*其中在每个产品中所有x都是相同的字符。缩进后,山峰字符串可能如下所示: A B C D C E F E C B A 如您所见,从侧面看它有点像一座山。 正式定义 任何单个字符a都是多山的。 如果S是多山字符串,并且a是字符,aSa则为多山,其中并置表示字符串连接。 如果aSa和aTa是多山的弦,那么aSaTa就是多山的弦。请注意,此规则意味着该模式适用于任意数量的重复。(即aSaTaUa,aSaTaUaVa,aSaTaUaVaWa...都是山区。) 例子 所有奇长回文都是山区,例如: t a c o c a t qwertytrasdfdgdsarewqjklkjq 是一个比较简单的例子: q w e r t y t r a s d f d g d s a r e w …

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.