Questions tagged «lisp»

这项挑战与Lisp语言族有关。请注意,通常不建议要求答案使用特定语言的挑战。

30
追加字符串长度
挑战: 给定s字符a- z,A- Z,0- 上的字符串9,将其长度附加s到其自身,将长度中的其他字符计为的总长度s。 输入: 只是任意长度的字符串(可以为空)。 输出: 相同的字符串,但其长度附加到末尾。代表长度的字符也应算作长度的一部分。如果要附加多个有效长度,请选择最小的长度(有关示例,请参见测试用例)。 测试用例: INPUT -> OUTPUT // Comment aaa -> aaa4 -> 1 // Empty string aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above aaaaaaaaa -> aaaaaaaaa11 a1 -> a13 // Input …
51 code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

1
麦卡锡的LISP
麦卡锡的1959 LISP 1959年初,约翰·麦卡锡(John McCarthy)撰写了一篇具有开创性的论文,其中仅定义了9种原始函数,这些函数组合在一起仍然构成了当今所有LISP类语言的基础。该文件可在此处数字化: http://www-formal.stanford.edu/jmc/recursive.pdf 你的任务是全面落实正是在1960年的论文中描述McCarthy的LISP解析器和解释:也就是说,功能QUOTE,ATOM,EQ,CAR,CDR,CONS,COND,LAMBDA,和LABEL都应该发挥作用。考虑到答案的正确性,本文将优先于本挑战性文章,但我尝试总结以下九个功能。请注意,该语言将为ALL CAPS,并且无需进行错误检查,所有输入均应假定为有效。 种类 麦卡锡的LISP中只有两种类型:原子和链表,它被递归地定义为头(可以是列表或原子),以及头连接到(尾)的列表。NIL具有既是原子又是列表的特殊属性。 根据论文,原子名称将仅由大写字母,数字和空格字符组成,尽管连续空格的字符串应仅视为一个空格,而所有前导和尾随空格字符均应删除。实施例等效原子名称(替换空格字符下划线): ___ATOM__1__ = ATOM_1。示例不等效的原子名称:A_TOM_1 != ATOM_1 列表用括号表示NIL,每个列表的末尾都包含一个隐含符号。列表中的元素用逗号隔开,而不是像大多数现代Lisps一样用空格隔开。因此,清单(ATOM 1, (ATOM 2))将是{[ATOM 1] -> {[ATOM 2] -> NIL} -> NIL}。 QUOTE: 接受一个参数,该参数可以是一个原子(单个元素)或一个链表。精确返回参数。 测试用例: (QUOTE, ATOM 1) -> ATOM 1 (QUOTE, (ATOM 1, ATOM 2)) -> (ATOM 1, ATOM 2) ATOM: 接受一个参数,该参数可以是一个原子(单个元素)或一个链表。T如果参数是原子,则返回(true),如果参数不是原子,则返回(NILfalse)。 测试用例: (ATOM, …

9
蛇化字符串
修饰后的字符串如下所示: T AnE eOf ifi ing h s x l A k e r isI amp Sna dSt 你的任务 取一个字符串s和一个size n,然后输出连串的字符串。输入ThisIsAnExampleOfaSnakifiedString和3将产生上面的示例。 技术指标 s 只会在代码点33和126之间(含端点)包含ASCII字符(不包含空格或换行符)。 s 长度在1到100个字符之间。 n是一个整数,代表每个输出字符串段的大小。组成“蛇”中曲线的每一行字符(上/下或左/右)都是n字符长。有关示例,请参见测试用例。 n 介于3到10之间(含3和10)。 输出字符串始终开始指向下方。 每行上都可以使用尾随空格。 在输出末尾也可以尾随换行符。 不允许前导空格。 code-golf表示以字节为单位的最短代码获胜。 测试用例 a 3 a ---------- Hello,World! 3 H Wor e , l llo d! ---------- ProgrammingPuzzlesAndCodeGolf …
35 code-golf  string  ascii-art  code-golf  code-golf  string  balanced-string  decision-problem  code-golf  string  geometry  grid  code-golf  tips  lisp  code-golf  quine  tips  king-of-the-hill  code-challenge  math  code-golf  string  palindrome  math  fastest-code  code-golf  string  counting  code-golf  code-golf  internet  code-golf  quine  source-layout  hello-world  code-golf  math  number  sequence  arithmetic  code-golf  ascii-art  grid  code-golf  number  grid  code-golf  string  crossword  code-golf  code-golf  ascii-art  grid  counting  code-golf  code-golf  math  sequence  arithmetic  number-theory  code-golf  code-golf  graphical-output  geometry  random  code-golf  ascii-art  grid  counting  code-golf  string  ascii-art  code-challenge  test-battery  code-golf  string  code-golf  ascii-art  kolmogorov-complexity  code-golf  interpreter  code-golf  math  sequence  code-golf  math  primes  set-partitions  code-golf 

