Questions tagged «string»

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

5
实施dog bash实用程序
dog 是一个命令行实用程序,它接受任意数量的参数,其中第一个是要写入的文本,其他则是任意多个文件。 该dog实用程序将在这些文件上等分文本。如果还有余数n,则第一个n文件会再增加一个字节 dog与catforall 相反,x以下内容应成立。 $> dog x a.txt b.txt ... $> cat a.txt b.txt ... x$> 其中...表示任意多个文件。 一个示例(12个字节,3个文件,可以平均分割): $> ./dog.py "Dogs vs Cats" a.txt b.txt c.txt $> cat a.txt Dogs$> cat b.txt vs $> cat c.txt Cats$> cat a.txt b.txt c.txt Dogs vs Cats$> 带有余数的示例(13个字节,5个文件,余数3): 9$>./dog.py "0123456789abc" a.txt b.txt …

5
Levenshtein距离偏差
用具有A给定字符串S的名称的语言编写程序,以输出另一种编程语言的名称B。的长度B必须等于该Levenshtein距离之间(缩写“LD”)A和S。要被视为一种编程语言,B必须具有esolangs页面或Wikipedia页面。 例: (Suppose the program is coded in Python) Input: Jython Output: R Input: Pyt4oq Output: Go Input: Rs7hon Output: C++ Python和之间的LD Jython为1,因此输出R 您最多只需要掩盖最多LD 12。您可以假设LD 0永远不会发生。 这是代码高尔夫球,因此以字节为单位的最短程序获胜。 (这是我的第一个挑战!感谢您的反馈) 排行榜 显示代码段 var QUESTION_ID=58974,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o …
10 code-golf  string 

7
Base85编码
挑战 编写一个程序,该程序可以接受包含任何ASCII可打印字符的单行字符串的输入,并输出以Base85编码的相同字符串(使用big-endian约定)。您可以假设输入将始终≤100个字符。 Base85指南 四个八位位组被编码为(通常)五个Base85字符。 Base85字符的范围从!到u(ASCII 33-117 )和z(ASCII 122)。 要进行编码,您需要对四个八位位组(一个32位数字)连续执行除以85的操作,然后将余数加33(每次除法后)以获得编码值的ASCII字符。例如,此过程的第一个应用程序在编码的块中产生最右边的字符。 如果一组四个八位位组仅包含空字节,则将它们编码为,z而不是!!!!!。 如果最后一个块短于四个字节,则将其填充为空字节。编码后,将从输出末尾删除与填充相同数量的字符。 编码的值应在之前<~和之后~>。 编码值不应包含空格(针对此挑战)。 例子 In: easy Out: <~ARTY*~> In: test Out: <~FCfN8~> In: code golf Out: <~@rGmh+D5V/Ac~> In: Programming Puzzles Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~> 以下代码段将编码给定输入到Base85。 显示代码段 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>String.prototype.toAscii85=function(){if(""==this)return"<~~>";for(var r=[],t=0;t<this.length;t+=4){for(var i=(this.substr(t,4)+"\x00\x00\x00").substr(0,4),o=0,n=0;4>n;n++)o=256*o+i.charCodeAt(n);var s=[];for(n=0;5>n;n++){var e=o%85;o=(o-e)/85,s.unshift(String.fromCharCode(e+33))}r=r.concat(s)}var a=4-this.length%4;return 4!=a&&r.splice(-a,a),"<~"+r.join("").replace(/!!!!!/g,"z")+"~>"};</script><style>#in,#out{margin:20px;width:400px;resize:none}</style><input id="in" type="text" value="Base85"><button onclick="$('#out').text($('#in').val().toAscii85())">Submit</button><br><textarea id="out" rows=5 disabled></textarea> Run …

