Questions tagged «parsing»

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

10
解码Kaadi系统
您遇到过一本古老的印度手稿,其中描述了成堆的埋藏宝藏。手稿还告诉您宝藏的位置,除了一些关键数字已间接编码到文本中。您会发现文本使用的是“ Kaadi”系统,这是更常见的“ Katapayadi”系统的受限子集。 (Katapayadi系统是一种古老的印度系统,将数字编码为字母,通常用作记忆长数字的助记符。) 您的任务是解码在Kaadi系统中编码的文本并打印出数值。 细节 输入字符 Kaadi系统基于Katapayadi系统的规则,但仅使用第一行辅音。您在此处的文字已音译为拉丁字母,并且仅包含: 元音“ a”,“ e”,“ i”,“ o”,“ u” 辅音'g','k','c','j'以及它们的大写形式(代表这些辅音的吸引形式)以及'ṅ'和'ñ'。 (如果用您的语言更方便,则可以选择将'ṅ'接收为'ng',将'ñ'接收为'ny'。) 价值分配 在这个系统中 每个辅音后跟一个元音都有一个与之关联的数字。这些是: 'k'=>1, 'K'=>2, 'g'=>3, 'G'=>4, 'ṅ'=>5, 'c'=>6, 'C'=>7, 'j'=>8, 'J'=>9, 'ñ'=>0 但是请注意,这些值仅在这些辅音后跟有元音时才适用。 kacCi具有与kaCi(ka,Ci=(1,7))相同的值,因为中间的c不带元音。 此外,两个元音的初始元音或序列代表0 aikaCi将是:ai,ka,Ci=(0,1,7) 文本中间其他任何地方的多余元音都没有值:kauCia与相同kaCi,多余元音可以忽略。 最终数值 一旦找出字母的数字值,就获得最终数字值,其顺序与这些数字相反,即文本中的第一个数字是最终值中的最低有效数字。 例如。 GucCi具有Guand Ci,所以( kakakaGo4,7),所以最终值为74. 是(1,1,1,4),所以答案是4111. guṅKo是(3,2),所以编码为23(gungKo如果使用ASCII -当量。) 输入值 包含Kaadi编码文本的字符串 将仅包含元音和上述辅音 元音总是小写,并且以不超过2个的组出现 您可以选择接受5和0的字母作为Unicode字符“ṅ”和“ñ”,或者接受与ASCII等价的“ ng”和“ ny”(它们均以小写形式表示) …

14
递归级联[N]的累积和与M次迭代
取两个正整数N,M并[N]通过M迭代创建的串联累积和。输出最后一次迭代的结果。 串联累积和的定义: 以数字开头N并定义顺序X = [N] 追加到X的累积和X 重复步骤2 M次。 向量的累加和X = [x1, x2, x3, x4]为:[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]。 N = 1和的示例M = 4: P =累积和函数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

4
解决数学问题符号
想象一下,我有无数个作业问题(!),每个问题都有一个整数。 数学问题符号是一种使用问题说明符描述问题子集的符号。 MPN表达式可以包含以下几项: 单个值。这表示一个包含数字的集合:99 -> {99}。 一个简单的范围。这表示包含从范围的开始到结束的所有数字的集合10~13 -> {10, 11, 12, 13}。如果左侧或右侧丢失,那么他们被认为是负无穷大或无穷大分别为:~10 -> {x|x ≤ 10}; ~ -> ℤ。 一个MPN表达式,后跟“跳过”和另一个MPN表达式。这代表了两组的区别:10~20 skip 12~14 -> {10, 11, 15, 16, 17, 18, 19, 20}。 两个MPN表达式,以逗号分隔。这表示两个集合的并集:1,8~9,15~17 -> {1,8,9,15,16,17}。 “跳过”运算符的绑定比逗号运算符更紧密,因此16,110~112 skip 16 -> {16,110,111,112}(16个不包括在集合中{110,111,112}中不包括16,因此排除16无关紧要。) 您也可以将表达式放在括号中以消除歧义: 1~9 skip (2~8 skip (3~7 skip (4~6 skip 5))) -> …

