Questions tagged «string»

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

23
大小写排列
当您能够生成大写和小写的每个排列时,谁需要不区分大小写地比较事物?没有人!那就是答案。没人做到。您的任务是实现这一壮举。生成给定输入的所有可能的大写/小写排列。 输入项 一串可打印的标准ascii字符。输入不应假定全部为小写。输入将始终至少为一个字符。 输出量 输入的字符串的每个大写和小写排列(无重复)。这只能更改大小版本的字符(数字将保持不变)。每个排列必须输出为字符串或字符列表。不允许使用单例字符串列表。 例子 a1a ['a1a', 'a1A', 'A1a', 'A1A'] abc ['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC'] Hi! ['hi!', 'hI!', 'Hi!', 'HI!'] 计分 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 有趣的是,看到要处理扩展的ascii字符将花费多少额外的精力,这是一个额外的测试用例: ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A'] (您的程序不需要支持此功能)

4
找到我的话!
挑战的想法是从字典中的字母网格中找到所有单词。您的输入应来自stdin或函数arg,并将采用以下格式: [your dictionary as a list of space sep words] [a grid of letters] Example: The cool car looc thea jopr 寻找比赛的规则 如果在板上对角,水平或垂直找到匹配项(不区分大小写),则该匹配项有效。方向无关紧要(例如lookmatchs kool)。如果同一单词有多个匹配项,则将它们全部标记。 输出: 您的输出将是您得到的网格-稍有变化,即字母将以空格分隔,行将以双倍间距排列。例: Input: looc thea jopr Output: l o o c t h e a j o p r 为了表示比赛,您将在两个字母之间放一个箭头。箭头(/\-|X)指向匹配在一起的每对字母。X如果使用/\交叉。 例子: Input: The cool car looc …

23
Javascript左击高尔夫球
介绍 在过后左垫NPM包 余波,让我们有一个代码高尔夫为实现左垫。 的左垫功能由2个默认参数和1个额外的参数,在形式字符串,长度,(padchar)。如果未提供padchar,则将其标准化为空格字符。让我们以两个参数为例: left_pad("abc", 6) 首先,我们观察字符串的长度,即3。此后,我们需要在左侧填充该字符串,直到完整字符串的长度达到函数中指定的长度为止。在这种情况下6。由于未提供 padchar ,因此我们需要在空格处填充它: abc 这是一个包含3个空格和初始字符串的字符串,结果是一个长度为6的字符串。这是给定padchar的示例: left_pad("abc", 6, "-") 我们只做与上面的示例相同的操作,但是用padchar替换空格。在这种情况下,连字符: ---abc 任务 给定字符串,length以及可能的附加参数padchar,输出左侧填充的字符串。您可以假定长度数字等于或大于字符串的长度。padchar始终由1个字符组成。 测试用例 left_pad("string", length, ("padchar")) === "left-padded string" left_pad("foo", 5) === " foo" left_pad("foobar", 6) === "foobar" left_pad("1", 2, "0") === "01" left_pad("1", 2, "-") === "-1" 这是代码高尔夫球,因此字节数最少的提交将获胜!
27 code-golf  string 

4
将字符串映射到希尔伯特曲线
让我们将一些字符串映射到2d空间(分形样式)。您的任务是计算希尔伯特曲线并沿其放置一个字符串。 任务 任务是获取单行输入字符串,并沿希尔伯特曲线将其布局到足以容纳它但不更大的位置。尝试使字节数尽可能少;毕竟这是 代码高尔夫! 条件 空格要用空格填充,但在行尾不需要填充。 该行的开始应在左上角,结束应在左下角。 您可以创建一个程序或函数。 可能会出现一些新的测试用例,所以不要硬编码任何东西! 奖金 注意:奖金堆栈如下:-50% & -20% on 100B= -20% on 50B或-50% on 80B= 40B。 -50%如果输入是多行字符串,请反向进行此过程以创建原始输入。奖金测试用例:仅使用现有的(包括奖金测试用例!) -20%如果从输出中去除所有不必要的空格(例如,在一行的末尾)。 -5%如果您不污染全局名称空间(您知道我的意思!) 测试用例 abcdefghijklmn adef bchg nij mlk The quick brown fox jumps over the lazy dog. Thn f ju ewooxpm qckr rs ui btevo hlaz e y …