4
向后关系
编写一个程序或函数,给定两个ASCII字符串A和B,它们将产生字符串,A'并且B'在公共子字符串的位置将其反转。查找过程A'如下: A' 最初是空的。 如果的第一个字符A位于中B,则找到的最长前缀A是的子字符串B。从中删除此前缀A,并将其反转添加到中A'。 否则,从中删除该第一个字符A并将其添加到中A'。 重复步骤2-3,直到A为空。 查找B'的方法与此类似。 例 让我们考虑一下字符串A = "abc bab"和B = "abdabc"。对于A',会发生以下情况: A = "abc bab":第一个字符"a"在B中,而A的最长前缀在B中发现"abc"。我们从A删除此前缀,并将其反转添加"cba"到A'。 A = " bab":第一个字符" "不在B中,因此我们从A中删除了该字符并将其添加到A'中。 A = "bab":第一个字符"b"在B中,并且在B中找到的A的最长前缀是"b"。我们从A删除该前缀,并将其反转(仍为"b")添加到A'。 A = "ab":第一个字符"a"在B中,而A的最长前缀在B中发现"ab"。我们从A删除此前缀,并将其反转添加"ba"到A'。 A = "":A为空,因此我们停止。 这样我们得到A' = "cba" + " " + "b" + "ba" = "cba bba"。对于B',过程类似: B = "abdabc" -> "a" …
10 code-golf  string 

15
7 l8r比9好吗?(七点比九点晚吗?)
这是一个相当简单的高尔夫代码挑战。给定一个ASCII字符串,您的程序将把该字符串解析为两个字符串,它将对其求值。如果第二个字符串比第一个字符串“晚”,则将返回1;如果比第一个字符串“早”,则将返回-1;如果相同,则将返回0。弄清楚“稍后”和“更早”的含义,让我们看一下ASCII字符代码。您需要比较字符串中的每个字符,将每个字符视为一个数字。后来是指较大的数字,出现在较小的数字之后。字符串将使用连字符格式化,以分隔两个输入组。 看一下这个例子: 7-9作为输入应该返回1。 7转换为ASCII代码55,然后9转换为ASCII代码57。 如57数字后所示55,9晚于7。 另一个例子: LKzb-LKaj 作为输入应该返回 -1 为此的ASCII代码序列是76-75-122-98和76-75-97-106 这是一场高尔夫挑战赛,字节计数是对参赛作品进行评分的方式。 可以接受来自95个可打印ASCII字符的任何输入,但空格和连字符除外,除了分隔输入之外,都可以使用连字符。另外,不能保证字符串的长度相同。 祝好运! 编辑:更清楚地说,每个字符将被视为数字中的数字。在这个例子中LKzb-LKaj,虽然j是迟b,z迟于a,并且由于它是一个更显著的数字,它的优先级。提供的字符串将始终至少包含3个字符,从而从此问题的范围中消除了空字符串。 编辑:这是一些更多的测试用例,为您提供帮助: A-9 -> -1 11-Z -> -1 3h~J*-3h~J* -> 0 Xv-Y0 -> 1

12
混合字符串中的字符
您必须编写一个函数/程序,该函数通过stdin/ command-line参数/ function参数接受输入,将字符串中的字符混合,然后通过来输出最终的字符串stdout。 输入将首先包含一个字符串(非空或null),一个空格,然后是偶数个全部由空格分隔的非负数。如果通过函数参数获取输入,则字符串将是参数之一,而由空格分隔的整数将是另一个。您必须在与连续的数字对相对应的索引处交换字符串的字符。 例如: Hello_world! 0 6 必须导致 wello_Horld! 假设条件 您可以在基于0的索引和基于1的索引之间进行选择,并可以假设给定的索引始终在范围内。 该字符串不得超过100个字符,并且只能包含范围!为~(字符代码0x21至0x7E,包括0x21至0x7E)的ASCII字符。请参阅ASCII表以获取参考。 一对中的两个索引可能相同(在这种情况下,该步骤不会交换任何内容)。 计分 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。 测试用例 Hello_world! 0 6 => wello_Horld! First 1 2 1 0 0 4 => tFisr (Second!$$) 8 7 10 1 => ()econd$!$S ~Third~ 0 0 6 6 0 6 6 0 => ~Third~
10 code-golf  string 

