Questions tagged «parsing»

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

1
计算常见的生活游戏模式
此处的任务是从Golly .rle或纯文本文件(您的选择)中读取文件(提供您的文件名)(在STDIN上或作为命令行参数),并在其中编码的网格中识别和计数通用模式。 或者,您可以选择直接通过STDIN提供文件的内容。 您的程序应该至少能够识别和区分15种最常见的严格静物,5种最常见的振荡器以及滑翔机。 应该识别出这些振荡器的所有相位,以及滑翔机的所有四个相位。 它应该输出一个列表,其中包含每个图案的最终计数,并在单独的行上包含每个图案的名称和数量。您的程序可能会将所有这些模式都包含在输出列表中,或者仅将其中至少一个找到。 作为计数中的其他图案的一部分的图案不应该计数。(例如,信标的8单元阶段也不应计为两个街区,并且船舶领带也不应计为两艘船) 您可以假定输入已经稳定并且不包含上述集合中没有的任何模式。您可能还假设输入网格将适合1024x1024框。 这是代码高尔夫球,因此最短的程序为准。 RLE文件格式说明 RLE文件包含游程长度编码的生命网格。以开头的所有行#均为注释,应忽略。 第一行非空,非注释行的格式为x=<width>,y=<height>,rule=<rule>。就此任务而言,规则将始终为B3/S23。它可能包含在处理该行之前应删除的空格(当然,根本不需要处理此行。) 第一行之后的非注释行应视为单个字符串。该名称只能由十进制数字,字符$,,b和o和换行符组成,并且不能以数字结尾。换行符将被忽略,但是您可以假定换行符不会中断数字字符串。 这可以由单个终止!。 b代表一个死单元,o代表一个活单元,并$代表一行的结尾。任何十进制数字表示以下符号将被视为重复多次。 纯文本模式编码 另一个选择是以此处描述的另一种纯文本格式读取模式。在此编码中,关闭的单元格用连字符表示,打开的单元格用大写字母Os表示,换行符分隔行。 您可以假定所有非注释行都将用连字符填充到相等的长度。 以开头的行!是注释,将被忽略。 一些测试案例 RLE: #This is a comment x = 35, y = 16, rule = B3/S23 bo$2o$obo5$22bo$22bo$22bo2$18b3o3b3o2$22bo$22bo10b2o$22bo10b2o! 纯文本: !This is a comment -O--------------------------------- OO--------------------------------- O-O-------------------------------- ----------------------------------- ----------------------------------- ----------------------------------- ----------------------------------- ----------------------O------------ ----------------------O------------ ----------------------O------------ …

