Questions tagged «string»

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

16
星期一迷你高尔夫#3:字谜距离
星期一迷你高尔夫:每周一发布(希望!)一系列简短的代码高尔夫挑战赛。 (对不起,这有点晚。) 我敢肯定,你们大多数人都听说过Levenshtein distance,一种用于计算两个琴弦之间距离的算法。嗯,这个挑战是关于实现我自己的发明*的类似算法,即anagram distance。主要区别在于字符的顺序无关紧要。而是仅测量一个字符串或另一个字符串唯一的字符。 挑战 挑战的目标是编写一个程序或函数,该程序或函数接受两个字符串并返回它们之间的字谜距离。实现此目的的主要方法是使用以下逻辑: 将两个字符串都转换为小写,并(可选)按字母顺序对每个字符进行排序。 当字符串中至少包含一个相等的字符时,请从每个字符串中删除该字符的第一个实例。 添加剩余字符串的长度,并返回/输出结果。 例 如果输入是: Hello, world! Code golf! 然后,将它们转换为小写并排序:(按JS的默认排序;请注意前导空格) !,dehllloorw !cdefgloo 删除两个字符串中的所有字符,我们最终得到: ,hllrw cfg 因此,原始两个字符串之间的字谜距离= 6 + 3 = 9。 细节 字符串可以采用任何明智的格式。 字符串将仅包含可打印的ASCII。 字符串本身将不包含除常规空格以外的任何空格。(没有选项卡,换行符等) 只要结果相同,就无需使用此精确算法。 测试用例 输入1: Hello, world! Code golf! 输出1: 9 输入2: 12345 This is some text. .txet emos si …
24 code-golf  string 

10
两路回文闭合发生器
介绍 输入字符串的回文式闭合是可以从输入字符串中构造的最短回文,其中最终回文以输入字符串开头。 对于这一挑战,我们将考虑双向回文封闭 输入字符串的左回文闭合是从输入字符串开始的最短回文。 输入字符串的正确回文闭合是以输入字符串结尾的最短回文。 输入字符串的双向回文闭合是输入字符串的左回合或右回文中的较短者。 任务 您的任务很简单。给定一个字符串(仅由可打印的ASCII,换行和空白组成),输出该字符串的双向回文式闭包。如果打成平局,则左或右回文式封条都是有效输出。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,然后将结果打印到STDOUT(或最接近的替代方案)或将其作为字符串返回。 您可以假定输入永远不会是空字符串。 几个例子: <Input> -> <Output> "abcdef" -> "abcdefedcba" (or "fedcbabcdef") "abcba" -> "abcba" "abcb" -> "abcba" "cbca" -> "acbca" 最初的想法归功于VisualMelon,最后的想法归功于Martin和Zgarb 本文首先使用并定义了回文封闭,左回文封闭和右回文封闭这两个术语。

30
计算字符串的平均字符
任务 您的任务是产生包含字符串平均字符的字符串。结果的第一个字符是第一个字符的平均字符(即第一个字符)和两个第一个字符的第二个字符的平均值,依此类推。 什么是普通字符? 字符串是字节数组。平均字符串的可以通过计算平均字符的ASCII值的字符串,并采取相应的ASCII字符被发现。 例如,字符串"Hello!"可以写为字节序列72 101 108 108 111 33。ASCII值的平均值为533/6 = 88.833 ...,将其四舍五入为最接近的整数时,我们得到89,这是大写字母的ASCII码Y。 规则 您可以假定输入仅包含可打印的ASCII字符 输入可以从stdin读取,也可以作为命令行参数或函数参数读取 输出必须是标准输出。如果您的程序是函数,则还可以返回否则将打印的字符串。 它必须是整个程序或函数,而不是摘要 适用标准漏洞 整数按函数floor(x+0.5)或类似函数进行取整。 我怎么赢? 这是代码高尔夫球,因此获胜时的最短答案(以字节为单位)。 例子 Hello! → HW^adY test → tmop 42 → 43 StackExchange → Sdccd_ccccddd
24 code-golf  string 

23
凯撒等效
如果相应字符之间的距离(向上计数)相同,则两个字符串为“凯撒等效项”。是的,我补了这个学期。这是一个例子: “ Abc”和“ Cde”是等效的,因为 distance from a-c == 2 distance from b-d == 2 distance from c-e == 2 大写字母没有任何区别。 “ Hello”和“ World”不等同于Caesar,因为 distance from h-w == 15 distance from e-o == 10 distance from l-r == 6 distance from l-l == 0 distance from o-d == 15 “ Abcd”和“ …
24 code-golf  string 