3
Tiny Lisp,微小的口译员
Lisp程序员吹嘘Lisp是一种功能强大的语言,可以通过很少的原始操作集来构建。让我们通过打高尔夫一种叫做方言的口译员来付诸实践tinylisp。 语言规格 在本规范中,任何结果被描述为“未定义”的条件都可能在您的解释器中做任何事情:崩溃,静默失败,产生随机的gobbldegook或按预期工作。此处提供了Python 3中的参考实现。 句法 tinylisp中的标记是(,)或一个或多个可打印ASCII字符的任何字符串,括号或空格除外。(即以下正则表达式:[()]|[^() ]+。)任何完全由数字组成的令牌都是整数文字。(前导零都还好。),其中包含非数字字符的任何标记是一个符号,甚至是数字好看的例子一样123abc,3.14和-10。所有空格(至少包括ASCII字符32和10)都将被忽略,除非它们分隔标记。 tinylisp程序由一系列表达式组成。每个表达式可以是整数,符号或s表达式(列表)。列表由括在括号中的零个或多个表达式组成。项目之间不使用分隔符。以下是表达式示例: 4 tinylisp!! () (c b a) (q ((1 2)(3 4))) 格式不正确的表达式(特别是括号不匹配的表达式)会产生不确定的行为。(参考实现自动关闭打开的parens,并停止对不匹配的关闭parens进行解析。) 资料类型 tinylisp的数据类型是整数,符号和列表。尽管内置函数和宏的输出格式未定义,但它们也可以视为一种类型。列表可以包含任意数量的任何类型的值,并且可以任意嵌套。必须至少从-2 ^ 31到2 ^ 31-1支持整数。 空列表(()也称为nil)和整数0是唯一在逻辑上被视为false的值。所有其他整数,非空列表,内建函数和所有符号在逻辑上均为真。 评价 程序中的表达式将按顺序求值,并将每个表达式的结果发送到stdout(稍后会详细介绍输出格式)。 整数文字求值。 空列表()将自动求值。 一个或多个项目的列表将评估其第一项并将其视为函数或宏,并以其余项作为参数来调用它。如果该项目不是函数/宏,则行为未定义。 符号将作为名称求值,并在当前函数中给出绑定到该名称的值。如果该名称未在当前函数中定义,它将在全局范围内求值为其绑定的值。如果未在当前或全局范围内定义名称,则结果是未定义的(参考实现给出错误消息并返回nil)。 内置函数和宏 tinylisp中有七个内置函数。函数先对每个参数求值,然后对它们应用一些运算并返回结果。 c-缺点[命令列表]。接受两个参数,一个值和一个列表,并返回通过将值添加到列表的前面而获得的新列表。 h-头(用Lisp术语表示为car)。取得一个列表并返回其中的第一项;如果给出nil,则返回nil。 t-tail(cdr,用Lisp术语)。获取列表并返回一个新列表,其中包含除第一项外的所有列表;如果为nil,则返回nil。 s- 减去。取两个整数并返回第一个减第二个。 l- 少于。取两个整数;如果第一个小于第二个,则返回1,否则返回0。 e-相等 接受两个相同类型的值(两个整数,两个列表或两个符号);如果两者相等(或每个元素相同),则返回1,否则返回0。未定义测试内置函数是否相等(参考实现按预期工作)。 v-评估。取得一个表示表达式的列表,整数或符号,然后对其求值。例如做(v (q (c a b)))与做是一样的(c a b); …

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\ --- …

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) …

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 