4
前奏语法检查器
Prelude是一种深奥的编程语言,对构成有效程序的内容几乎没有限制,但有不同寻常的限制。只要满足以下条件,任何可打印的ASCII文本块(“块”表示可打印的ASCII行用换行符-0x0A分隔)都是有效的: 文本的每个(垂直)列最多包含(和之一)。 忽略它们的垂直位置,the (和and )是平衡的,也就是说,每个(和恰好)在其右侧配对,反之亦然。 编写一个程序或函数,给定包含可打印ASCII和换行符的字符串,确定该程序或函数是否构成有效的Prelude程序。您可以通过STDIN(或最接近的替代品),命令行参数或函数参数进行输入。可以使用您选择的任何两个固定的 真假值将结果返回或打印到STDOUT 。 您不得假定输入为矩形。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。 例子 以下是有效的 Prelude程序(实际上,它们甚至是真正的 Prelude程序): ?1-(v #1)- 1 0v ^(# 0)(1+0)#)! (#) ^#1-(0 # 1(# 1) v # - 1+) vv (##^v^+ ? v-(0 # ^ #) ? 1+ 1-! 这是一些输入,所有输入都是无效的: #(#(##)##)##( )##(##(##)#)# #(#) )### #(## (##) (##) (#)# (##) (### …

6
实施可变长度哈希
我和我的朋友有我们用文字玩的游戏。这是一个有趣的消遣,它涉及单词中的“删除”字母,直到没有剩余为止。我真的很讨厌他比我快很多,所以实施它并让我最终击败他是您的工作。显然,由于我必须使程序尽可能容易地隐藏,因此它必须尽可能小。 这个游戏如何运作? 游戏是一个非常简单的算法。它减少了字母字符串,直到无法进一步减少为止,从而使其成为一种哈希。我们人类所做的实际游戏很难实现,但可以简化为以下算法: 首先将字母对折,然后将两部分对齐,如下所示: a b c d e f g h i j k l m z y x w v u t s r p q o n 然后,从中间开始,将正整数分配给上半部,将负整数分配给下半部: a b c d e f g h i j k l m 13 12 11 10 9 8 …

3
展开选项卡(实现expand(1))
这次您的任务是实现POSIX expand(1)实用程序的变体,该实用程序将制表符扩展为空格。 您的程序将采用制表符规范,然后读取标准输入中的输入,并用适当的空格量替换输入中的制表符以到达下一个制表符。结果应写入标准输出。 制表符规格 制表符规范由一个数字或一个逗号分隔的制表符列表组成。在单个数字的情况下,将其重复,就好像它的倍数出现在以逗号分隔的列表中一样(即4充当4,8,12,16,20,...)。逗号分隔列表中的每个条目都是一个正整数,可以选择以前缀+。甲+前缀表示在逗号分隔列表中的先前的值的相对差。列表中的第一个值必须是绝对值(即无前缀)。制表符指定下一个非空格字符的列(在扩展的制表符之后),最左边的列作为数字0。制表符应始终扩展到至少一个空格。 输入输出 您可以自行决定将Tabstop规范用作程序的第一个命令行参数,或者从标准中读取作为第一行输入(由换行符终止)。读取制表符后,将处理和扩展剩余的输入(在前一种情况下为所有输入),直到EOF为止。扩展后的输出应写入标准输出。 假定所有扩展的制表位和所有输入的最大宽度为80列。所有扩展的制表符都在严格增加。 例 Tabstop规范4,6,+2,+8等效于4,6,8,16,并且两者都输入 ab<Tab>c <Tab><Tab>d<Tab>e<Tab>f 扩展为(␣表示空格) ab␣␣c ␣␣␣␣␣␣d␣e␣␣␣␣␣␣␣f 01234567890123456 (Ruler for the above, not part of the output) 1111111 评分是纯粹的代码高尔夫;最短的代码胜出。

6
TUT语言翻译器
通过将每个字母替换为相应的“ TUT单词”,可以将文本翻译为TUT语言的书面版本,如下表所示(摘自链接文章)*: a e h hash o o u yu b bub i ay p pup v vuv c kut j jag q kwak w waks d dud k kak r rut x eks e i l lul s sus y yak f fuf m mum t tut z zuz …
10 code-golf  string 

2
电子邮件验证
编写一个函数或程序,以放松您可以忽略注释并折叠空白()和通用地址文字的方式,根据RFC 5321(在5322中找到一些语法规则)来验证电子邮件地址CFWS。这给出了语法 Mailbox = Local-part "@" ( Domain / address-literal ) Local-part = Dot-string / Quoted-string Dot-string = Atom *("." Atom) Atom = 1*atext atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. …

7
检查一串是否是一对双胞胎
说明 可以通过散布两个字母以形成一个新的字符串来打乱两个字符串,就像可以将两堆纸牌打乱形成一个单独的字符串一样。 例如,可以将字符串HELLO和WORLD改组为HWEOLRLLOD或HEWORLLLDO,或者简单地为HELLOWORLD。 这是不是一个洗牌如果没有保存的信件的原始顺序。例如,Din WORLD不能R在改组后出现。EHLLOWRDLO举例来说,这意味着即使其中包含所有原始字母,也不是HELLOand WORLD的改组。 如果可以通过改组两个相同的琴弦来构成双胞胎,则该琴弦是双胞胎的混洗。例如,ABACBDECDE是双胞胎的混洗,因为它可以通过改组ABCDE和形成ABCDE。DBEACBCADE不是双胞胎的混洗,因为它不能通过混洗两个相同的琴弦来形成。 计划详情 给定一个输入字符串,0如果不是一对双胞胎,则输出,如果不是一对双胞胎,则输出一个双胞胎字符串。 您可以假设输入字符串的长度(包括4到20个字符),并且完全由大写字母字符组成。它应该能够在合理的时间内运行,例如不到10分钟。 这就是代码高尔夫,所以最短的解决方案是成功的。 示例I / O > ABACBDECDE ABCDE > DBEACBCADE 0 > FFFFFF FFF > FFGGG 0 > ABBA 0 > AABB AB > AABAAB AAB 我有一个示例(非高尔夫)实现。

4
权衡你的话!
挑战 给定两个字符串,每个字符串的长度最多为30个,由可打印的ASCII字符(代码)组成,以最小的代码字节数将它们放在天平上!这包括以下步骤:[ 32 ,126 ][32,126][32, 126] 计算并比较琴弦的重量 选择适当倾斜的ASCII艺术比例 将两根弦放在秤上 字符串可以作为数组,两个参数或任何其他合理的方法传递。 的一个字符串的重量被定义为的该字符串的字符,其中权重的总和: 空格的权重为0() 小写字母的权重为2(abcdefghijklmnopqrstuvwxyz) 大写字母的权重为4(ABCDEFGHIJKLMNOPQRSTUVWXYZ) 所有其他符号的权重为3(!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~) 秤看起来像这样: 。_ | _- * / \ |-* / \ _- * | / \ _- * | / \ / \ | * ------ * / \ | / \ | / \ | …

16
MQTT订阅主题匹配
背景 MQTT(消息队列遥测传输)是一种基于ISO标准基于发布-订阅的消息传递协议(Wikipedia)。 每条消息都有一个主题,例如以下示例: myhome/groundfloor/livingroom/temperature USA/California/San Francisco/Silicon Valley 5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status Germany/Bavaria/car/2382340923453/latitude MQTT客户端可以使用通配符订阅消息主题: 单层: + 所有级别开始: # 例如,订阅myhome/groundfloor/+/temperature将产生以下结果(不符合项以粗体显示): ✅myhome /地面/客厅/温度 ✅myhome /地面/厨房/温度 ❌myhome / 地面 /客厅/温度 / 亮度 ❌myhome / 第一层 /客厅/温度 ❌ 车库 /地面/ 冰箱 /温度 订阅+/groundfloor/#将产生以下结果: ✅myhome /地面/客厅/温度 ✅myhome /地面/厨房/亮度 ✅车库/地面/冰箱/温度/更多/特定的/领域 / myhome / 第一层 /客厅/温度 ❌myhome / 地下室 /角/温度 更多信息在这里。 …

17
字母数字线和曲线计数
给定输入字符串,编写一个程序,输出该程序具有的线和曲线的总数。 挑战 从STDIN或任何其他输入法获取输入。 根据代码段中的下表,按此顺序STDOUT将包含在字符串中的直线和曲线的总数输出到或任何其他输出方法。 任何非字母数字字符都应忽略。 禁止出现标准漏洞。 这是 代码高尔夫球,因此最短的代码获胜。 澄清说明 线条和曲线由Stackexchange上使用的字体确定code blocks。 圆(如O, o, 0)和点(i, j)分别被视为1条曲线。 输入可以是字符串,字符列表,字符流,字节码等。 输出可以是一个整数数组,整数,逗号分隔的字符串等的元组的两个数字必须是分开的,所以104是无效的,但是10,4,10 4,10\n4,[10,4],(10, 4),等等是。 标题和尾随空白完全可以接受。 样本输入和输出 # Format: str -> line, curve hi -> 4, 2 HELLO WORLD -> 20, 4 l33+ 5pEak -> 13, 8 +=-_!...?~`g@#$%^ -> 1, 2 9001 -> 5, 3 O …

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.