Questions tagged «interpreter»

涉及为各种语言或形式编写口译员的任务。

3
实施通用机器模拟器
目的是编写一个完整的程序,用最短的代码模拟ICFP 2006中的Universal Machine。通用机具有一个非常简单的指令集,在此进行说明。仿真器必须从命令行参数读取文件名,然后以程序形式运行文件,因此您的语言必须以某种方式支持命令行参数和stdin / out。仿真器必须在合理的时间内(而不是数十年内)完成沙标。这是指令集的简短说明: 该机器有八个寄存器,每个寄存器保存一个32位无符号整数。 机器拥有一组索引的32位无符号整数单元格数组。 简而言之,分配指令返回一个不透明的32位uint,它是所创建数组的句柄,该数组具有静态大小,并保存32位uint元素。 第0个数组表示程序。它是在启动时从big-endian文件加载的。 还有一个指令指针指向0数组中的一个单元。 在每个步骤中,从指针所指向的单元中读取一条指令,并在完成任何操作之前先确定指针。 4个最高有效位代表操作码。 如果操作码为13,则接下来的3位代表寄存器,其余的25位代表写入所述寄存器的编号。 否则,9个最低有效位代表三个寄存器,即A,B和C,其中C由3个最低有效位代表。 然后根据操作码,将发生以下情况: 0. A = B,除非C == 0 1. A = B [C] 2. A [B] = C 3. A = B + C 4. A = B * C 5. A = B / C 6. …

3
Brainfuck中的按位运算符
您的任务是为以下每个二进制运算符创建一个Brainfuck程序。每个程序应从输入中获取一个或两个8位数字(A和B)并计算指定的运算: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 您不必全部实施5。得分的计算方式为: #totalCharacters + {4000 * #problemsNotCompleted} 因此,有效分数是从零(最佳)到20,000(未完成)。 我不在乎您将结果存储在哪里,也不管您是否保留输入。假设8位单元以及仅在右侧需要的空单元数。 您可能会认为数字已经在最适合您的任何内存位置中,因此您无需担心IO操作。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

14
用零填充文件
今天的任务是获取一个现有文件,并将零添加到该文件,直到达到一定大小为止。 您必须编写一个程序或函数,该程序或函数采用当前目录中文件的名称f和字节数b。在保留的原始内容的同时f,您必须在末尾写入零(空字节,而不是ascii 0),以便其新大小为b字节。 您可以假设名称中f仅包含字母数字的ascii,您对此具有完全权限,其初始大小不大于b,但可能与一样大b,并且有无限的可用磁盘空间。 您可能不会假设f它是非空的,或者它不已经包含空字节。 执行结束后,不应修改其他现有文件,也不应该存在新文件。 测试用例 f的内容| b | f的结果内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

2
解释基普尔!
介绍 Kipple是Rune Berg于2003年3月发明的基于堆栈的深奥编程语言。 Kipple有27个堆栈,4个运算符和一个控制结构。 堆栈 堆栈被命名为a- z并包含32位带符号整数。还有一个特殊的堆栈,@使输出数字更加方便。当将数字压入时@,实际上将压入该数字的ASCII值。(例如,如果您将12推到@,它将推49,然后推50。@) i在执行程序之前,将输入压入输入堆栈。解释器将i在执行之前要求存储值。执行完成后,输出堆栈上的所有内容o都会弹出以ASCII字符形式输出。由于这是Kipple唯一的IO机制,因此无法与Kipple程序进行交互。 经营者 操作数可以是堆栈标识符或带符号的32位整数。 推送:>或< 语法:Operand>StackIndentifier或StackIndentifier<Operand Push运算符将操作数向左移并将其推入指定的堆栈。例如,12>a将值12推入stack a。a>b将从堆栈中弹出最高值a并将其推入堆栈b。弹出空堆栈总是返回0 a<b相当于b>a。a<b>c从弹出最高值,b并同时推入c和a。 加: + 句法: StackIndentifier+Operand Add运算符将堆栈上最顶层项目和操作数之和压入堆栈。如果操作数是堆栈,则从中弹出值。例如,如果堆栈的最高值为a1,a+2则将3压入堆栈。如果a为空,a+2则将2推入。如果堆叠的最值a和b是1和2,然后a+b将从栈中弹出的值2 b和3推入堆栈a。 减去: - 句法: StackIndentifier-Operand 减法运算符的工作方式与加法运算符完全相同,只是它减去而不是加法。 明确: ? 句法: StackIndentifier? 如果最上面的项目为0,则Clear运算符将清空堆栈。 解释器将忽略操作符旁边不存在的所有内容,因此以下程序将起作用:a+2 this will be ignored c<i。但是,添加注释的正确方法是使用#字符。#执行前,a 和行尾字符之间的所有内容都将被删除。ASCII字符#10在Kipple中定义为行尾。 操作数可以由两个运算符共享,例如a>b c>b c?可以写为a>b<c?。 该程序1>a<2 a+a将导致a包含值[1 4](从下到上),而不是[1 3]。对于-操作员也是如此。 控制结构 Kipple中只有一种控制结构:循环。 句法: (StackIndentifier code …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

