Questions tagged «code-generation»

对于希望答案产生代码的挑战。

8
广义奎因发生器
挑战 在此挑战中,您将指定源语言 S和目标语言 T。您的任务是P用该语言编写以下程序S。如果输入了有效Q语言的程序T作为输入P,它将以有效R语言T输出没有输入和输出的有效程序Q(R),即Q应用于的源代码的程序R。此外,您应该在答案中提供一个简单的示例程序Q(越有趣,越好,尽管您对此没有得分),结果程序R以及的输出R。这是代码高尔夫球,因此是P获胜的最短代码。 换句话说,这对于编写一个可以创建任意类型的广义quines的“通用quine构造函数”是一个挑战。 澄清说明 您的源语言和目标语言可能相同。 程序P应采用一个字符串作为输入(来自STDIN或等效的字符串),并输出一个字符串(至STDOUT或等效字符串),每个输出程序也应如此R。 输入程序Q还应该将一个字符串转换为另一个字符串,但是它们的形式更加灵活:它们可以是字符串到字符串的函数,可以使用特定名称修改变量的代码段,可以使用目标语言来修改数据堆栈的代码段有一个,等等。您还可以Q通过声明例如可能不包含任何注释来进一步限制的形式。但是,您必须能够将任何可计算的字符串到字符串函数实现为输入程序Q,并且必须明确说明它们的功能以及对它们施加的进一步约束。 输出程序R实际上应该是一个(通用的)quine,所以除非Q这样做,否则它不得读取任何输入(用户输入,文件等)。 不允许出现标准漏洞。 一个例子 假设我选择Python作为源语言,选择Haskell作为目标语言,并且进一步要求输入程序应该是String -> String名为的函数的单行定义f。如果我提供反向字符串程序 f x = reverse x 作为我的Python程序的输入P,它将输出另一个Haskell程序的源代码R。该程序将的源代码打印到STDOUT R,但相反。如果P赋予身份功能 f x = x 作为输入,输出程序R是一个quine。

9
明智的数字
明智是我前一段时间设计的一种简单的按位语言。它基于Python的按位运算。它有几个操作,其中大多数与Python中的等效符号相同或非常相似。 : 复制堆栈顶部 ? 将堆栈顶部旋转到底部 ! 将堆栈底部旋转到顶部 [ ] 在栈顶不为零时循环 ~不是栈顶(-(n+1)) -否定堆栈顶部(-n) >将堆栈顶部向右移一次(n//2) <将堆栈顶部向左移一次(n*2) ^xor堆栈的前两个项目(与Python相同) |或堆栈的前两个项目(与Python相同) &和堆栈的前两个项目(与Python相同) 用Wise制作整数非常简单,您可以将设为0 ::^并以递增,~-因此您可以设为0并将其递增一堆。但是,如果我们删除-内容,将会变得更加有趣。 我们仍然可以使用剩余的运算来计算每个数字。例如这里是3 ~<<~ 蒂奥 之所以起作用,是因为~将零(一个无穷大的0位字符串)变成负的一个(一个无穷大的1位字符串),每个都在末尾<附加一个0位,完成后,我们将~其每个都变成一个0s 字符串,然后是一个2 1s。 ,或者像大多数人所说的那样3。 任务 编写一个程序,当给定一个正整数时,将输出一个Wise程序,该程序将创建一个数字n而不-在其源代码中使用数字(输出的源代码,您可以使用-在自己的源中使用)。您可能假设堆栈顶部已经有一个零。 这是代码 源代码,而不是 元代码源,因此您应力争将生成的源代码(不一定是输出)最小化。 输出示例 此列表并不详尽,它们只是可能的输出 1 -> ~<~ 2 -> ~<~< 3 -> ~<<~ 4 -> ~<~<< 5 -> ~<~:<<| 6 -> …

11
输出一个程序,该程序输出一个程序……输出PPCG
挑战: 编写一个代码,该代码在执行时将输出可以用另一种语言执行的第二个程序的源代码。第二个程序应该输出可以用第三种语言执行的第三个程序的源代码,依此类推。最后一个程序应输出PPCG一个可选的单行尾换行符。 获胜者将是使用最多语言的作品。第一个程序的代码长度将成为平局。 重要规则: 没有程序可以相同 每种语言只能在一种源代码上运行。在链中的两个位置使用相同的语言而不中断它应该是不可能的(请参见示例)。 缩短的链条不是断裂的链条。如果您可以在其他地方使用一种语言,并且最终结果仍然是PPCG,则该语言无效 语言的所有版本均视为唯一语言(但请记住规则2) 例子: 无效的提交: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")打印print'disp("PPCG")' Python 2:print'disp("PPCG")'打印disp("PPCG") 八度:disp("PPCG")版画PPCG 这可以正常工作,但是:您可以在Python 2中运行第一个和第二个代码而不会中断链,因此这违反了规则2。 有效分数为3的提交: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")打印print'disp("PPCG")' Perl:print'disp("PPCG")'打印disp("PPCG") 八度:disp("PPCG")版画PPCG 这是与无效示例完全相同的代码。不同之处在于,我们选择的语言符合规则2:您不能在Perl / Octave中运行第一个代码,在Python 3 / Octave中运行第二个代码,也不能在Python 3 / Perl中运行最后一个代码。即使Python 2可以运行第一个程序,这也是有效的,因为我们还没有使用Python 2作为其中一种语言。