15
跟着我重复!
给定一个字符串作为参数,输出最长的不重叠重复子字符串的长度;如果没有这样的字符串,则输出零。 您可以假设输入字符串不为空。 例子 abcdefabc:子字符串abc在位置1和7处重复,因此程序应输出3 abcabcabcabcab:abcabc或bcabcaor cabcab重复,因此程序应输出6。(子字符串abcabcabcab也被重复,但是出现的部分重叠,因此我们不接受它)。 aaaaaaa:aaa例如在位置1和4处重复,因此程序应输出3 abcda:a重复,因此程序应输出1 xyz:没有重复的字符串→ 0 ababcabcabcabcab:应返回6 这是代码高尔夫球,因此最少的字节获胜。
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

8
Lisp提取任务
在Lisp样式语言中,列表通常是这样定义的: (list 1 2 3) 出于此挑战的目的,所有列表将仅包含正整数或其他列表。我们还将list在开始时省略关键字,因此列表现在如下所示: (1 2 3) 我们可以使用来获取列表的第一个元素car。例如: (car (1 2 3)) ==> 1 我们可以得到原始列表,其中第一个元素被删除cdr: (cdr (1 2 3)) ==> (2 3) 重要说明:cdr即使该列表只有一个元素,也将始终返回一个列表: (cdr (1 2)) ==> (2) (car (cdr (1 2))) ==> 2 列表也可以在其他列表中: (cdr (1 2 3 (4 5 6))) ==> (2 3 (4 5 6)) …

10
Clojure打高尔夫的秘诀
使用Clojure打高尔夫球的技巧是什么? 这个问题的目的是收集特定于Clojure的技术列表,这些技术可用于一般的代码高尔夫问题。
16 code-golf  tips  lisp 

9
球拍/计划中的高尔夫技巧
您在球拍 / 计划中打高尔夫球有哪些一般提示?我正在寻找可用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于球拍/计划(例如,“删除评论”不是答案)。 我知道Scheme和Racket(以前称为PLT Scheme)在技术上是不同的语言,但是在许多方面都非常相似,并且很多代码(我怀疑)都将按两种方式运行。如果您的提示仅适用于上述一种语言,请注意。
15 code-golf  tips  lisp 

4
那几乎是Lisp!
挑战 您的挑战是为一种类似Lisp的语言设计一个解释器,此后将被创造出来:GLisp。GLisp的程序代码将包含任意数量的由方括号表示的嵌套表达式,格式如下: (func arg1 arg2 ...) 注意,解释器必须在方括号,函数和参数之前和之后允许多余的空格字符。 种类 您将实现四种类型,整数,列表,布尔值和函数。可以使用自己的语法将整数和布尔值显式插入源代码中。您的解释器必须假设一系列数字字符表示一个整数(您不必实现显式插入负整数的语法)。您的解释器还必须假定true和false被指定为布尔值。用户无法明确定义函数,它们将始终返回单个值(任何长度的列表都计为单个值)。 功能 需要实现以下功能,格式为Function,Arity。如果Arity n以加号开头,则表示一个n或多个参数。除非另有说明,否则您可以假定赋予函数的所有参数都属于同一类型。您还可以假设如果没有为certian类型指定任何行为,则可以假定该函数的任何参数都不会属于该类型。下图将引用参数: (func argument1 argument2 ... argumentn) +,2+ 如果所有参数均为Integer类型,则必须返回参数之和 如果所有参数均为List类型,则必须按升序(arg1+arg2+ ...)返回参数的串联 如果所有参数的类型均为Boolean,则必须返回逻辑上所有参数序列 (+ 1 2 3 4 5) -> 15 (+ (list 1 2) (list 3 4)) -> (list 1 2 3 4) (+ true true true) -> true -,2+ …

13
斐波那契产品
您可以将大于0的数字分解为正Fibonacci数字的唯一和。在这个问题中,我们通过重复减去最大可能的正斐波那契数来做到这一点。例如: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 现在,我将斐波那契乘积称为与上面相同的列表,但加法运算被乘积代替。例如,f(100) = 89 * 8 * 3 = 2136。 编写一个给定正整数n的程序或函数,该函数将返回该数字的斐波那契乘积。 测试用例: 1: 1 2: 2 3: 3 4: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 

5
Lisp打高尔夫球的秘诀
这些关于在Lisp(任何方言)打高尔夫球的一般提示是什么?请为每个答案张贴一个提示,并且仅针对Lisp的方言提供答案(例如,“删除评论”不是答案)。 请张贴您的小费适用于Lisp的方言。
9 code-golf  tips  lisp 
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.