Questions tagged «parsing»

此标签表示挑战,其中解析输入很大/挑战的主要部分。

25
扩展一个C数组
在C编程语言中,数组的定义如下: int foo[] = {4, 8, 15, 16, 23, 42}; //Foo implicitly has a size of 6 数组的大小是从初始化元素推断出来的,在这种情况下为6。您还可以以这种方式编写C数组,显式调整其大小,然后按顺序定义每个元素: int foo[6]; //Give the array an explicit size of 6 foo[0] = 4; foo[1] = 8; foo[2] = 15; foo[3] = 16; foo[4] = 23; foo[5] = 42; 挑战 您必须编写将数组从第一种方式扩展到第二种方式的程序或函数。由于您正在编写使代码更长的程序,并且您很讽刺,因此必须使代码尽可能短。 输入将是代表原始数组的字符串,而输出将是扩展的数组定义。您可以放心地假设输入将始终如下所示: <type> …
36 code-golf  string  parsing  c 

8
读取ASCII文字
受Golf启发,我使用了ASCII字母,对此挑战(几乎)是直接逆运算。 任务: 取一串ASCII文字文本,然后将文本内容输出为常规ASCII文本。 输入: ASCII艺术字的字符串。 输入将仅包含ASCII字符#,空格和4或5个换行符的实例(结尾的换行符是可选的)。所有行的长度相同。(也就是说,最后一个ASCII字母后缀空格。)如果需要,可以使用其他一些可打印的ASCII字符代替#输入。 输入将包含ASCII字母A-Z和ASCII空格(5x5的空白块)。没有标点符号。只有一行ASCII美术文字(实际5行)。将没有尾随或前导的ASCII艺术空间,也没有相邻的ASCII艺术空间。 字母大小为5x5个字符。每个字母之间有1x5的间隔。单词之间的间隔是5x5的空白块(每边+ 1x5的间隔,因为它只是另一个字母)。在结尾或开头将没有1x5空格,只有在ASCII字母之间。 输出: 包含文本的字符串,为ASCII字符A-Z+空格。如果您的解决方案更容易些,则输出也可以小写。混合大小写也是允许的。 ASCII字母: ### #### ### #### ##### ##### ### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # ## ## ##### #### …

28
请放开我!
作为代码高尔夫球手,我们不习惯发布(当然是)。我们将需要一些工具来帮助我们做到这一点。 当然,为了帮助营销一个新版本,我们需要一个漂亮而闪亮的发行版本。谁对3.0.0版感到兴奋? 任务 您的任务是编写一个程序/例程/ ...以增加版本号。 您需要增加版本号并重置“不太重要”的版本(即补丁程序版本)。 您将获得两个参数:当前版本(例如“ 1.0.3”)作为字符串,以及一个索引以了解要更新的版本(0或1索引)。 例如,0索引: next-version("1.0.3", 0) # 2.0.0 next-version("1.2.3.4.5", 2) # 1.2.4.0.0 next-version("10.0", 0) # 11.0 next-version("3", 0) # 4 next-version("1", 7) # ERROR next-version("01", 0) # ERROR 版本是一个字符串,每个部分是一个数字,用点分隔。不能有前导,尾随或连续的点(数字/点之外的任何东西)。版本字符串的大小没有限制。 ^[1-9]\d*(\.[1-9]\d*)*$ 错误情况(最后两个示例)是未定义的行为。在输入错误的情况下发生的情况与此挑战无关。 像往常一样,禁止出现标准漏洞。您可以打印或返回字符串。

18
代码罗马化
挑战在于使任何罗马数字成为您选择的语言的有效代码。 他们应该不会出现串的内部或任何类似,但工作就像任何其他记号,文字如(阿拉伯语)数字,字符或字符串; 或变量/方法/功能标识符等 例如,在Java中,以下代码必须像i初始化为那样编译并运行42: int i = XLII; 数字的实际解析是次要的,因此您可以根据需要使用库,但这是一场人气竞赛,因此鼓励创造力。 如果存在这种情况,则不能使用任何实际使用罗马数字的语言。 祝好运。