13
永久自修改代码
现在,我们都知道大多数语言都有非常简单的方法来“自我修改”代码。但是,如果要在磁盘上实际修改代码并编辑其中的一部分,该怎么办? 您的目标是制作打印数字的代码,然后编辑自己的文件,用斐波那契数列中的下一个替换该数字,如下所示: $ ./program 1 $ ./program 1 $ ./program 2 $ ./program 3 $ ./program 5 [etc...] 规则 您不能将代码存储在代码的“外部”。没有评论,没有告诉脚本退出,没有EOF等。 如果您的代码可以使用任何文件名,请从字节数中减去2并$BYTESNOW ($ORIGINALBYTES - 2)输入标题。(假定文件名在任何字母数字文件路径的范围内。) 您的代码必须自己将输出写入文件,而无需任何外部管道协助。 您的代码可以从一或零开始。没关系

4
制作一个简单的漂亮评论工具
挑战: 某些ascii技术很难制造,但使代码注释更易于阅读,尤其是在代码密集时。面临的挑战是制作一个简单的工具,以将带有箭头的注释转换为简单的ascii-art。要修改的注释由空注释分隔。 例如,假设Haskell注释语法,请转换为: -- -- Here's a thing -- Here's another thing -- The most important thing -- * * * -- f x=x+1*x*1*1*0 对此: -- /------------< Here's a thing -- | /-------< Here's another thing -- | | /-< The most important thing -- | | | -- v …

12
所有人都说……
目标给定不包含字符[或的文本输入],请执行以下操作: 对于Amen具有至少一个大写字母的每个实例(因此,所有Amen不包含的实例amen),都输出相同的名称Amen(保留大写)。 对于/all the people said[?: ]/i(这是一个正则表达式)的每个实例,还输出Amen(任何情况都可以)。 在每个输出之后,您可以选择任何常量分隔符,例如换行符,空格或什么都不做。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 IO范例 Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah blah blah* And all the people said? Output: …

1
计数坎宁安链
素数总是让人着迷。2300年前,欧几里得在他的《元素》中写道 质数是仅由一个单位测量的质数。 这意味着素只能被 1(或本身)。 人们一直在寻找素数之间的关系,并提出了一些非常奇怪的东西(如“有趣的”)。 例如,一个索菲·热尔曼质数是一个主要p针对2*p+1也是素数。 一个安全素是一种主要p用于哪些(p-1)/2也是黄金,而这正是一个索菲·热尔曼质数的倒退状态。 这些与我们在此挑战中寻找的东西有关。 一个坎宁安链型我是一系列素数,其中除了最后一个的每一个元素是的索菲·热尔曼质数,而除了第一个的每一个元素是一个安全的黄金。该链中元素的数量称为它的length。 这意味着我们从素数开始p计算q=2*p+1。如果也q为质数,则我们有长度为2的I型Cunnigham链。然后进行测试2*q+1,以此类推,直到下一个生成的数字为复合数为止。 II型坎宁安链是按照几乎相同的原理构造的,唯一的区别是我们检查了2*p-1在每个阶段。 坎宁安链的长度可以为1,这意味着2 * p + 1和2 * p-1都不是素数。我们对这些不感兴趣。 坎宁安链的一些例子 2启动长度为5的I型链。 2, 5, 11, 23, 47 下一个构造的数字95不是素数。 这也告诉我们,那5,11,23和47不启动类型的任何链我,因为这将有前述的元素。 2也开始长度为3的II型链。 2, 3, 5 接下来是9,这不是素数。 让我们尝试II11型(之前我们将其排除在I型之外)。 好吧,接下来是下一个,它不是素数,因此该“链”的长度为1,我们不将其计入此挑战。21 挑战 写一个程序或功能,给定一个号码n作为输入,写入/返回的起始数第n个的坎宁安链I或II型的至少长度为2,后跟一个空格,随后链的类型它开始(我或II),然后是冒号,然后是该类型链的长度。万一素数同时启动两种类型的链(类型I 和型 II型),则首先计算型链。 例: 2 I:5 请记住,这n可能是任何类型的先前启动链的一部分,在这种情况下,不应将其视为该类型链的起始编号。 让我们看看这是如何开始的 我们从开始2。由于它是第一个素数,因此我们可以确定没有链从包含的较低素数开始2。 类型I中的下一个数字将是2*2+1 == 5。5是素数,因此我们已经有了至少长度为2的链。 我们将其视为第一条链。那II型呢?下一个号码是2*2-1 == 3。3是素数,因此II型的链长也至少为2。 …