1
为2B写一个口译员
为2B写一个口译员 我喜欢大卫·卡特(David Catt)的深奥语言2B,将内存存储在磁带中,其中每个单元是一个单独的字节带(“子带”)。为此写一个翻译! 语言规范 官方规格可以在这里找到。在本说明书中,"表示范围内的数字0-9(0解释为10),_表示任意长度的字符串。每个像元都存储一个在range范围内的值0-255,上溢/下溢会像BF一样回绕。(感谢@MartinBüttner)。要将文本转换为数字0-255,请使用ASCII码。因为我找不到详细信息,所以我要说磁带长度应该255最小,但是如果您另外知道,请进行编辑。 +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | Instruction | Description | +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 0 | Zeroes the current cell and clears the overflow/underflow flag. | | { | If the current cell is zero, jump to the matching }. | | } | A placeholder for the { instruction. | …

2
写一个〜ATH口译员
流行的网络漫画《Homestuck》利用一种称为~ATH破坏宇宙的编程语言。尽管此代码挑战不是要编写一个能够消灭我们的存在的程序,但我们将破坏一些驯服(尽管不太有趣)的实体:变量。 ~ATH(读作“直到死亡”,注意~ath“ tilde ath”的工作方式)是通过创建一个名为的变量THIS,使用来执行命令EXECUTE,并使用来完成程序的THIS.DIE()。在Homestuck中使用该语言的Wiki页面可在此处找到。这项挑战的目标是创建一个~ATH口译员。 为了应对挑战,我将创建一些~ATH实际上并不存在的细节,但要使其(某种程度上)有用。 该语言仅适用于以声明的整数import <variable name>;。该变量将自动设置为0值。一次只能导入一个变量。 x可以通过写入来复制变量bifurcate x[y,z];,这将删除该变量x并将其替换为相同的变量y和z。请注意,它无法创建与已删除变量同名的变量。本质上,将重命名变量,然后创建具有不同名称的变量副本。这似乎是一个愚蠢的功能,但愚蠢是非常深刻根深蒂固的Homestuck。 语法编写上执行代码的程序x是~ATH(x){EXECUTE(<code>)}。如果要同时在两个变量上执行代码,则代码将嵌套,如下所示:~ATH(x){~ATH(y){EXECUTE(<code>)}}。中的所有命令都<code>将在x和上执行y。 现在让我们进入命令。+将相关变量加1并-减1。然后就可以了。 的最后一个特点~ATH是,它杀死了所有与之兼容的东西。变量<name>=<value>以命令格式(后跟换行符)打印[<name>].DIE();。然后,程序打印单词DIE <name>和换行符的次数等于变量值的绝对值。当同时杀死变量时[<name1>,<name2>].DIE();(只要存在,就可以杀死任意多个变量),DIE()命令将按顺序对变量执行。 范例程序 程序1: import sollux; //calls variable "sollux" import eridan; //calls variable "eridan" ~ATH(sollux){EXECUTE(--)} //sets the value of "sollux" to -2 ~ATH(eridan){EXECUTE(+++++)} //sets the value of "eridan" to 5 [sollux].DIE(); //kills "sollux", prints "DIE sollux" twice ~ATH(eridan){EXECUTE(+)} …

