Questions tagged «radiation-hardening»

该标签用于挑战,要求对源代码进行随机编辑时答案仍然有效。

3
高温辐射固化剂
背景 在这个站点上,我们偶尔会遇到一些问题,要求对程序进行“辐射加固”。这意味着程序必须能够删除一个或多个字节,无论删除哪个字节。 对于在编程挑战中经常遇到的任务很常见,很自然地想要制作一种特别适合这些挑战的语言。鉴于自然的方法是添加一些元数据,以使反向破坏成为可能,因此,实际上并不是真正需要设计的语言,而是一种编码。这个想法是将每个输入转换为一个字节序列,这样即使对序列稍加照射,也可以提取原始输入。 任务 编写两个程序或函数,E(编码器)和D(解码器),使得: E接受两个参数,一个八位字节序列(在本规范中称为“ 输入 ”)和一个非负整数“ radiation ”,并输出一个八位字节序列“ encoding ”。 D接受一个参数,即八位字节序列(“ encdng ”),并输出八位字节序列“ reconstruction ”; 如果同时运行E和D(使用encdng,则D的输入,通过从编码中删除不超过辐射元素(不一定连续)来选择),那么无论删除了哪些字符以形成encdng,重构都将等于输入。 澄清说明 如果您提交的功能,你不必叫他们E和D; 您可以选择最适合您的语言的名称。 “八位位组”基本上是0到255之间的整数,您可以将其编码为整数,字符或任何适合您的语言的字符。 E和D必须完全是确定性的(即给它们相同的输入将始终产生相同的输出,其中“输入”定义为E的输入和辐射,或D的编码)。特别是,E可能不会通过边信道将信息传达给D。 删除是通过删除序列的一个元素来完成的。可以考虑在编辑器中打开序列,将光标置于任意点,然后按Backspace键。如果一个元素出现多次,则可能只删除该元素的一个副本(即,同一八位位组的其他实例将不受影响)。 尽管仅根据相当短的输入量来计算分数,但是您的程序在理论上必须对任何输入量和辐射都有效。特别是,无论input中出现哪个八位字节,它都必须起作用。(很抱歉,希望使用他们知道的不可打印字符的能力不会出现在输入中,但是我需要确保输入不可压缩,以便挑战在于辐射硬化而不是压缩。) 您可以提交定义两个功能的一个文件。两个文件,每个文件都定义一个功能或都是完整程序;或三个文件,其中两个分别实现D和E(通过完整程序或通过定义函数),第三个文件是D和E通用的头文件或库。无论使用哪种提交形式,则您的编程语言实现必须能够理解两个程序而无需文件位置等其他参数(否则,按照我们的标准规则,您必须以不寻常的方式调用实现以支付字节罚款)。 胜利条件 对于每个长度和辐射,令f(长度,辐射)为编码 s 的总长度,其对应于具有长度length的所有输入以及给定的辐射。(也就是说,f(长度,辐射)= 输入总和的长度为长度 length(E(输入,辐射))。)然后令g(长度,辐射)等于f(长度,辐射)÷256 长度。换句话说,对于给定的输入长度和给定的辐射硬化要求,g是编码输出的平均长度。(理论上,您可以通过蛮力计算出来,但是以这种方式计算出您的分数可能会花费很长的时间。我希望大多数提交者能够对他们的分数做出数学上的论证。不确定,发布一个近似分数,如果另一个条目发布了相似的分数,您或其他人可以更深入地计算它。) 您的分数等于0到9(含)范围内的所有辐射的g(长度,辐射)的总和,0到99(含)范围内的所有长度的总和,加上(主要是避免硬编码,或者如果有人发现了数学上完美的编码;否则,这可能是一个最小的因素)提交给挑战的字节总数(加上对要求异常解释器标志或特定文件名之类的标准惩罚)。获胜者是得分最低的作品(被第一次提交的作品打破)。

2
编写辐射硬化的辐照器
任务是编写辐射硬化的辐射器。我到底是什么意思? 辐照器是一个程序,当给定一个字符串作为输入时,它将输出该字符串的所有可能版本,并删除一个字符。例如,给定input Hello, world!,程序应输出: ello, world! Hllo, world! Helo, world! Helo, world! Hell, world! Hello world! Hello,world! Hello, orld! Hello, wrld! Hello, wold! Hello, word! Hello, worl! Hello, world 但是,必须保护辐照器免受其辐射,因此您编写的辐照器在穿过自身时也必须生存。也就是说,当删除程序的任何单个字节时,程序仍必须正常运行。 测试用例 abc -> bc; ac; ab foo bar -> oo bar:fo bar:fo bar:foobar:foo ar:foo br:foo ba source -> ource;surce;sorce;souce;soure;sourc; 技术指标 …

1
检测您的程序是否已被突变
编写一个无错误终止的程序。 如果任何单个字节被任何其他字节替换,则程序应输出 CORRUPTED 不要从文件中读取源代码 您的程序不应产生任何其他输出 这是代码高尔夫球,因此最短的答案以字节为单位。 编辑:删除了“不损坏”要求

5
自计分程序
要输出您自己的分数,我们遇到了挑战,但似乎所有答案都只是对输出进行了硬编码,这很无聊1。因此,让我们面临新的挑战。您的程序必须输出自己的长度(以字节为单位),后跟字符串" bytes",但如果要防止硬编码的解决方案(如果我们通过删除任何一个字节来减小其大小),则新程序还必须输出其新的字节数,其后仍为" bytes"。输出不必区分大小写。您也可以选择输出尾随换行符。 您的答案将以字节计分,而字节数越少越好。 1:我实际上很喜欢那里的一些答案。