9
元多语奎因
在使用PPCG时,我注意到奎因问题和多语种问题非常流行。同样,问题的元解决方案,即生成解决问题的程序的脚本,往往会得到社区的很多积极反馈。因此,我创造了这个挑战,实现了这三个想法。 然后,作为读者和代码高尔夫球爱好者,您的任务是创建一个尽可能短的脚本,该脚本可以在两种语言A和B中运行以为A和B生成奎因。当您的程序以语言A运行时,它应该生成一个程序使用语言B 而不是语言A的程序,反之亦然。语言A和B可以是同一语言的不同版本,但要记住,生成的Quines仅应在其中一种版本中起作用。 请记住,应该将标准漏洞视为封闭的,并且仅允许使用适当的奎因。 祝你好运,最少的角色获胜!

4
不断增长的奎因序列
您将编写一个p1 p2 ... p10满足以下属性的10个程序的序列: pK打印pK+1为K从1到9 p10 版画 p10 当第一个K程序连接在一起,产生的程序p1...pK打印p1...pK。 每个程序的pK字节大小必须大于以前的程序pK-1。 所有程序必须使用相同的语言。 Q允许内置的奎因功能(例如,多种语言)。 您的分数是10个程序的字节数之和。由于只有十个程序,因此您必须使代码尽可能短。祝好运。

2
字符串到图像
一点背景: 当我第一次了解Brainf * ck时,我做的第一件事就是编写一个Java应用程序,该程序将接收一个字符串并创建一个经过某种程度优化的程序来打印该字符串。 最近,我一直在和Piet玩耍,并且一直在做同样的事情。我已经认识到Piet是一种相当有趣的语言,为这项挑战增添了一些力量。 因此,我想向SE的朋友们挑战。让我们看看您可以用这种语言做什么。 挑战 编写一个程序或函数,该程序或函数需要一些非空的ASCII字符字符串。处理该字符串,以便生成一个Piet程序,该程序将打印该字符串并终止。 输出是最适合您的任何格式的Piet源图像。PNG是首选,但不是强制性的。 Piet功能可以在这里进行测试。 Piet代码必须自己生成输出字符串。不允许用户输入。 只能使用Piet认可的颜色,如下所示: 由于这是一次人气竞赛,因此优胜者将通过投票选出。领带将被源代码的大小打破。 我将根据输出图像的创造力酌情授予奖励积分。这些毕竟是图片。

4
计算实际数字
定义 正整数n是一个实际数字(OEIS序列A005153),前提是所有较小的正整数都可以表示为的不同除数之和n。 例如,18是一个实际数字:其除数为1、2、3、6、9和18,小于18的其他正整数可以形成如下: 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