2
实现一个无用的解释器
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 您的任务是为Useless语言构建一个解释器: 功能要求如下: 解释器应接受所有描述的命令。 NO.,NOOP并且INCLUDE-xxx必须荣幸。 DONTUSEME(n) 必须具有其基准日期,以便可以将其轻松配置为更合理的测试目的。 INCLUDE-xxx必须能够以大致相等的概率生成任何命令。如果生成a DONTUSEME(n),则他应该为n随机选择一个较小的值。 DONTUSEME(n)Windows应该在NO.指令中保留下来。提示:为这些窗口产生一个新的过程。 BOOM!并且KABOOM!必须做一些坏事和令人恐惧的事情,并且KABOOM!必须比做坏事BOOM!。但这不能太当真,所以它不应具有破坏性,破坏性或难以撤销。请不要,不要,也不要使这些指令运行rm -rf \命令,运行叉弹,安装恶意软件,损坏文件系统中的数据,从Internet发布或下载不适当的内容,或任何其他明显滥用的内容。 TURINGVSALONZO应该像实际上正在做应做的那样运行。提示:让它随机决定它会在很长一段时间内随机睡眠还是会在短时间内随机睡眠,或者永远睡眠。 所有其他预定义的指令都应执行除上述指令以外的其他操作,并且彼此之间应有所不同,但决不要比BOOM!或差KABOOM!。它们的作用完全取决于您,但是一个简单的实现只会输出一条错误消息或其他一些文本。 您应该为用户提供一种简单的方法,以提供由解释器运行的程序。即从文件或从中读取纯文本stdin是可以的。不是从Internet上的某个加密文件中读取它。 可选的: 您可以根据需要发明一些新命令,但是它们应遵循与其他规则相同的规则。不要使用它来绕过BOOM!和/ KABOOM!或击败限制DONTUSEME(n)。如果您确实发明了新命令,请说明它们的作用。 您应该考虑一下,如果解释程序接收到带有未知命令(甚至完全无法解析的随机字节乱码)的输入,该怎么办。 尽管没有指令可以取消该DONTUSEME(n)命令,但是您可以为其添加一个kill开关。只是不要用语言公开它。 为了避免滥用,我们有一些非功能性要求: 您的输入内容必须尽可能完整且自动包含。这意味着它不应该只是某种安装程序或明显不完整的程序。这样,可以从maven Central下载和使用jQuery之类的库或程序包,但不能从自定义服务器下载任意代码和程序包。 您的条目不应从该页面或该页面的某些镜像或副本中获取任何内容,以进行某种反射或用于任何其他目的。这对于避免某些程序试图读取此问题的其他参与者答案或试图以任何方式破坏一个或多个问题至关重要。 您的解释器应该是不变的,并且不能自我修改或修改其输入文件。但是,无需更改原始文件即可创建解释器或输入文件的变体副本。 最后,考虑到: 即使答案完全符合要求,答案中的程序也将毫无用处。 语言(故意地)指定得很不够,并且答题者有很多自由可以采取,并且有动机去采用。 需求和可能的实现有很多主观要点; 这样做的目的是获得一些乐趣和创造力。 然后,这是一次人气竞赛,并且完全符合规则的最受好评的答案将获胜!因此,您不需要打高尔夫球或混淆您的答案(但是您可以根据需要这样做)。只要确保发布原创性和创造性的内容来获得赞誉,即请不要发布无聊的条目。

5
实现shell脚本的子集
这个站点存在很多问题,涉及在解释器标签中实现各种语言。但是,实际上所有这些都是深奥的语言,没有人使用。是时候为这里的大多数用户所知道的实用语言做翻译了。是的,如果您在阅读标题时遇到问题(不是您遇到的问题),则它是shell脚本。(是的,我故意挑战了,因为我对GolfScript和Befunge之类的语言感到无聊,所以我提出了一些挑战,即更实用的编程语言有更大的获胜机会) 但是,shell脚本是一种比较大的语言,因此我不会要求您实现它。相反,我将制作一小部分的Shell脚本功能。 我决定的子集是以下子集: 执行程序(但是,即使允许使用单引号,程序也只能包含字母) 程序参数 单引号(接受任何可打印的ASCII字符,包括空格,不包括单引号) 无引号的字符串(允许ASCII字母,数字和破折号) 管子 空语句 多个语句用换行符分隔 尾随/前导/多个空格 在此任务中,您必须从STDIN读取输入,然后运行每个请求的命令。您可以放心地假定使用POSIX兼容的操作系统,因此不需要Windows或类似功能的可移植性。您可以放心地假设未通过管道传输到其他程序的程序不会从STDIN中读取。您可以放心地假设这些命令将存在。您可以放心地假设不会使用其他任何东西。如果某个安全的假设被打破,您可以采取任何措施。您可以放心地假设最多15个参数,以及少于512个字符的行(如果您需要显式的内存分配或其他内容-即使C很小,我也会给C赢得成功的机会很小)。您不必清理文件描述符。 您可以在任何时候执行程序-即使在收到完整的行之后,也可以在STDIN结束之后。选择您想要的任何方法。 简单的测试用例,可让您测试外壳(请注意第三个命令后的空白): echo hello world printf '%08X\n' 1234567890 'echo' 'Hello, world!' echo heeeeeeelllo | sed 's/\(.\)\1\+/\1/g' yes|head -3 echo '\\' echo 'foo bar baz' | sed 's/bar/BAR/' | sed 's/baz/zap/' 上面的程序应该输出以下结果: hello world 499602D2 Hello, world! helo y …

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