26
用散列包围字符串
我已经在Python中做到了这一点,但似乎可以将其缩短很多: txt = input("Type something.. ") c = "#" b = " " print(c * (len(txt) + 4)) print(c, b * len(txt), c) print(c, txt, c) print(c, b * len(txt), c) print(c * (len(txt) + 4)) 因此,如果用户键入: Hello World 程序打印: ############### # # # Hello World # # # ############### …
24 code-golf  string 

15
确定字符串的拼字游戏得分和有效性
您的任务是确定给定的字符串长度是否合适,并可以用Scrabble磁贴表示,如果是,则输出每个字母的分数之和。 如果您不知道如何玩Scrabble :,则有100个磁贴,上面印有字母A–Z,以及两个可代表任何字母的通配符。每个字母都有一定数量的点,每个图块(但不一定是单词)只能使用一次。演奏单词时,将所使用的每个图块的点值相加,即为分数。由于可用的字母数量有限,因此一个单词只能将某个字母的次数与该字母具有图块+任何未使用的通配符的次数相同。拼字游戏板的大小为15×15,因此该单词的长度必须在2到15个字符之间。 有关英文版本中每个字母的数量和分数的列表,请参见下面或http://boardgames.about.com/od/scrabble/a/tile_distribute.htm(存档)。 字母数量积分字母数量积分 ------------------- ------------------- A 9 1 O 8 1 B 2 3 P 2 3 C 2 3 Q 1 10 D 4 2 R 6 1 E 12 1 S 4 1 F 2 4 T 6 1 G 3 2 U 4 1 H …

30
从列表中生成带有牛津逗号的单个字符串
有什么巧妙的(简短而惯用的)方法来获取字符串列表,并返回一个从列表中构建的正确标点的字符串,并用引号将每个元素引起来。 这是我在尝试Groovy时想到的,对于我来说,我的字面意思是,但过于说明性的解决方案是 def temp = things.collect({"\'${it}\'"}) switch (things.size()) { case 1: result = temp[0] break case 2: result = temp.join(" and ") break default: result = temp.take(temp.size()-1).join(", ") + ", and " + temp[-1] break } 也就是说,['1']应该yield '1',['1','2']应该yield '1 and 2',[请参阅我在那里做的吗?],并且['1','2','3']应该yield '1, 2, and 3'。 对于Groovy,我有一些很好的答案,但我想看看其他语言可以做什么。 在各种语言中,有什么紧凑的巧妙方法可以利用这些语言的功能和习惯用法?

30
寻找“亚回文”。
查找字符串的所有唯一 “子回文” 的最短代码,即:任何长度大于1的子字符串都是回文。 例如1 input: "12131331" output: "33", "121", "131", "313", "1331" 例如2 input: "3333" output: "33", "333", "3333"

23
用字母汤装满碗
我们似乎从来没有得到疲倦的字母相关的挑战... 食谱 给定 一串字母S,和 两个正整数M,N, 产生的字母表汤中的字母S占据的随机位置在矩形碗尺寸的M× N,框架由一个非字母,非空格字符来表示碗的边缘。 字母未使用的位置应显示为空格。请参阅下面的示例。 附加规则 尺寸M× N指的是内部的碗。包括轮辋在内的尺寸为M+2× N+2。 每个字符S应在碗中一次出现在不同的位置;也就是说,一个字符不能覆盖另一个字符。 S 可能包含重复项。例如,如果S是字符串'abcc',汤必须包含一个a,一个b,两个c(都在不同的位置)。 输入将满足限制 M >= 1,N >= 1,1 <= length(S) <= M*N。 碗的边缘可以是任何非字母,非空格字符,在程序运行和输入值之间保持一致。 碗中的字母位置是随机的,因此每次使用相同的输入运行程序时,结果可能会有所不同。 给定输入,每个可能的字母位置集应具有非零概率。由于无法从程序的一些实现中进行检查,因此请说明您的代码如何实现此目的。 允许在边框周围使用前导或尾随空格。 S将仅包含大写字母。如果愿意,您可以选择仅采用小写字母。 输入和输出像往常一样灵活。例如,输出可以是带有换行符的字符串,2D字符数组或行列表。 允许使用任何编程语言编写程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 例子 输入显示为S, [M N],其中M是行N数和列数。该字符#用于边框。 'O', [1 1]: ### #O# ### 'HEY', [1 3]: ##### #YHE# ##### 'HELLO', …