1
生成金字塔方案代码
金字塔计划是@ ConorO'Brien开发的一种语言。在金字塔计划中,您编写的代码如下所示: ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- ----- 现在,该代码具有两个明显的特性:很难解析,也很难编写。Conor解决了第一个问题,但是解决第二个问题将是您的工作。 上面的代码由PyramidScheme解释器处理为嵌套的字符串数组,如下所示: [["+", ["9123", "3"]], "3"] 您的任务是编写一个给定嵌套字符串数组的程序或函数,输出或返回重新创建的PyramidScheme代码。您可以假设输入数组将始终有效。 金字塔是等腰三角形。顶部是^,侧面与/和对角倾斜\,底部是-。两个底角为空或包含其他金字塔的起点,它们是自变量。中间充满了金字塔的名称,忽略了换行符。 解析器将代码转换为可用格式的方式如下。首先,它会扫描顶级金字塔。如果不带参数,则用单个字符串表示它并继续前进。否则,它表示为数组["name",[arg1,arg2]]或["name",[arg1]]。参数是金字塔左下角和右下角的金字塔,它们可以是字符串,也可以是如上所述的更多数组。您可能会注意到它有点像Lisp,在这种情况下,您可能还注意到了语言名称的双关语。金字塔被完全表示后,解析器将移动到下一个金字塔。 这是代码高尔夫,最短的代码获胜! 测试用例:这些不是唯一有效的输出,它们是有效输出的示例。 [["+", ["9123", "3"]], "3"] ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- …

6
评分Tarzan的奥林匹克葡萄摇摆常规
奥运会的葡萄树摆动者在标准的树上执行常规活动。特别是,“标准树” n具有0向上穿过的顶点n-1以及将每个非零顶点连接a到其n % a下面的顶点的边。因此,例如,标准树5如下所示: 3 | 2 4 \ / 1 | 0 因为5除以3时的余数为2,所以5除以2或4时的余数为1,而5除以1时的余数为0。 今年,泰山将捍卫他的金新套路,每个始于顶点n - 1,秋千到顶点n - 2,继续顶点n - 3,等等,直到最后他卸除到顶点0。 例行程序的分数是每个挥杆(包括拆卸)的分数之和,挥杆的分数是树内起点和终点之间的距离。因此,Tarzan在标准树5上的例程得分为6: 从摇摆4到3得分3分(向下,向上,向上), 从摇摆3到2得分(下降)一分, 从摆动2到1得分1分(向下),并且 从下来1,0得分为1分(下降)。 编写一个程序或函数,给定一个正整数n,该程序或函数将计算Tarzan例程在Standard Tree上的得分n。样本输入和输出: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

9
删除不必要的括号
您会得到一个由字符组成的字符串0123456789+*()。您可以假定字符串始终是有效的数学表达式。 您的任务是删除不必要的括号,假设乘法的优先级高于加法。 仅在结构上不需要括号时,才应删除括号: 由于乘法具有更高的优先级:3+(4*5)=>3+4*5 由于乘法或加法关联:3*(4*5)=>3*4*5 当它们在表达式周围多余时:3*((4+5))=>3*(4+5) 由于特定的数字值,在可以简化时应保留括号: 1*(2+3) 不应该简化为 1*2+3 0*(1+0) 不应该简化为 0*1+0 例子: (4*12)+11 ==> 4*12+11 (1+2)*3 ==> (1+2)*3 3*(4*5) ==> 3*4*5 ((((523)))) ==> 523 (1+1) ==> 1+1 1*(2*(3+4)*5)*6 ==> 1*2*(3+4)*5*6 1*(2+3) ==> 1*(2+3) 0*(1+0) ==> 0*(1+0) (((2+92+82)*46*70*(24*62)+(94+25))+6) ==> (2+92+82)*46*70*24*62+94+25+6

26
数字总和斐波那契
我们都熟悉斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 但是,相反,f(n) = f(n-1) + f(n-2)我们将对前2个条目进行数字求和。 序列应仍以开头0, 1,之后差异会迅速显现。此列表的索引为0,也可以使用索引为1的状态。 f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 f(3) = 2 # 1 + 1 f(4) …

20
从我深奥的代码中解析注释
本周初,我们学习了如何格式化深奥的语言进行评论。今天,我们要做相反的事情。我需要您编写一个程序或函数来解析一些注释良好的深奥代码并解析出注释,仅返回代码。使用上一个挑战中的一些示例,下面是经过注释的代码: a #Explanation of what 'a' does bc #Bc d #d e #Explanation of e fgh #foobar ij #hello world k #etc. l #so on mn #and op #so forth 您需要执行以下操作以提取代码。首先,删除注释字符(#),其前面的空格以及注释字符之后的所有内容。 a bc d e fgh ij k l mn op 然后,将每行向上折叠为单行。例如,由于b是第二列在第二行,我们一旦崩溃起来,这将是上线的第二列一个。同样,c将放在第一行的第三列中,并将d放在第四行中。对每个字符重复此操作,您将得到: abcdefghijklmnop 重要说明:似乎简单的解决方案是删除注释,删除每个空格并加入每一行。这不是有效的方法!因为原始代码中可能有空格,所以使用这种方法会去除它们。例如,这是一个完全有效的输入: hello #Line one #Line two world! …