3
BrainFlow解释器!
脑流 什么是BrainFlow? BrainFlow是BrainF ** k(BFk)的扩展,具有3个其他命令,用于增加功能和混淆。 什么命令? 除了普通的BFk命令,我们还有: ^ 根据单元格中的值跳转到单元格#。例:如果我们在单元格0处,值为4,^将使我们跳到单元格4。 = 将单元格上的值设置为该单元格的索引。例如:如果我们在4号单元格中的值为0,则=将我们的值设置为4。 & 将根据当前单元格中的值将当前单元格中的值设置为等于该单元格中的值。(这很难说,所以这里有个例子!)例如:我们在单元格#33上,当前值在此单元格为7,并将当前在单元格#33上的值设置为单元格7中的任何值。 可选挑战 完成以下任何操作将对您的字节数应用指定的奖励。 Interpreter written in BrainFlow (可以由示例解释,并且至少包含一个有意义的 ^ = 或 &): 得分/ 3 Interpreter written in BrainF**k: 分数/ 2 Doesn't contain any English letters (in either upper or lower case): 得分-20 Doesn't contain any of the BrainFlow …

6
字符串操作解释器
摘要 制作了一种新的字符串操作语言,仅使用字符$+#-!*|@>!您的任务是在尽可能少的字节中为其实现一个解释器。 输入值 字符串,是此语言的一行。可以采用任何合理的方式(标准输入,函数参数,命令行参数等)或将其用作预定义变量。如果程序要求用户输入,请接受它从stdin要求的所有用户输入,仅此而已,请参见下文。您可能会认为它是一个有效程序。 输出量 无论使用哪种语言输出,以下说明。您必须以任何合理的方式(标准输出,函数输出等)输出字符串或变量值。语言明确输出后,必须转到stdout。禁止出现标准漏洞。 语言规格 处理和语法 该语言具有非常简单的处理形式,因为它仅执行字符串操作:它以空字符串("")开头,并随每个术语进行更改。一个术语由一个或两个部分组成:一个函数(在下面),然后可能是一个参数(在下面),用于编辑其行为。术语用竖线(|)分隔。您可能会认为它不会是一个空程序,并且任何条件都不会是空的。您应该在程序末尾输出该值。 功能 该语言只有6种功能,如下所示。每个函数都接受一个或零个参数。 + 连接字符串(采用一个字符串参数,将其连接到当前值) ! 反转当前值的字符顺序(无参数) * 重复字符串(采用一个整数参数,将当前值重复多次) - 删除所有出现的值(采用一个字符串参数,从当前值删除所有出现的值) $ [pseudo-]随机改组当前值(无参数) <将当前值输出到stdout(无参数) 价值观 这些是可以传递给函数的值,由匹配它们的正则表达式表示: @[^|]*字符串文字,包括除管道以外的任何字符。它可能是空的。 #[0-9]+ 整数文字 >下一行stdin。如果与一起使用*,则转换为整数。 测试用例 ╔════════════════════════╤═════════════╤══════════════╗ ║code │input │output ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|!|+@hello|*> │13 │31hello31hello║ ║ │2 │ ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|+@abcdefg|$ │hello │hcloeebafdlg ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+@how areyou|-@o|-> …

11
模拟按位循环标记
挑战 给定两个默认I / O格式的字符串,请执行以下操作: 注意:质询将第一个字符串称为“数据”,第二个字符串称为“程序”。 将程序更改为无限字符串,该字符串就是程序无限重复(例如10-> 1010101010...)。挑战将其称为“无限程序” 当数据为非空时,请在无限程序上循环执行以下操作: 一种。如果当前命令为“ 0”,则删除数据中最左边的位。如果数据为空,则“ 0”不执行任何操作。 b。如果当前命令为“ 1”,则如果数据中最左边的位为1,则将程序中的下一个字符附加到数据中。 C。如果现在数据不为空,则输出数据。 测试用例 数据是输入的左侧,程序是右侧。 100, 0 --> 00, 0 1111, 1 --> 11111, 111111, 1111111, ... 10, 011 --> 0, 0, 0 1110, 011 --> 110, 1101, 11010, 1010... 笔记 数据和程序将仅包含0和1 对于不暂停的数据/程序,您的程序无需暂停。 数据和程序在输入中不会为空。 您可能有多个尾随和换行符 禁止标准漏洞 您可以使用任何方便的I / O格式 …