4
将Fractran转换为Brainfuck
背景 Fractran是John Conway发明的深奥的图灵完备的编程语言。Fractran程序由分数的有序列表组成。该程序以一个整数作为输入开始。程序的每次迭代,都会在列表中搜索第一个分数,以便将该数字乘以该分数会生成另一个整数。然后从列表的开头开始,用新的编号重复此过程。当列表中没有可以与数字相乘的分数时,程序将终止并给出数字作为输出。 Fractran具有图灵完备性的原因是因为它模拟了套准机。数字的素数分解存储了寄存器的内容,而除法和乘法是有条件地从寄存器中进行加减的一种方法。我建议阅读Wikipedia文章(链接到上面)。 挑战 您的任务是编写尽可能最短的程序,该程序可以将来自STDIN的有效Fractran程序作为其唯一输入,并向模拟Fractran程序的STDOUT生成有效的BF程序。使用BF模拟Fractran程序的方式有两种。 注意:您的答案不是BF程序。您的答案是从任何给定的Fractran程序生成BF程序的代码。目的是使BF程序与Fractran程序等效。(从技术上讲,您可以参加高炉比赛,但这很难) 选项1 您的程序应输出执行以下操作的BF程序: 从STDIN中以相应的ASCII字符的形式获取正好1个数字(由于BF输入的工作方式),这是Fractran程序的输入。 以相应的ASCII字符的形式将精确的1数字打印到STDOUT,这是Fractran程序的输出。 此选项旨在表示Fractran虚拟机的确切输入和输出。 选项2 程序生成的BF代码应执行以下操作: 通过对已经编码在内存中的数字进行质因子分解来进行输入(在运行程序之前)。如果输入为28(2 * 2 * 7),则第二个单元格中的值为2,第七个单元格中的值为1(指针从单元格0开始)。所有其他单元将为零。 程序终止时,通过将输出的质数分解编码在内存中来给出输出。如果输出为10,则像元2和5中的每个像元都必须为1。所有其他素数像元必须为零。其他单元格的内容无关紧要。 此选项表示Fractran语言背后的计算模型。 规则与要求 输入(程序顶部)将是STDIN上的分数列表。每行将有一个小数,在分子和分母之间带有逗号。空行表示输入的结尾。分数将始终减少到最低的条件。 程序的输出应该是单行有效的BF程序,输出到STDOUT。该程序应该能够根据两个选项之一模拟该特定的Fractran程序。对于任何输入,生成的BF程序应能够产生与Fractran程序相同的输出。 您必须说明选择的选项。 您可以选择BF存储器和磁带上的边界以及它们是否在包装 代码高尔夫。同样,输出的BF程序的大小无关紧要,仅执行转换的程序的大小无关紧要。 程序只能由可打印的ASCII组成 如果我在任何地方都模棱两可,请不要犹豫。这是一个非常复杂的挑战,难以描述。 另外,请为以下输入发布程序生成的BF代码,以提供一种简便的方法来检查程序是否正常运行: 33,20 5,11 13,10 1,5 2,3 10,7 7,2 此程序在数字的二进制扩展中计算1的数量。但是,输入和输出的格式很奇怪(与所有Fractran程序一样)。输入的形式为2 ^ A,而输出的形式为13 ^ B。

13
逆排列索引
介绍 具有n个元素的列表的字典排列可以从0到n编号!-1.例如3!= 6个置换(1,2,3)将是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 将排列应用于列表时,其元素的排列顺序与排列中的数字相同。例如,将置换(2,3,1)应用于l = (a,b,c)yield (l[2],l[3],l[1]) = (b,c,a)。 排列的逆定义为颠倒此操作的排列,即应用排列,然后其逆(反之亦然)不会修改数组。例如,(2,3,1)is 的逆(3,1,2),因为将其应用于(b,c,a)yields (a,b,c)。 同样,应用于排列本身的排列的逆值会产生整数1… n。例如,应用(3,1,2)到(2,3,1)产率(1,2,3)。 现在,我们将函数revind(x)定义为索引为x的排列的逆排列的索引。(如果您有兴趣,这是A056019。) 由于与指数置换我只修改了最后ķ列表中的项目当且仅当 0≤ 我 < ķ!,我们可以添加任意数量的元素到列表的开始,而不会影响revind(我)。因此,列表的长度不影响结果。 挑战 您的任务是实现revind(x)。您将编写一个完整的程序或函数,以单个非负整数x作为输入/参数,并以单个非负整数输出/返回结果。 输入和输出可以是0索引或1索引,但是它们之间必须保持一致。 禁止按索引生成排列,返回排列的索引或找到逆排列的内建函数。(允许生成所有排列或下一个排列的构建体。) 适用标准代码高尔夫球规则。 例子 下面的示例是0索引的。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 …
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