30
ASCII三角形
您的任务是编写一个打印ASCII三角形的程序或函数。他们看起来像这样: |\ | \ | \ ---- 您的程序将采用单个数字输入n,并带有约束0 <= n <= 1000。上面的三角形的值为n=3。 ASCII三角形将具有n反斜杠(\)和竖线(|),n+1线和破折号(-),并且每行除最终行外还将具有等于行号(从0开始,即第一行为行0)的空格。 。 例子: 输入: 4 输出: |\ | \ | \ | \ ----- 输入: 0 输出: 在此测试用例中,输出必须为空。没有空格。 输入: 1 输出: |\ -- 输入和输出必须完全是我指定的方式。 这是代码高尔夫球,因此请争取尽可能短的代码!
30 code-golf  ascii-art  code-golf  rubiks-cube  code-golf  path-finding  maze  regular-expression  code-golf  math  rational-numbers  code-golf  kolmogorov-complexity  graphical-output  code-golf  tips  code-golf  string  permutations  code-golf  sorting  base-conversion  binary  code-golf  tips  basic  code-golf  number  number-theory  fibonacci  code-golf  date  code-golf  restricted-source  quine  file-system  code-golf  code-golf  math  code-golf  ascii-art  code-golf  math  primes  code-golf  code-golf  math  matrix  code-golf  string  math  logic  factorial  code-golf  palindrome  code-golf  quine  stateful  code-golf  interactive  code-golf  board-game  code-golf  math  arithmetic  code-golf  string  code-golf  math  matrix  code-golf  math  abstract-algebra  polynomials  code-golf  date  code-golf  string  array-manipulation  sorting  code-golf  game  code-golf  string  code-golf  ascii-art  decision-problem  code-golf  number  sequence  code-golf  code-golf  code-golf  sequence  fibonacci  code-golf  math  geometry  random  code-golf  code-golf  math  decision-problem  fractal  rational-numbers  code-golf  number  number-theory  code-golf  combinatorics  permutations  card-games  code-golf  math  sequence  array-manipulation  fibonacci  code-golf  sequence  decision-problem  graph-theory  code-golf  ascii-art  parsing  lisp  code-golf  string  math  natural-language  logic  code-golf  math  logic  code-golf  string  alphabet  code-golf  string  code-golf  string 

20
找到并旋转
任务 这是一个简单的挑战。您的输入是一个非空字符串,仅包含数字0123456789和哈希值#。它将仅包含一串数字,该数字编码一个非负整数,并且可以环绕在字符串的末尾,并且至少包含一个#。该整数可能具有前导零。例如##44##,013####并且23###1是有效的投入,同时###,0099并#4#4没有。 您的任务是n从字符串中提取整数,并n向右输出字符串旋转步骤。 例子 输入#1##应向右旋转1步,因此正确的输出为##1#。 输入#026###应向右旋转26步,因为前导0被忽略。正确的输出是26####0。 输入1####2的末尾包含整数21,因此应将其向右旋转21步。正确的输出是##21##。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 您可以假定数字n适合int您的语言的标准类型。相反,如果该标准int类型实现了任意精度的整数,则(理论上)您必须支持任意大的n。 测试用例 #1## -> ##1# ##4## -> #4### 1####1 -> ####11 1####2 -> ##21## #026### -> 26####0 #000### -> #000### ###82399 -> ##82399# 51379#97 -> #9751379 #98##### -> ###98### #######4## -> #4######## 60752#1183 -> 8360752#11 ####99366800## -> 366800######99 ########9##### -> ###9########## …