13
换位,素数,我的天哪!
任务很简单:您的程序读取一个整数作为输入,并输出它是否为质数。您可以打印“是/否”,“是/否”或明确标识结果的任何内容。 挑战在于,代码必须将其行和列进行转置。 为了排除明显的解决方案(最短的“简单”解决方案使用注释垂直逐个字符重复地进行注释),该度量与通常的代码高尔夫有点不同: 因为格式化在此挑战中非常重要,所以代码大小是在代码适合的最小矩形区域中度量的。换句话说,空格确实很重要,并且行的长度应相等(您不要为简单起见,在发布解决方案时必须实际执行此操作)。例如 int main() { return 0; } 的大小为4 * 13 = 52 (显然,它不符合以下两个条件之一:素数检测和可转位。) 最小尺寸获胜。 您可以使用任何语言和任何库函数,除非该函数的唯一目的是查找,生成或检测素数。 编辑: 虽然获胜者可能是Golfscript解决方案,但我将奖励50分以奖励最佳的C或C ++解决方案!

2
检错自我修复程序
您的任务是创建一个程序,在该程序中,如果删除了任何一个字符,它将检测到删除了哪个字符,然后将删除的字符重新插入其自己的源文件中。 例如,如果您的程序已RadiationHardened被修改为RadiaionHardened,则您的程序必须输出第5个字节(索引为0)已被修改,然后程序源必须RadiationHardened在执行后立即执行。 注释和规则 您可以假设执行前在源代码中删除了一个字符。未修改程序的行为是不确定的。 您可以假定更改后的字节将被删除,不转置,插入或替换。 如果有多个相同字符的运行,则可以报告运行的第一个或最后一个索引,但要使用的一致。例如,baaad被删除baad可以报​​告1或3(零索引),但是在整个程序中必须相同。 您无需将整个源写到其自己的文件中。您只需要重新插入已删除的字节。 与典型的辐射硬化Quines规则不同,通过读取程序自身的源代码来检测更改的字节是公平的。 您可以通过任何合理的格式输出更改后的字节索引。关于它是0索引还是1索引或任何其他符号,请保持一致。您甚至可以在模板字符串中输出数字。 这是代码高尔夫球,因此最短的程序为准。 祝好运! EDIT1:将要求从替换更改为删除 EDIT2:为重复运行添加了规则

1
使辐射硬化奎因
昨晚,我在寻找“辐射硬化奎因”挑战,但找不到。原来还没有人问!所以这里是: 您的任务是制作一个quine,这是一个非空的计算机程序,可以打印其自身的源而不读取它。另外,如果您从原始程序中删除任何一个字节,则新程序应打印原始程序的源。 这是代码高尔夫,因此答案以字节计分,而字节越少越好。

1
突变硬化的奎因
您的任务是制作一个打印出自己的源代码的程序。 “嘿,我们已经面临这个挑战,而且挑战无穷!您为什么要再挑战一个?” 您可能会问,但这将是最困难的一项(希望如此)。 您的quine必须经过“突变强化”,这意味着即使在其中的任何一个字符被复制的地方,quine也必须输出原始程序的源代码。 例如,如果您有一个quine(以下示例不是用任何语言编写的,那只是伪代码): abcd 这些程序必须全部输出abcd: aabcd abbcd abccd abcdd (在每一个这些方案,a,b,c和d各自就地复制,这意味着复制的字符在原始字符后直接放置。) 规则: 适用标准标准规则。 多字节字符算作一个字符,并且重复时该字符不会“拆分”为相应的字节。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

14
可重新排列的代码保龄球
保龄球挑战赛 无论您如何重新安排源代码,都编写一个程序或函数以产生相同的输出。(输出不能是错误) Pangram评分 您的分数就是源代码中唯一字符的数量。 带有源代码 的程序AJB得分为3A带有源代码 的程序AAJ得分为2A带有源代码的程序111得分为1 这是一个代码收集变体。得分最高的程序将获胜! (为方便起见,在此处创建了自动评分工具) 挑战规则 输入 程序/功能可以接受输入,但是这完全是可选的。 输出 此输出可以是您想要的任何内容,但应为非null,非null,非空和非错误。(因此输出必须至少为1个字节) 重新排列 无论源代码如何重新排列,输出都应该相同。例如: 程序:ABJ输出hello world,如同方案:[ AJB,JAB,JBA等] 这是一个代码收集变体。字符数最多的程序获胜!

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

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 

1
辐射硬化的环状喹poly胶
挑战 编写两个程序: 以两种不同的编程语言运行。 这些可能不是一种语言的两个版本。 当运行一个程序时,它将输出第二个程序,反之亦然。 这两个程序必须不同(不能使用多语言)。 这里是要抓住的地方: 程序必须经过辐射加固。 这意味着从两个程序中的任何一个删除任何一组nnn字符(定义如下)时,其功能均不受影响。 nnn定义为在不影响程序功能的情况下可以省略的字符数。 nnn必须至少为111。 规则 不允许出现标准漏洞。 您的程序必须是正确的循环奎因。他们可能不阅读自己的源代码。 计分过程如下: S1+S2nS1+S2n\frac{S_1+S_2}n S1S1S_1S2S2S_2 nnn 这是代码挑战,最低分获胜。 奖励 由于这个挑战很难回答,因此我将悬赏第一人回答。
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.