6
失控舍入错误
背景 您最近被一家小型会计师事务所雇用。会计的世界对您来说有点陌生,因此您不确定是否要遵循所有专业准则。特别是,您不知道何时应该将所有这些数字取整,以及朝哪个方向取整,因此,大多数时候您只希望将其取整,并希望取得最好的结果。 输入值 您的输入是代表简单计算的单个字符串。它包含一些由字符分隔的非负整数+-*/。字符串从左到右读取,并且普通优先级规则将被忽略,因此"23+1*3/4"表示“以23开头,加1,乘以3,再除以4”,结果为18。输入将不包含以开头的数字0(0自身除外),也不能除以零。 输出量 在计算的每个阶段,您都可以将结果向上或向下舍入为最接近的整数,或者保持原样。最后,向上或向下舍入以获得整数结果。您的输出是可能由这种计算产生的整数列表,排序后没有重复。 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 "42" -> [42] "2+0+4-0" -> [6] "23+1*3/4" -> [18] "5/2" -> [2,3] "5/2+7/3*6-1" -> [17,18,19,23] "23/2/2*30-170/3" -> [-7,-6,-2,-1,0,1,3,4] "1/3*2*2*2*2*2*2" -> [0,16,20,21,22,24,32,64] "1/3*9" -> [0,3,9]

12
脑力激荡的方向
您的任务(如果您选择接受它的话)是构建一个程序,该程序分析并评估给出方向(左或右)的令牌字符串(从左到右,具有任意长度)。这是四个可能的标记及其含义: > go right one single step < go left one single step -> go right the total amount of single steps that you've gone right, plus one, before you previously encountered this token and reset this counter to zero <- go left the total amount of single steps that …

3
取消缩音
Pyth也许是最成功的通用高尔夫球语言。尽管由于更新的语言而有所下降,但从2014年到2016年,Pyth简洁的语法,不断的更新,重载以及(对于其时代而言)许多内置函数使它成为大多数问题的最爱。 Pyth代码通常很难阅读。甚至调试模式(已编译的Python)的输出通常也由一长行组成,有时会在括号内嵌套十个深处。但是,正确格式化的Pyth可读性强。 这是一段由@isaacg在Play the Word Chain中编写的Pyth代码。 .MlZfqhMtTeMPT+Lzs.pMyQ 这样更具可读性。 .M Filter by gives-maximal-value of l Z lambda Z:length(Z) over f filter by (lambda T: q equal hM t T head-map tail T eM P T end-map Pop T) +L Append z to each element in z s .pM y Q flattened …

30
从原动力中恢复原动力
定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数p n > 1,返回素数p。 测试用例: input output 9 3 16 2 343 7 2687 2687 59049 3 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

11
解释松散范围
解释松散范围 ListSharp是一种解释型编程语言,具有许多功能,其中一个功能是基于1索引的范围创建器,其工作方式如下: 您可以将范围定义为(INT) TO (INT)或仅定义(INT)两个int可以从min到max int32值的范围 然后,您可以使用这些范围来提取数组的元素,而不必担心会超出其边界 因此: 1 TO 5 产生: {1,2,3,4,5} 3 产生: {3} 范围可以使用AND运算符相加 1 TO 5 AND 3 TO 6 产生: {1,2,3,4,5,3,4,5,6} 记住这也适用于负数 3 TO -3 产生: {3,2,1,0,-1,-2,-3} 挑战如下: 输入值 字符数组和先前定义的range子句作为字符串 输出量 范围中基于1索引位置的元素(不存在/负索引会转换为空字符) 如何取胜 作为代码高尔夫球挑战,您应该创建具有最少字节数的程序以获胜 有人指出不存在空字符,因此您应该忽略它们(我仅在此处显示它们是为了使它们更易于理解,但却使人感到困惑) 测试用例: input array is: {'H','e','l','l','o',' ','W','o','r','l','d'} range clause: "1 TO …
13 code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