25
梯子上的机器人
背景 我有一个倚在墙上的梯子,还有一个可以爬上它的遥控机器人。我可以向机器人发送三个不同的命令: UP:机器人向上走了一步。如果在最高的台阶上,它会跳下,跌落并爆炸。 DOWN:机器人向下走了一步。如果它处于最低位置,则什么也不会发生。 RESET:机器人返回到最低位置。 我还可以发送一系列命令,机器人将一个接一个地执行它们。您的任务是预测其运动。 输入值 您的输入是一个正整数N,代表阶梯中的步数;一个非空字符串Cover UDR,代表我已经发送给机器人的命令。您可以假设N < 1000。机器人在梯子的最低位置初始化。 输出量 可以保证机器人会在某个时候爬上最高的台阶并爆炸。您的输出是在此之前执行的命令数。 例 考虑输入N = 4和C = "UDDUURUUUUUUUDDDD" 所述的机器人,由表示@沿4-阶梯,移动如下: |-| |-| |-| |-| |-| |-| |-| |-| |-| |@| |-|| |-| |-| |-| |-| |-| |@| |-| |-| |@| |-| |-|| |-| |@| |-| |-| |@| |-| |-| |@| …

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 …

10
圣诞老人的决定
圣诞老人的决定: 在此挑战中,您将帮助圣诞老人确定名单上的某个人是顽皮还是好人,然后得到coal或toys。 但不幸的是,Santa的组织混乱,在他的某些条目中naughty,nice 和name字段的顺序错误。 输入值 输入将采用以下可互换格式: 该人的名字(只能包含一个冒号a-zA-Z0-9) 这个词naughty后面直接跟一个冒号和一个非负整数,代表圣诞老人抓到你调皮的次数 这个词nice后面直接跟一个冒号和一个非负整数,表示圣诞老人抓住你的好时光的次数 它们之间用单个空格(ASCII 32)隔开。 此外,该名称在名称Santa Claus->的各部分之间将没有空格SantaClaus。 奖金: (25%):他是圣诞老人,所以他需要检查列表两次,并确保没有重复项。(在这种情况下,它只会获得用户拥有的第一个分数) 例: Quill naughty:4 nice:0 naughty:0 Doorknob nice:3 naughty:2 Quill nice:6 nice:3 balpha naughty:3 pops nice:4 naughty:2 输出: 输出应包括: 此人的姓名,后跟: 如果中还有更多要点naughty,则coal: 如果还有更多要点nice,则toys。 但是如果naughty和nice相等,那么needs more data 输出示例: 有组织奖金和重复搬家奖金: Quill coal Doorknob toys balpha needs more data pops …

1
计算文本中的拼写错误;尽量减少代码中的拼写错误
编写一个需要两个输入的程序或函数: 一条短信 此 Github文件中显示的英语词典(包含约60000个单词) 并输出消息中的拼写错误数(有关定义和测试用例,请参见下文)。 您可以将字典作为函数的参数,作为程序期望找到的预定义文件,以代码中的硬编码数据或任何其他明智的方式接收。 您的代码本身应该看起来像一条短信,并且拼写错误最少。因此,您将通过将代码本身作为输入输入来计算代码的分数。 获胜者是得分最低的代码(可能的最低得分为0)。如果有多个分数相同的答案,则获胜者取决于代码大小(以字符为单位)。如果仍然有两个答案,则获胜者是较早的一个。 如果需要,可以假定输入消息为ASCII码(字节32 ... 126),其中换行符以常规方式编码(1字节“ 10”或2字节“ 13 10”),并且为非空。但是,如果您的代码包含非ASCII字符,则它也应支持非ASCII输入(以便它可以计算自己的分数)。 字符分为以下几类: 字母 a ... z和A ... Z 空格(此处定义为空格字符或换行符) 标点 . , ; : ! ? 句子结束 . ! ? 垃圾(其余所有) 甲字被定义为字母序列,这是最大的(即,既不,前面和后面通过一字母)。 甲句子被定义为不属于句结束字符的最大序列。 如果字符违反任何拼写规则,则表示拼写错误: 字母必须属于词典单词(或者换句话说:没有出现在词典中的每个长度为N的单词都算作N个拼写错误) 句子中的第一个字符(忽略任何开头的空白字符)必须是大写字母 除上一条规则指定的字母外,所有字母均必须小写 标点符号只能在字母或乱码之后使用 换行符只能在句子结尾的字符之后 消息开头和之后的空格字符不允许使用空格字符 不应有垃圾(或换句话说:每个垃圾字符计数是一个拼写错误) 另外,最后一句必须为空或仅由一个换行符组成(即,消息应以句子结尾字符和可选的换行符结尾-我们称之为规则8)。 测试用例(在每个字符下面是一个违反的规则;在后面=>是必需的答案): Here is my 1st …

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.