2
多项式的符号积分
将不确定的积分应用于给定的字符串。您将使用的唯一规则是这样定义的: ∫cx^(n)dx =(c /(n + 1))x ^(n + 1)+ C,n≠-1 c,C和n都是常数。 规格: 您必须能够将多项式与任何可能的特征集成: 系数,格式可能是分数(numerator/denominator)。 认识到e和π是常数,并且在其使用中,能够形成的级分或包含它们的表达式(可以像一小部分被保持(e/denominator)或(numerator/e),或者,如果在指数,x^(e+1)) 除了这两个特殊常数,所有系数都是有理数,实数。 指数,可能是分数 x^(exponent) 除了它们之外,与它们在一起e或π在其中的表达将不会出现指数。(您不必集成,例如x^(e+1),但可以集成x^(e)) 可以使用非x 1个字符的变量(即f) 这仅适用于ASCII范围65-90和97-122。 您不必使用链式规则或集成x^(-1)。 输出必须有填充(两个词之间的分隔符,即x^2 + x + C。 如果不知道如何与上述功能集成,则应打印出该程序"Cannot integrate "+input。 它必须是完整程序。 奖金: 如果您打印出用于降价格式的“漂亮”指数(而不是)x^2,则为-10%x<sup>2</sup>。 如果您打印出等式(即∫xdx = (1/2)x^2 + C),则为-10% 例子: 输入: x 输出: (1/2)x^(2) + C 输入: -f^(-2) 输出: f^(-1) …

15
计算程序的字节数
注意2:我接受了@DigitalTrauma6字节长的答案。如果有人能击败我,我将更改接受的答案。感谢参与! 注意:我将在美国标准时间15/14/15下午6:00接受答复。感谢所有的参与! 对于尚未被问到这个问题,我感到非常惊讶(或者我搜索的不够努力)。无论哪种方式,这个挑战都非常简单: 输入:字符串形式的程序。此外,输入内容可能包含也可能不包含: 前导和尾随空格 尾随换行符 非ASCII字符 输出:两个整数,一个代表UTF-8字符计数,一个代表字节计数,您可以选择顺序。尾随换行符是允许的。输出可以是STDOUT或从函数返回。IT可以采用任何格式,只要两个数字可以区分即可(2327是无效输出)。 笔记: 您可以将换行符视为\n或\r\n。 这是一个用于测试的不错的字节和字符计数器。另外,这是一个具有相同内容的元帖子(感谢@Zereges)。 I / O示例:( 所有输出均为形式{characters} {bytes}) 输入: void p(int n){System.out.print(n+5);} 输出: 37 37 输入: (~R∊R∘.×R)/R←1↓ιR 输出: 17 27 输入: friends = ['john', 'pat', 'gary', 'michael'] for i, name in enumerate(friends): print "iteration {iteration} is {name}".format(iteration=i, name=name) 输出: 156 156 这是代码高尔夫球-以字节为单位的最短代码获胜! …

24
十针保龄球得分-世界保龄球版
世界保龄球计分 许多人去了当地的保龄球中心打了几场保龄球,而且许多人仍在努力计算分数。世界保龄球馆引入了简化的计分系统,以吸引更多的人参加这项运动。该计分系统用于国际比赛。 计分系统的工作方式如下(来自Wikipedia): 世界保龄球计分系统(称为“当前帧计分” [32])按以下方式授予图钉: 罢工:30(无论随后的掷骰结果如何) 备用:当前帧的第一卷上有10多个掉落 打开:当前帧的总落差 如果您不熟悉十针保龄球,这里有个回顾。 保龄球道的尽头有10个插脚,目标是用保龄球将它们全部击倒。您得到2卷球来尝试将它们全部击倒,最好是在第一卷时将它们全部击落(称为打击)。如果确实有罢工,则说明该帧已经完成,您无需再次掷球。罢工价值30。 如果您没有全部淘汰十人,您将获得一卷。如果您击倒所有其余的引脚,则称为备用。得分价值10针+第一卷击倒的针数。例如,如果我击倒7个针脚,然后设法击倒其余3个针脚,那将值17。 如果在第二次掷骰后未能击倒全部十个骰子,则称为开架。得分值相当于该帧被击倒的引脚总数。 一个游戏中有10帧。如果您熟悉传统的保龄球计分,那么在第10帧中,World Bowling Scoring并不会增加您的得分。在传统的保龄球计分中,需要12次连续击球才能获得300分的完美分数,而世界保龄球计分仅需要连续10次击球。 挑战 您的挑战是从分数表中计算给定值的分数。 在得分表上,未命中用破折号(-),带X的罢工和带斜杠(/)的备用项表示。如果这些都不适用,那么落下数量将简单地用数字(1-9)表示。犯规和分裂也会记录在得分表上,但是您不必担心这些。 输入项 系统会为您提供一个字符串,其中包含每帧的乐谱,总共有10帧。每个帧最多可以有两个值,如果有罢工,则每个帧将只有1个值。您的输入可能是函数的字符串参数,是从文件中还是从STDIN中读取的。 例如,如果我在第一卷上按了1个销,然后按了2个,则框架看起来像“ 12”。这并不意味着12(十二),而是意味着1和2,总计为3。 如果我错过了两个滚子(装订线球)的每个销钉,它将看起来像这样的“-”(0分)。 每个帧将由一个空格分隔。 样品输入 -- 9- -9 X -/ 8/ 71 15 44 X 为了分解这个例子, 框架1(-)-两个投掷都错过了。得分0 帧2(9-)-第一局9落败,第二局错过。得分9 赛局3(-9)-第一局全败,第二局9分。得分9 赛局4(X)-强袭,淘汰了全部10人。得分30 框架5(-/)-备用,第一个错过全部,第2个落下全部失败。得分10 + 0 = 10 框架6(8 /)-备用,第一卷上有8根针,第二卷上的另一根被击倒。得分10 + 8 = …

16
简单的降价渲染
有几种方法可以在Stack Exchange网络上的帖子上创建标题。在PPCG 上最常用的格式是1: # Level one header ## Level two header ### Level three header 注意井号后的空格。另外,请注意,不包括结尾的哈希标记。 挑战: 以(可能是多行)字符串作为输入,并以以下格式输出该字符串: 如果标头为1级,则每个字母输出4 x 4次 如果标头为2级,则每个字母3 x 3次输出 如果标头为3级,则每个字母2 x 2次输出 如果一行不是标题,则按原样输出。 为了显示: --- Level 1 --- # Hello --- Output--- HHHHeeeelllllllloooo HHHHeeeelllllllloooo HHHHeeeelllllllloooo HHHHeeeelllllllloooo --- Level 2 --- ## A B C def …

22
简化矩阵输入!
我已经写了一些与矩阵有关的挑战,所有的共同点是在示例和测试用例中,我在表示矩阵时都使用了以下格式: 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 在许多语言中,这可能是繁琐的格式。 挑战: 编写一个程序/函数,该程序/函数可以采用顶部给出的形式的矩阵作为输入(直接从本文中复制/粘贴),并在下面显示的所有其他三种常规格式上输出相同的矩阵。 输入格式: 用不同数量的空格分隔的数字和代表行的换行符(请参见测试用例)。 数字之间的空格数不能保证是一致的。但是,您可以假设每列的最后一位数字对齐(如果有帮助的话)。 整数和浮点数都可以,它们可以是正数,负数或零。矩阵不会同时包含整数和浮点数。 您可以假设数字不超过10个字符,包括负浮点数的负号和小数点。 您可以假设每行和每列中的条目数相同。 不会有任何空的输入矩阵,但是可以有单个数字,或者只有一行或一列的矩阵。 在这些情况下,您可以在测试用例中显示的输出格式之间进行选择 如果程序/函数是直接从此帖子中复制并粘贴到解释器中的,则必须处理该输入(STDIN或作为函数参数或等效参数)。您可能在矩阵的前面和/或后面都有自己喜欢的东西(方括号,引号,括号),但是您必须将矩阵视为不能更改的字符序列(包括换行符)。 澄清一下:假设您的函数/程序被调用f,矩阵为: 1 -2 3 5 6 7 那么您可以像这样将矩阵作为函数参数(以及无限多个其他选项): f(1 -2 3 5 6 7) f([1 -2 3 5 6 7]) f("""1 …

4
清楚地加上括号的APL列车
在APL中,您可以编写默认的函数,称为trains。他们的工作方式与这一挑战无关。以下是将它们⍴作为函数进行分组的不同方法: ⍴ -> ⍴ ⍴⍴ -> ⍴⍴ ⍴⍴⍴ -> ⍴⍴⍴ ⍴⍴⍴⍴ -> ⍴(⍴⍴⍴) ⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴) ⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴)) ... 顺序保持不变。程序是,只要严格存在3个以上的功能,则将后3个功能分组为一个功能。如果遇到嵌套火车,我们先将其括起来,然后再继续。这是适用于的过程⍴⍴⍴⍴⍴⍴: Step 0: ⍴⍴⍴⍴⍴⍴ There are strictly more than 3 functions, repeat. Step 1: ⍴⍴⍴(⍴⍴⍴) There are strictly more than 3 functions, repeat. Step 2: ⍴(⍴⍴(⍴⍴⍴)) There are 3 or …

6
数字符-点点滴滴!
简单的部分:给定仅包含可打印ASCII字符(空格-波浪号)的输入字符串,计算每个字符的出现次数并以任何方便的格式返回结果。字符串的结果a%hda7a应类似于:a:3, %:1, h:1, 7:1, d:1。排序是不必要的,定界符和格式是可选的,但必须易于理解哪个数字对应哪个字符。输入的字符串中不得包含字符(a:3, b:0, c:0, d:1, ...不正确)。 真正的挑战: 将代码中的每个字符转换为8位二进制数(如果使用的是UTF-16或类似格式,则转换为16位),并枚举每个字符0。 对于每个字符(i是枚举数),- i%7bit 1 必须为1。这些位从右开始编号。其他所有位都可以是您想要的。 让我们以以下代码为例: [f]-xif)#f 将其转换为二进制,我们得到下面的数组。第一个数字(表示[有1在第0位置,这样一方面是OK。第二个数字(表示f有1在第1'位置,所以,一个是OK了。继续这样下去,你会看到上面的代码是有效的。 C 76543210位号 --------- ---------- [0101101 1 0-确定 f 011001 1 0 1-确定 ] 01011 1 01 2-确定 -0010 1 101 3-好 x 011 1 1000 4-好 i 01 1 01001 5-好 f …

4
将表达式转换为Panfix表示法
我正在浏览esolangs,偶然发现了这种语言:https : //github.com/catseye/Quylthulg。 关于这种语言的一个有趣的事情是,它不使用前缀,后缀或中缀,它使用 这三个名称,将其称为“ panfix”表示法。 这是一个例子。为了1+2在panfix中表示普通的中缀,它变为:+1+2+。注意操作符在操作数之前,之间和之后的状态。另一个例子是(1+2)*3。这变成了*+1+2+*3*。再次注意*关于操作数的所有三个地方情况如何+1+2+和的3。 挑战 正如您可能已经猜到的那样,此挑战中的任务是将表达式从infix转换为panfix。 一些澄清: 您只需要处理四个基本操作: +-*/ 您将不必处理那些一元版本,只需二进制 你必须处理括号 假设*/那时的正常优先级规则+-和所有左关联性。 这些数字将是非负整数 您可以选择在输入和输出中都留一个空格 测试用例 1+2 -> +1+2+ 1+2+3 -> ++1+2++3+ (1+2)*3 -> *+1+2+*3* 10/2*5 -> */10/2/*5* (5+3)*((9+18)/4-1) -> *+5+3+*-/+9+18+/4/-1-* 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

2
女士们,做点数学吧!
运算顺序PEMDAS是数学中的基本规则,它告诉我们应该执行哪些顺序运算: “括号,指数,乘法和除法以及加法和减法” 问题是,PEMDAS不是很通用!如果您想以其他顺序执行该怎么办?我们不会把括号弄乱,所以我们将它们放在第一个位置。 创建一个带有两个参数的程序: 一个字符串,告诉操作应该遵循的顺序。一些例子是"DAMES","SAD, ME","ME SAD","MEADS"。是的,空格和逗号都可以,因为这样可使顺序更容易记住。 在聊天中遵循以下建议:支持空格和逗号现在是可选的。 如果其中一个字母丢失,或者还有其他不应该出现的字母,则可以认为输入无效,并根据需要对其进行处理。 字符串或包含应求值的表达式的表达式。 以十进制数或整数形式返回表达式的结果。如果答案不是整数,则必须以十进制数形式返回。 规则: 如果您的语言更简单,可以将两个输入参数合并为一个。 它不必是字符串,但必须有字母。您不能将Addition替换为1,Division替换为2,依此类推。 您可以选择第一个输入。 该表达式从右到左从左到右求值。(规则的更改。在开始的12小时内,具有相反方向的所有提交者将被接受)。 这些操作使用以下符号:( ) ^ * / + -。例如,您不能使用¤代替+添加。 输入表达式中的空格无效作为输入 如果一元+/-直接在+或-后面,则该输入无效。考虑3+-2为无效的输入。可以按照您喜欢的方式对待它(不必产生错误)。如果+或-跟随除加号或减号之外的任何其他运算符,则按通常的方式处理:3*-3 = -9,sin(-2)=-0.909 该程序必须严格遵循字母,so "EMDAS", 1-3+4 => -6和"EMDSA", 1-3+4 => 2。 例子: Input: "EMDAS", "3+6*2/4-1" // -> 3+12/4-1 -> 3+3-1 -> 6-1 -> 5 Output: 5 …

30
分数混合不正确
分数混合不正确 在此挑战中,您将把带分数转换成不正确的分数。 由于不正确的分数使用较少的数字,因此您的代码将需要尽可能短。 例子 4 1/2 9/2 12 2/4 50/4 0 0/2 0/2 11 23/44 507/44 规格 您可以假设输入的分母永远不会为0。输入将始终采用x y/zx,y,z为任意非负整数的格式。您无需简化输出。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。

8
发现我们失踪的人
挑战 彼得再次站起来,使我们摆脱了重复的挑战! 彼得·泰勒(Peter Taylor)死了,对此毫无疑问(好吧,除了我们有很大的疑问外,……不过不要理会)。在他的记忆中,您必须编写一个程序来确定给定用户的生命。 更多信息 如果用户不被看到超过一天,则该用户将死亡,或少于一天,则该用户还活着。检查在这里找到的最后看到的部分: 输入将是一个用户ID(例如,我的ID是30525,而Peter Taylor的是194)。假设所有输入都是有效的PPCG ID。 如果用户还活着,则应输出: [User name] is alive! 在您用[User name]代替用户名而不是用户ID的地方。 如果用户已死,则应输出: Sadly, [User name] is dead. 不允许使用SE Data Explorer的 T-SQL参赛者。 获奖 以字节为单位的最短程序获胜。 排行榜 var QUESTION_ID=59763;OVERRIDE_USER=30525;function answersUrl(e){return"http://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"http://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 in …

10
创建编程语言解释器
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 任务: 您必须创建一个可以解析编程语言摘要的解释器。该语言不必很复杂,但必须包含以下语法元素: 分配和读取变量的能力(可以很简单a- z是预制变量) If语句(不需要elseif和else) 循环(计数为任意数字,不需要用户访问计数器) 带有变量(加,减,乘,除,大于/小于,等于)的简单数学 打印报表 规则: 您不得复制其他流行语言的语法。 您需要编写自己的解释器,而无需修改其他解释器。 您可以使用任何语言编写口译员。 用您的语言编写一个99瓶啤酒的示例程序(请参阅此处) 这是一场人气竞赛,因此最受好评的答案胜出。

10
解密扩展的韦氏格式
此挑战基于user48538的沙箱帖子。由于他不再活跃于此站点,因此我接手了这项挑战。 apgsearch是Conway的《生命游戏》的分布式汤搜索程序和搜索结果数据库,Catagolue使用apgcodes对样式进行分类和表示。apgcode本身使用扩展的Wechsler格式,这是Allan Wechsler在1992年开发的模式符号的扩展。 以下示例和图像取自LifeWiki。 集合中与正则表达式匹配的n个字符的字符串[0-9a-v]表示一条5行,n列宽的条带。每个字符表示对应于位串五个单元在垂直柱[ 00000,10000,01000... 00010,10010,01010,11010... 11111]。 例如,27deee6对应于重量级的太空飞船: ⎡⎣⎢⎢⎢⎢⎢⎢01个0001个1个1个001个01个1个001个1个1个001个1个1个001个1个1个001个1个00⎤⎦⎥⎥⎥⎥⎥⎥[01个1个00001个1个01个1个1个1个01个1个1个1个1个1个001个1个1个1个00000000] \begin{bmatrix} {\color{Gray}0} & 1 & 1 & {\color{Gray}0} & {\color{Gray}0} & {\color{Gray}0} & {\color{Gray}0} \\ 1 & 1 & {\color{Gray}0} & 1 & 1 & 1 & 1 \\ {\color{Gray}0} & 1 & 1 & 1 & 1 & 1 …

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.