2
给定一个真值表,输出一个满足它的Stackylogic程序
Stackylogic是我在上一个挑战中提出的一种编程语言:运行Stackylogic。请阅读该帖子以获取完整的详细信息和示例,但是下面解释了它的工作方式: Stackylogic采用0和1来输入和输出单个0 或1完成时。 程序由仅包含字符01?以及其中一行<的末尾恰好包含一个字符的行组成。行不能为空,并与该行<必须至少有一个0,1或 ?之前。 这是一个示例程序,用于计算两位的NAND: 1 ?< 11 ? 0 程序中的每一行都被视为一个堆栈,其底部在左侧,顶部在右侧。隐式地,在程序的第一行之前和最后一行之后有一个空栈(即空行)。 在<运行程序时,称为光标,标记堆栈开始。执行过程如下: 将顶部字符从光标当前指向的堆栈中弹出。 如果该字符为?,则提示用户输入a 0或a,1并像该字符一样进行操作。 如果字符是0,则将光标向上移动一个堆栈(到当前行上方的行)。 如果字符是1,则将光标向下移动一个堆栈(到当前行下方的行)。 如果光标移动到的堆栈为空,则输出从堆栈弹出的最后一个值(始终为a 0或1),然后结束程序。 否则,如果光标移动到的堆栈不为空,请返回步骤1并重复该过程。 应对这一挑战的关键是,所有Stackylogic程序都等同于一个真值表。输入一些预定数量的布尔值,并确定性地输出一个布尔值。 因此,您的任务是生成一个满足或模拟的Stackylogic程序,即与任何给定的真值表具有相同的输出。但是Stackylogic 可以模拟任何真值表并不明显,因此这是归纳法的证明: 基本情况 两个0输入真值表是始终输出0或 的表1。这些表的Stackylogic等效项 分别为0<和1<。 归纳步 假设Stackylogic可以模拟任何N输入的真值表。令M = N + 1。 M输入表T可以表示为两个N输入表T 0和T 1以及附加输入位B。当B为0时,使用T 0的结果。当B为1时,将使用T 1的结果。 例如,对应于伪代码的3输入真值表 if B: result = x OR y else: result = …

12
沙米尔的秘密分享
给定n(玩家数量),t(阈值)和s(秘密),输出n由Shamir的秘密共享算法生成的秘密。 算法 出于这一挑战的目的,将在GF(251)(size的有限域251,也称为整数mod 251)中进行计算。通常,将选择该字段,使其大小比的素数大得多n。为了简化挑战,字段大小将保持不变。251选择它是因为它是8位无符号整数可以表示的最大质数。 生成t-1(包括)范围内的随机整数[0, 250]。标明这些一个1通过一个T-1 。 构造一个t-1使用次多项式s为恒定值,并从步骤1中的功率的系数的随机整数x:F(X)= S + X *一个1 + X 2 * A 2 + ... + X 叔1 * a t-1。 (含)范围内(f(z) mod 251)每个输出。z[1, n] 参考实施 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input is taken …
17 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 