1
帮助Jason格式化他的JSON
杰森(Jason)有一个很大的JSON,但它不可读,因此需要美化它。 格式化规格 JSON有4种不同的类型: 数字;只是0-9 弦; 用双引号引起来的"字符串\ 数组;以分隔[],项目以分隔,,项目可以是以下任何类型 对象;以分隔{},格式是key: valuekey是字符串,value是这些类型中的任何一种 间距 数组之间的逗号之间应仅留一个空格 对象应该在键和值之间只有一个空格, : 缩进 每个嵌套级别比上一个缩进2个级别 每个对象键/值对始终在自己的行上。对象缩进 如果数组包含另一个数组或对象,则该数组将缩进多行。否则,数组将保持一行 规则 内置插件,其轻视这个任务都不会允许的。 一如既往,不允许出现标准漏洞 例子 [1,2,3] [1, 2, 3] {"a":1,"b":4} { "a": 1, "b": 4 } "foo" "foo" 56 56 {"a":[{"b":1,"c":"foo"},{"d":[2,3,4,1], "a":["abc","def",{"d":{"f":[3,4]}}]}]} { "a": [ { "b": 1, "c": "foo" }, { "d": [2, …
11 code-golf  string  json  code-golf  number  code-golf  image-processing  code-golf  string  code-golf  number  sequence  arithmetic  number-theory  code-golf  string  code-golf  string  counting  code-golf  ascii-art  code-golf  math  code-golf  tips  code-golf  string  code-golf  grid  graph-theory  code-golf  parsing  interpreter  brainfuck  code-golf  math  arithmetic  number-theory  programming-puzzle  c#  code-golf  dominoes  code-golf  tips  code-golf  string  grid  crossword  code-golf  string  code-golf  kolmogorov-complexity  code-golf  number  sequence  code-golf  string  math  number  number-theory  primes  fastest-code  code-golf  number  code-golf  string  code-golf  ascii-art  number  kolmogorov-complexity  code-golf  string  grid 

1
模拟Minsky套准机(II)
这是“ 模拟Minsky注册机(I)”的扩展。我不会在此处重复所有描述,因此请先阅读该问题的描述。 (I)部分的语法尽可能简单,但程序时间较长。由于这是一个标准的高尔夫网站,我们宁愿有一个高尔夫语法,不是吗? 在较高的层次上,对原始语法的更改如下: 第一行的标签是可选的 空格是可选的,除非需要分隔两个相邻的标识符 可以内联状态。为确保无歧义的解析,如果减量运算的第一个状态是内联状态,则必须将其括在括号中。这意味着任何程序都可以打成一线。 例如,在原始测试用例中,我们有: b + = a,t = 0 init : t - init d0 d0 : a - d1 a0 d1 : b + d2 d2 : t + d0 a0 : t - a1 "Ok" a1 : a + a0 a=3 b=4 在高尔夫语法中,这可以简化为: …

3
编写Clem解释器
Clem是一种基于堆栈的最小编程语言,具有一流的功能。您的目标是为Clem语言编写一个解释器。它应正确执行参考实现中包含的所有示例,可从此处获得。 像往常一样,存在标准漏洞。 按字节数最小的条目获胜。 克莱姆语言 Clem是具有一流功能的基于堆栈的编程语言。学习Clem的最好方法是clem不带参数地运行解释器。它将以交互模式启动,使您可以使用可用的命令进行播放。要运行示例程序,请键入clem example.clmwhere example是程序的名称。这个简短的教程应该足以让您入门。 主要有两类功能。原子功能和复合功能。复合函数是由其他复合函数和原子函数组成的列表。请注意,复合函数不能包含自身。 原子功能 第一类原子函数是常数。甲恒定仅仅是一个整数值。例如-10。当解释器遇到常量时,它将其推入堆栈。clem现在运行。键入-10在提示符下。你应该看到 > -10 001: (-10) > 该值001描述了函数在堆栈中的位置,并且(-10) 是您刚刚输入的常数。现在+11,在提示符下输入。你应该看到 > +11 002: (-10) 001: (11) > 请注意,它(-10)已移动到堆栈中的第二个位置,(11)现在占据了第一个位置。这就是堆栈的本质!您会注意到这-也是减量命令。无论何时-或+在数字之前,它们表示该数字的符号,而不是相应的命令。所有其他原子函数都是命令。共有14个: @ Rotate the top three functions on the stack # Pop the function on top of the stack and push it twice $ Swap the …

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.