21
重新实现wc coreutil
这种挑战是相似的这个旧的,但与规范的一些不明之处敲定并不太严格的I / O需求。 给定仅由可打印ASCII和换行符组成的字符串输入,输出其各种度量(字节,字,行数)。 您必须输出的指标如下: 字节数。由于输入字符串保持在ASCII之内,因此这也是字符数。 字数。这是wc“单词:”的定义,它是非空格的任何序列。例如,abc,def"ghi"是一个“单词”。 行数。这是不言自明的。输入将始终包含尾随换行符,这意味着行数与“换行数”同义。尾随换行符不会超过一个。 输出必须完全复制默认wc输出(文件名除外): llama@llama:~$ cat /dev/urandom | tr -cd 'A-Za-z \n' | head -90 > example.txt llama@llama:~$ wc example.txt 90 165 5501 example.txt 请注意,行数是第一个,然后是字数,最后是字节数。此外,每个计数必须用空格填充,以使它们都具有相同的宽度。在上面的示例中,5501是具有4位数字的“最长”数字,因此165用一个空格和90两个空格填充。最后,所有数字都必须连接成一个字符串,每个数字之间要有一个空格。 因为这是code-golf,所以以字节为单位的最短代码将获胜。 (哦,顺便说一句……您不能在wc命令中使用该命令。以防万一,这还不是很明显。) 测试用例(\n代表一个换行符;您可能还需要一个额外的尾随换行符): "a b c d\n" -> "1 4 8" "a b c d e f\n" -> " 1 …
27 code-golf  string 

7
胡萝卜人气统计
在PPCG聊天室的第十九个字节中,使用脱字号^(或红萝卜)是一种表示您同意之前发表的评论的一种方式。 脱字符号消息仅由N个^字符组成(其中N为正整数),表示与第N个先前的消息一致。因此,单个^表示与之前的消息^^一致,表示与消息两个^^^一致,表示与消息三个一致,依此类推。 另外,当插入符号消息X同意(又指向)另一个插入符号消息Y时,则称X与Y同意的消息相同。可能有多个层次,最后,所有插入符号消息都表示与一个非插入符号消息一致。 例如,如果聊天记录如下:(每行一条消息) I like dogs [line 1] I like cats [line 2] ^ [line 3] ^^^ [line 4] ^^ [line 5] I like turtles [line 6] ^ [line 7] ^^^ [line 8] ^^ [line 9] 然后,第1、2和6行是非插入符号消息,所有其他都是指向非插入符号消息的插入符号消息: 第3行直接指向第2行。 第4行直接指向第1行。 第5行指向第3行,第3行指向第2行。 第7行指向第6行。 第8行指向第5行,第5行指向第3行,第3行指向第2行。 第9行指向第7行,而第7行指向第6行。 因此,包括编写非插入符号消息的用户(并假设人们不插入自己的消息),我们可以得出以下结论: 2个人同意I like dogs(第1行和第4行)。 4个人同意I like …
27 code-golf  string 