3
查找字符串中的模式
在这种挑战下,您的任务是找到具有给定结构的子字符串。 输入项 您的输入应为两个非空的字母数字字符串,一个模式 p和一个text t。这个想法是,的每个字符都p代表一个连续的非空子字符串,t该子字符串彼此相邻出现,并p表示它们的串联。相同的字符对应于相同的子字符串。例如,模式aa代表任何非空正方形(通过将较短的字符串与其自身连接而获得的字符串)。因此,模式aa可以匹配子字符串byebye,并且每次a匹配bye。 输出量 如果文本t包含p匹配的子字符串,则您的输出应为该子字符串,并:在与的字符相对应的字符串之间插入冒号p。例如,如果我们有t = byebyenow和p = aa,那么bye:bye它是可接受的输出。匹配子字符串可能有多个选择,但是您只能输出其中之一。 如果t不包含匹配的子字符串,则您的输出将是悲伤的表情:(。 规则和说明 的不同字符p可以对应相同的子字符串,因此p = aba可以匹配字符串AAA。请注意,这些字符必须对应于非空字符串;特别是,如果p长于t,则输出必须为:(。 您可以编写完整的程序或函数,还可以更改两个输入的顺序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 以格式给出pattern text -> output。注意,可能存在其他可接受的输出。 a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> re:re:re xx ABAAAB -> A:A MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA x33x 10100110011001 -> 10:1001:1001:10 …
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

13
创建一个FizzBu​​zz编译器
欢迎来到编译器高尔夫的世界。您的任务是编写一个程序,该程序会生成另一个程序,以按规范播放FizzBu​​zz的变体。 您的编译器 编写一个编译器,以生成符合规范的FizzBu​​zz程序。此变体的规范以整数/字符串对数组的形式表示。 输入可以采用任何方便您的语言的形式。(我的示例使用n:xxxx,但这只是出于说明目的。) 每次调用编译器时,每个整数输入只能使用一次。 每对的整数将具有至少一个值。 每对字符串仅由四个ASCII字母组成。 输出必须是符合以下规则的单个完整程序。 输出可以是任何方便的形式,只要它是文本程序即可。(因此,没有返回的lambda表达式。) 对于不符合上述规则的输入,行为未定义。 您生成的FizzBu​​zz程序 编译器生成的程序将使用单个整数n作为输入。它将输出一个从1到n的数字序列,并在需要时用FizzBu​​zz字符串替换数字。 生成的程序必须使用与编译器相同的语言。 输入n可以采用适合您的语言的任何形式。 n的值至少为1。 输入编译器的至少一个整数的倍数的数字必须替换为所有与这些整数结合在一起的字符串。 不能用FizzBu​​zz字符串替换的数字必须以十进制ASCII输出。 例如; > GenFizzBuzz 3:Fizz 5:Buzz > a.out 5 1 2 Fizz 4 Buzz 计分 您的条目将根据编译器生成的程序的长度加上编译器的长度进行评分。使用以下每个参数多次运行编译器,然后将生成的程序的长度与编译器的长度相加,以得出分数。 只是计数。(无输入-生成的程序将在没有替换的情况下从1到n计数。) 只是高尔夫。(1:Golf-生成的程序将输出n次“ Golf” 。) 经典FizzBu​​zz。(3:嘶嘶声,5:嗡嗡声) (请注意,编译器需要为任何有效输入生成代码,而不仅仅是列出的这些。)

2
编译正则表达式
在此任务中,您必须编写一个程序来读取正则表达式,并生成另一个程序,该程序输出该正则表达式是否接受输入字符串。输出必须是使用与提交相同的语言编写的程序。 输入值 输入是与以下ABNF匹配的正则表达式r(初始生产规则为REGEX): REGEX = *( STAR / GROUP / LITERAL / ALTERNATIVE ) STAR = REGEX '*' GROUP = '(' REGEX ')' LITERAL = ALPHA / DIGIT ALTERNATIVE = REGEX '|' REGEX 如果输入与此语法不匹配,则程序的行为未定义。 解释 将输入解释为正则表达式,其中*的Kleene-star(表示重复左参数零次或多次)|是替代方法,(并且)组且根本没有运算符串联在一起。分组优先于星形,星形优先于串联,串联优先于替代。 如果正则表达式匹配整个字符串,则认为该字符串可以接受。 输出量 该程序的输出是另一个与您的提交使用相同语言编写的程序,该程序在运行时以实现定义的方式读取字符串s,输出r是否接受s然后终止。输出可以以用户定义的方式完成,尽管对于接受和拒绝的程序必须只有两个不同的输出。 您可以假定输出程序的输入从不超过2 16 -1字节。 限制条件 您的提交或提交的任何程序均不得使用内置功能或 匹配正则表达式 转换正则表达式 编译正则表达式 从语法生成解析器 简化问题,使您的提交变得微不足道 计分 …

7
写出最长周期为500字节的迭代奎因
您的工作是创建最长周期的迭代quine,其中序列中每个程序的长度以500字节为界。 也就是说,如果重复以下步骤: 从您的初始程序开始 运行当前程序 返回步骤2 您最终将回到原始程序。循环中的程序数量就是您的分数,您正尝试将其最大化。 这些程序都不会引发任何错误。每个程序也必须以相同的方式运行(例如,没有不同的版本,实现,编译器选项,平台等)(编辑:是的,最后一个包括任何外部状态,例如伪随机数生成器的外部状态)语句。每次运行后都必须“重置”外部状态。如果您使用的是真正的随机数,则以最坏的情况为准。) 将此挑战与最长周期的迭代方法(除了100与500)不同的是,循环中的每个程序也必须等于或小于500字节。这意味着最长的周期为(256 ^ 501-1)/ 255或更小。当然,这是一个很大的数字,但是就计算所需的代码量而言,并不是那么大。因此,挑战是要尽可能多地使用(256 ^ 501-1)/ 255个可能性,而不是忙碌的海狸挑战。 程序不得访问其自己的源代码。但是,如果需要,可以允许使用空程序(只要遵循其他规则)。 由于手动检查程序很困难,因此您可以使用理论方法计算出分数。您必须在程序中包含分数和正确性的说明。如果您无法计算出分数,则可以使用循环中程序数量的下限作为实际分数。当您找到更好的下限时,或者如果您找到确切的实际分数,则可以更新此内容。 这是代码挑战,因此得分最高! 编辑:建议您用科学计数法写下您的分数,以使答案更容易比较。也可以使用其他形式的乐谱,这尤其好,尤其是如果它们更清楚地与您的程序相关联时。此外,鼓励读者编辑以前的答案以符合此要求。

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.