25
计算宽限期的编辑次数
当您在SE上编辑帖子时,在5分钟宽限期内的所有进一步编辑都会合并到其中。给定您编辑帖子的次数列表,请在宽限期内不算编辑次数。 假设您在几分钟内进行编辑[0,3,4,7,9,10,11,12]。有时会导致3次修改,[0,7,12]其余的会在其宽限期内发生。 0: [3,4] 7: [9,10,11] 12: [] 第一次编辑是在第0分钟。第3和第4分钟的编辑在其5分钟宽限期内,因此不计算在内。 第二个编辑在第7分钟进行。第9、10、11分钟的编辑处于其宽限期内。 第12分钟的第三个编辑正好从第7分钟开始经过5分钟宽限期的边缘。 因此,输出为3。 以分钟为单位的时间列表将是一个递增的整数列表。对于首次发布,第一个数字将始终为0,我们将其视为编辑。 测试用例: [0] [0,3,5,7] [0,3,4,7,9,10,11,12] [0,30,120] [0,4,8,12,16] [0,4,8,12,16,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] [0,5,10,15,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] 输出: 1 2 3 3 3 3 4 5 5 6 为了便于复制,以下是输入,输出和输入/输出对: [[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, …

14
你知道你的“ KVZ”吗?
概念 您可以通过哪些方式加扰英文字母,以便仍可以在不破坏音调的情况下将其演唱到Twinkle Twinkle Little Star音乐中? 规则 交换 让我们假设默认情况下可以自由交换以下每个集合中包含的字母而不会破坏音调: {A,J,K} {B,C,D,E,G,P,T,V,Z} {I,Y} {Q,U} {S,X,F} {M,N} 因此,H,L,O,R和W锁定在适当的位置 输出量 程序需要以任何顺序输出包含完整英文字母的单个RANDOM字符串(或字符列表),前提是该顺序满足上述条件。您应该没有办法预测程序将输出哪个字符串(如果忽略种子),这意味着您不能仅仅对其进行硬编码。 您的程序必须有一定的概率(不一定是统一的)生成9!⋅3!⋅3!⋅2!⋅2!⋅2!=1045094409!⋅3!⋅3!⋅2!⋅2!⋅2!=104509440 9! \cdot 3! \cdot 3! \cdot 2! \cdot 2! \cdot 2! = 104509440 输出。 关于间距,定界符或大小写没有特定的格式限制,只是保持一致。 目标 最小字节获胜! 例子: KCDBPSVHIAJLMNOZQRXGUEWFYT A,G,Z,V,P,X,C,H,Y,K,J,L,N,M,O,T,U,R,S,D,Q,B,W,F,I, Ë KVTDCFBHIJALNMOPURSZQGWXYE jcdebxthikalnmogursvq pwfyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 非示例: HLWROABCDEFZXYGIJKMNPQTSVU 概念验证:(Python3,529字节) import random g1 = …

22
反转配电板上的某些开关
受此挑战启发。 目标: 给定一个预先配置的总机和一个索引列表,将给定索引处的交换机反转。 配电盘由包裹在中的一定数量的开关(v或^)组成,-并排列成不同长度的行。这是总机示例: -v-^-v- -^-v- -v-^-v- 反转/翻转开关装置从它改变v到^,或从^到v。 开关从左到右,从上到下索引。例如,在上面的示例v中,第一行中的最后一个将位于位置3,^中间行中的将位于4(使用1索引)。 输入: 代表配电盘的字符串(或字符串列表)。保证匹配正则表达式((-[v^])+-)(\n(-[v^])+-)*。 可能为空的表示索引的数字列表,可能是0或1(或者,如果需要,可以是任意数字)被索引。这些是需要翻转的开关。 输出: 与输入形状相同的配电盘,其中指定的开关反转。任何未指定的开关应保持其初始状态。 规则: 输入将始终正确格式化,并且任何给定的索引都不会超出范围。 索引列表将被排序,并且没有重复项。 在您的答案中说明您使用的索引是0、1或任意索引。 只要输出看起来像输入,尾随空格就可以了。 这是代码高尔夫球,因此最短的代码获胜。 例子: #Using 1-indexing input: #Empty Case [], -v-^-v- output: -v-^-v- input: #Single switch [1], -v- output: -^- input: #Skip a line [3,5], -^-v-v- -v- -^-^- output: -^-v-^- -v- -v-^- input: …

15
半回文之谜
回文是一个本身相反的词。 现在有些单词看起来像回文,但看起来却不然。例如,考虑单词 sheesh, sheesh不是回文,因为它的反向是hseehs不同的,但是如果我们认为sh是单个字母,那么它的反向是sheesh。我们将这种词称为半回文。 具体来说,如果我们可以将单词拆分成一定数量的块,则该单词为半回文,这样当块的顺序颠倒时,便形成了原始单词。(因为sheesh这些块是sh e e sh),我们也将不要求任何块包含两个单词的字母(否则每个单词都是半回文)。例如rear,不是半回文,因为它r ea r具有一个块(ea),其中包含来自原始单词两边的字母。我们认为奇数长度的单词的中心字符不在单词的两侧,因此对于奇数长度的单词,中心字符必须始终位于其自己的块中。 您的任务是获取正整数列表,并确定它们是否为半回文。您的代码应输出两个一致的不相等值,如果输入是半回文,则应输出一个,否则将输出另一个。但是,代码的字节序列本身必须是半回文。 答案将以字节计分,而字节数越少越好。 测试用例 [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False 程序生成更多的测试用例。 borrible指出,这些与广义Smarandache回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

10
最短的唯一标识子字符串
给定一个字符串列表,请用其非空子字符串之一替换每个字符串,该子字符串不是列表中任何其他字符串的子字符串,并且应尽可能短。 例 给定list ["hello","hallo","hola"],"hello"应替换为,"e"因为该子字符串未包含在其中"hallo","hola"并且它尽可能短。"hallo"可通过任一取代"ha"或"al"并"hola"通过任何"ho","ol"或"la"。 规则 您可以假定字符串将为非空,并且仅包含大小写相同的字母字符。 您可以假定列表中的每个字符串都存在这样的子字符串,即列表中的任何字符串都不是其他任何字符串的子字符串。 输入和输出可以采用任何合理的格式。 这是code-golf,因此请尝试使用您选择的语言使用尽可能少的字节。 测试用例 在大多数情况下,仅给出一种可能的输出。 ["ppcg"] -> ["p"] (or ["c"] or ["g"]) ["hello","hallo","hola"] -> ["e","ha","ho"] ["abc","bca","bac"] -> ["ab","ca","ba"] ["abc","abd","dbc"] -> ["abc","bd","db"] ["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"] ["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"] 相关:最短识别子字符串 -类似的想法,但涉及更多规则和繁琐的格式。
23 code-golf  string  code-golf  string  code-golf  array-manipulation  code-golf  quine  code-golf  array-manipulation  integer  matrix  classification  code-golf  quine  code-golf  string  matrix  conversion  code-golf  string  number  code-golf  string  code-golf  number  sequence  integer  code-golf  decision-problem  matrix  code-golf  string  code-golf  math  code-golf  math  array-manipulation  combinatorics  code-golf  random  code-golf  code-golf  alphabet  code-golf  python  c  code-golf  base-conversion  code-golf  string  counting  code-challenge  code-generation  fastest-code  code-golf  kolmogorov-complexity  matrix  code-golf  string  code-golf  array-manipulation  decision-problem  random  sudoku  code-golf  chess  code-golf  card-games  encode  code-golf  decision-problem  code-golf  code-golf  math  array-manipulation  matrix 

26
逐行打印波浪形字符串
挑战 编写一个将字符串s和整数n作为参数的程序或函数。程序按如下所示转换时应打印(或返回)字符串: 从左上角开始,然后向下和向右移动,以s高度波动的形式书写n。然后,从上到下,将每行合并为一个字符串(无空格)。 例 给定字符串“ WATERMELON”,高度为3: 该波应如下所示: W R O A E M L N T E 然后,合并从上到下的行: WRO AEMLN TE 因此,您的程序应返回字符串“ WROAEMLNTE” 同样,高度为4的“ WATERMELON”应产生以下波动: W E A M L T R O E N 然后,您的程序应返回字符串“ WEAMLTROEN” 规则 输入项 输入可以采用任何合理的格式。在任何情况下,该字符串都可以使用。您可能会认为0 < n <= s.length 输出量 输出应仅包含转换后的字符串(无论是返回还是打印到STDOUT),以及任何结尾的换行符。 计分 这是代码高尔夫球,因此最短答案以字节为单位!不允许出现标准漏洞。 测试用例 Input …
23 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.