9
将随机数映射到pi
十进制的双精度表示只能保证15个小数位的精度,因此pi近似为: 3.141592653589793 您可以看到数字3在位置1, 10, 16,数字1在位置2, 4等。 挑战 您的任务是创建一个程序或函数,该程序或函数将创建一个介于0和1之间的随机双数,并将该数字的值映射到pi的值。您可以通过将不同的数字放置在随机数中pi在数字中的位置来实现。如果在pi中找不到该数字,则将其跳过,并且pi中所有不在随机数中的数字都将以表示x。从左侧开始,每个值只能使用一次。 一些示例可能会更清楚地说明这一点。在以下示例中,第一个数字是pi,第二个是随机数,最后一个是所需的输出。 3.141592653589793 0.111111111111111 x.1x1xxxxxxxxxxxx 3.141592653589793 0.531000000000000 3.1xx5xxxxxxxxxxx 3.141592653589793 0.123456789123456 3.141592653x8x7xx 3.141592653589793 0.967552381459391 3.14159265358979x 规则: 该函数不应接受任何输入(可能的异常在项目要点3中进行了说明) 输出应仅由输出字符串组成,并带有可选的换行符(也可以接受单个尾随空格) 如果您的程序没有内置的Pi值和/或RNG,则可以对Pi进行硬编码,然后将随机数作为输入。您不能对随机数进行硬编码或将Pi用作输入。 Pi的硬编码值和15个随机数字(可以跳过,0.因为您知道它在0到1之间)都将包括在字节数中。 如果您的语言没有要求的精度,则可以在以下限制下使用较低的精度 Pi的数字必须精确到您所拥有的精度 输出的值不能超过保证正确的值,即,如果精度只允许8个精确的小数,则不能输出15位数字。 即使您的程序仅支持8位数字,Pi的硬编码值也将计为16个字节(不需要小数点)。 随机数的输入值将计为15个字节(您不需要0.。这是因为精度较低的语言不应有不公平的优势。 该程序必须支持5位小数精度(至少)。 编辑:要验证答案:应该以某种方式打印随机数,但是此操作不必包含在字节数中。因此,例如,如果可以print r在脚本末尾插入a ,则该部分不会增加得分。 如果它是另一项必要操作的一部分,则不能减去这些字节。也就是说,如果代码是print pi, r,则只能减去, r。 如果你要插入的部分代码中的几个地方,请包括两个版本(一个是打印出随机数,并且不带有注释,如一个:_p和_oNo,需要打印的随机数_p确实xxx和_oNo不yyy。_p并且_oNo不会包含在字节数中。 以字节为单位的最短代码获胜。 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes …
27 code-golf  string  random  pi 

24
阿特巴什自我回文症
考虑一下Atbash转换: A|B|C|D|E|F|G|H|I|J|K|L|M Z|Y|X|W|V|U|T|S|R|Q|P|O|N 其中A⇔Z和L⇔O,例如,存在一些单词共有的有趣特性。当将某些字符串翻译成等同于atbash的字符串时,所说的翻译就是原始单词的反转。我称这些为Atbash自回文症。 例如,让我们翻译WIZARD: W→D 我→R Z→A A→Z R→我 D→W 结果是DRAZIW,它被向导反转了。因此,向导是一种atbash自我回文症。 目标给定一串可打印的ASCII字符,如果该字符串是atbash自回文,则输出或返回真实值,否则输出假值。(这是通过STDIN,最接近的等价函数,功能输入等完成的。如果您的语言不能执行任何这些操作,请考虑选择其他语言,您可以对输入进行硬编码。)您应该不区分大小写。如果输入是回文,并且不受atbash序列的影响,那么您仍然应该输出true,因为回文+本身就是回文。这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 测试用例 "Input" => true, false "WIZARD" => true "Wizard" => true // case doesn't matter "wIzArD" => true "W I Z A R D" => true "W IZ ARD" => false // the atbash of this is …

18
文字右对齐
您的工作是获取一个字符串输入和一个数字,然后将字符串向右对齐,使文本的宽度成为数字。当一行太长时,请将其断开,然后将其余部分放在下一行,重复进行直到不需要。如果一条线比宽度短,则用空格填充。可能会出现多个换行符,并且应将其与其他任何单个字符一样对待。 例如,字符串 Programming Puzzles & Code Golf 该数字5将产生: Progr ammin g Puzzl es & Code Golf 而相同的字符串和数字10将产生: Programmin g Puzzles & Code Golf 字符串 a b 而数字5会产生: a <-- note the 5 spaces b 最短的代码胜出!
27 code-golf  string 

25
反转和反转字符串
反转和反转字符串 挑战 在这个挑战中。您将要编写一个程序,该程序将输出或返回输入(反向和反向)。 首先,每个字符都应转换为其字符代码。然后,应将其转换为base-2。接下来,该字符串应颠倒。之后,字符串应取反(1-> 0和0-> 1)。最后,应将其转换回以2为基数,然后再转换回一个字符。如果某个字符导致无法打印,则可以选择输出该字符,但不必将其删除。 H -> 72 -> 1001000 -> 0001001 -> 1110110 -> 118 -> v e -> 101 -> 1100101 -> 1010011 -> 0101100 -> 44 -> , l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d l -> 108 -> 1101100 …

23
交换两个字符串的大写
your shift key is broken. wheNever you type two lines, the cApitaL LetteRs in them get swappeD. you must write a program to fiX THIS! 描述 输入是两个字符串,s1并且s2长度相等。它们每个将仅包含可打印的ASCII,并且长度至少为一个字符。您可以将它们输入为两个字符串,两个字符串的数组或带制表符或换行符的单个字符串,s1并s2用制表符或换行符分隔。 输出如下: 对于每个角色c在s1: 如果字符不是字母,则将其原样输出。 否则,如果c是字母: 在中找到匹配的字符(具有相同索引的字符)s2。 如果是大写字母,则输出c大写。 如果是小写字母,则输出c为小写字母。 否则,输出c保持不变。 然后,除了s1和以外,请执行相同的操作s2。 本质上,所有与之s1匹配的字符s2为大写的字母都应大写,并且s1在同一索引中带有小写字母的所有字母s2都应变为小写(反之亦然)。 测试用例 输入: ABCDEfghijKlMnOpqrstuvwxyz aaaaaaaaaaaaaaaa---------- 输出: abcdefghijklmnopqrstuvwxyz AAAAAaaaaaAaAaAa---------- 输入: PRogrammiNG puzZLes & CODe golf …
27 code-golf  string 

7
保证寓言
这里有很多人可能是XKCD的狂热读者。因此,我想我会挑战你们做梅根可以轻松完成的事情:制作一个脚本,生成有关计算机永远无法做的数千个令人放心的寓言。 你的剧本 可以用任何语言写 必须代码编码 必须输入stdin将要吐出的寓言数量(使用或等同于您的语言)(您可以假设此数量不会超过MAX_INT或等同)。 将输出许多随机生成的寓言。 寓言如下 以。。开始 'Computers will never ' 接下来,您可以自由选择16个独特的英语动词之一来优化程序,但必须包括code-golf和understand。 接下来,是16个唯一的英语名词之一,您可以再次自由选择以优化程序,但必须包括a salad和an octopus。 接下来,您可以自由选择16个独特的英语子句之一来优化程序,但必须包括for fun和after lunch。 以换行符(\n或等效字符)结尾 因此,例如,如果输入为2,则有效输出为 Computers will never code-golf a salad for lunch Computers will never hug a tree in vain 程序大小以字节为单位,而不是以字符为单位(因此,无Unicode乱码)。不允许出现标准漏洞。 这是我的第一个挑战,因此,如果我应该进行一些明显的更改,请发表评论。 编辑:我正在考虑从字节数中减去字典大小,以鼓励字典“压缩”。我将从未来的答案中看出这是否遥不可及;如果是这样,您可以指望奖金。

30
将一串二进制字符转换为ASCII等效项
取一串用空格分隔的二进制字符,然后将其转换为ASCII字符串。 例如... 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 将转换为... Hello World 二进制字符串将存储在名为的变量中s。 这是一个代码高尔夫挑战,因此最短的解决方案将获胜。

30
将C标头名称转换为C ++标头名称
在C标准库中,标头名称以.h后缀结尾: stdio.h 在C ++中,这些标头名称以另一种形式可用,但带有c前缀: cstdio 编写一个将第一种形式转换为第二种形式的函数。您可以就地进行转换,也可以保留原始字符串不变并返回新字符串。无论您选择哪种语言感到自然。 该代码必须正确编译/解释。编译器警告是可以接受的。 这是您的基准C解决方案。它有70个字符,并生成有关以下内容的警告strlen: void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';} 最短的解决方案(以字符数衡量)获胜。 更新:如果您选择的语言不支持功能,则可以接受整个程序。 更新:正如FUZxxl所建议的,这是C标准库中头文件的完整列表: assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h 具体来说,没有标题名称,其中包含多个点。

30
生成包含每个字母4个副本的字母
请注意,这与四次打印字母不同。 此任务是编写一个程序以在标准输出上生成英文字母的每个字母的四个副本,每行一个字母: A A A A B B B B 等等 输出应在每个字母之后包含换行符。 最好使用无额外输出的大写字母;但是,如果大写/剥离会延长您的解决方案,则可以使用小写字母和/或多余的空格。 编辑添加:解决方案必须足够完整才能执行。我应该能够调用该语言的实现,从答案中粘贴代码并获得结果,而无需键入任何其他代码。 上面的完整性问题是在C解决方案的上下文中提出的。当然,在代码高尔夫网站上必须有一个常规的惯例或约定吗?如果是这样,我很乐意屈服于社区准则。但这是我的看法: 特别是对于C语言,您需要在代码周围包括(并计数)main(){... },因为它不会以其他方式编译。#include <stdio.h>只要没有问题,只要代码仍然可以编译,就发出警告。通常,编译语言需要可编译单元。 如果有一种直接执行表达式的方法,则可以产生期望结果的裸表达式是可以接受的。例如,如果该语言具有REPL。所以,你可以不用提交哈斯克尔main=只要它确实可以工作于书面,例如该ghci提示。但是,由于这意味着let要声明,因此坚持使用runhaskell格式可能是一个净赢。 同样,由于我们不处理任何输入,因此awk脚本应位于BEGIN(或END假设stdin附加到/dev/null)块中。 等等

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.