1
解析一维语言
给定一个仅包含0的1、2和方括号的字符串,输出该字符串的语法树。 A 2需要2个参数-一个在左侧,另一个在右侧 A 1需要一个参数-向左或向右 A 0不需要任何参数,是基本情况 一对括号作为一个参数,并且括号的内容与字符串的其余部分分开计算。可以使用嵌套括号 输入字符串将始终是一棵完整的树,没有任何字符脱落。该字符串也只有一个正确的解决方案。请注意,这些函数是可交换的,并且参数的任何排列都是2可以接受的。您将不必处理不符合这些要求的输入。 输出语法格式将是function(arguments)递归形式 测试用例 0 --> 0 01 --> 1(0) 020 --> 2(0,0) 101 --> 1(1(0)) 0120 --> 2(1(0),0) 0120210 --> 2(1(0),2(0,1(0))) 01210 --> 2(1(0),1(0)) (020)210 --> 2(2(0,0),1(0)) ((020)20)1 --> 1(2(0,2(0,0)))

3
我爬了多少14人?
用登山术语来说,“ 14er”是指海拔在14 000英尺或以上的任何山脉。但是,还有另一个区别。要使一个高峰算作14er,它的“地理突出度”也必须达到300英尺或更多。这意味着要从一个14er爬到另一个14er,必须首先下降至少 300英尺,然后才能再次上升。举这个例子。1号线计为14000英尺,每条线计为100英尺。 /\__/\ / \ / \ 现在,这两个峰的高程足以计数,但它们之间的高程降幅不足以算作两个单独的峰。因此,其中一个算作14er,另一个算作“部分峰”。这是一个示例,其中两个峰算作两个单独的14er: /\ /\ / \ / \ / \/ \ / \ 两个14ers之间的下降也可能会出现部分高峰。这是最后一个山脉的略微修改版本: /\ /\ / \/\ / \ / \/ \ / \ 该山脉也算作两个14人。 您必须编写一个程序或函数,该程序或函数采用一个代表山脉的ascii艺术表示法,并返回该范围内有14个峰。您可以采用最方便的格式输入,包括2D字符数组,带换行符的字符串或带其他定界符的字符串。您可以假定所有输入将仅包含字符/\_,并且每行的长度将相同(包括尾随空格)。您还可以假设山脉从左下角以a /或a 开头_。 如果山峰的最后一段不在底线,则可以假定山峰仅在此之后减小,例如 / / / 算作单个14er。 您不必处理无效的山脉。 这是一些示例I / O: /\___/\_ / \ /\ …

1
解决SAS宏变量
在SAS编程语言是笨重的,古老的语言可以追溯到1966年的今天这仍然在使用。原始的编译器是用PL / I编写的,实际上许多语法都来自PL / I。SAS还具有从PL / I的语言衍生而来的预处理器宏语言。在这个挑战中,您将解释SAS宏语言的一些简单元素。 在SAS宏语言中,宏%let关键字是使用关键字定义的,并使用进行打印到日志%put。语句以分号结尾。这里有些例子: %let x = 5; %let cool_beans =Cool beans; %let what123=46.lel"{)-++; 宏变量名称不区分大小写,并且始终与正则表达式匹配/[a-z_][a-z0-9_]*/i。出于此挑战的目的,我们将讲以下内容: 宏变量只能保存完全由可打印ASCII字符组成的值,,和除外 ;。&% 值中将没有前导或尾随空格 值的长度不得超过255个字符 值可能为空 值中的方括号和引号可能不匹配 可以有任何空间量前后=的%let语句和这个空间应该被忽略 可以有空间的任何数量的终端之前;的%let声明,这个空间应该同样被忽略 当调用宏变量时,我们说它“解析”为其值。宏变量通过前置来解决&。有一个可选的结尾.表示标识符的末尾。例如, %put The value of x is &X..; 写入The value of x is 5.日志。请注意,需要两个期间,因为单个期间将被消耗&X.并解析为5。还要注意,即使我们x以小写字母定义,&X也是如此,&x因为宏变量名称不区分大小写。 这就是棘手的地方。&可以将多个s串在一起以解析变量,并且&处于同一嵌套级别的s可以同时解析。例如, %let i = 1; %let coolbeans1 = broseph; …

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.