整数序列中的代码字


15

介绍

Pareidolia:来自古希腊语;παραpara,“并发,并排”)+ εἴδωλονeídōlon,“ image”)。倾向于将模糊的刺激解释为观察者已知的东西,例如将火星上的标记解释为运河,看到云中的形状或听到音乐中的隐藏信息。资料来源:维基词典

例如:

在此处输入图片说明

旁白:来自古希腊;παραpara,“并发,并排”)+ λόγοςlógos,“语音,演说,单词,...”)。倾向于以任意字符序列感知单词,例如在代码高尔夫程序中。资料来源:是的,我编造了这个词(实际上,@ Martin指出,该词还具有其他含义)。

例如:

    df4$/H)hEy_^p2\
    jtK2$)look|x1$

挑战

编写一个程序,以正整数作为输入,生成一个整数作为输出,并在代码中包含一个英文单词。输入输出关系必须对应于OEIS中可以找到的整数序列。

规则

  • 仅允许该列表中的单词。诚然,这是任意的,但至关重要的是,我们都同意接受哪些词。就此而言,此列表可能与其他列表一样好。
  • 单词需要通过串联至少两个函数名称或语句来形成。例如,如果您的语言具有一个称为的函数correlation,则不能原样使用。串联必须严格:单词的各个部分之间不应出现其他符号。例如,bro~ken不会算作单词。
  • 案例是不重要的:既validvaLiD是可以接受的。
  • 字符串中的单词不计算在内。组成单词的字母必须是所选语言中的函数或语句,即实际执行的东西。例如,将不允许以下代码:'deoxyribonucleic'~1,其中'...'为字符串,~丢弃先前的内容,1仅打印number 1
  • 单词的每个字母都应该是必要的。这意味着从单词中删除单个字母应该会更改输入输出关系。这包括输出不同的序列,或输出任何其他东西,或不产生输出,或引起错误。
  • 除数据类型或内存限制外,任何正整数都应可接受作为输入,并应产生输出。
  • 对应于输入的输出123,...应当对应于出现在序列OEIS。不应产生其他输出;仅整数,可能带有尾随或前导空格。
  • 输入和输出可以是函数参数或stdin / stdout。

得分了

分数计算为总代码长度减去最长单词长度(以字符为单位)的两倍。或等效地,非最长单词字符数减去最长单词的长度。

最低分获胜。

例子

考虑一种具有以下功能的假想后缀语言cAt:计算平方;$:加1。

cAt将是一个有效的程序(其输出对应于序列149,...,这是A000290),它会有得分-3。

cAt$也将是有效的(序列2510,...,这是A002522),与分数-2。

c$At 无效,因为这里唯一的单词是“ At”,并且是由单个函数或语句产生的。


我认为这应该是一场人气竞赛。
MCMastery '16

5
@MCMastery这不会是一个很好的人气竞赛。(大多数挑战不会。)
Alex A.

但是,这基本上仅限于高尔夫语言。
ericw31415

Answers:


11

果酱,-20

COUNTErREVOLUTIONARIES],

输出序列A010861中的第n个元素。

COUNTE                      e# push values of six preinitialized variables
      r                     e# read a token of input
       REVOLUTIONARIES      e# push values of 15 other preinitialized variables
                      ]     e# wrap whole stack in array
                       ,    e# get length

从单词中删除字符会产生完全不同的序列A010860。这两个序列之间有一个非常有趣的关系:在每个索引n处,A010860(n)互斥于A010861(n)!这背后必须有一些深层的数学原因。

在这里尝试。


1
我发现了另一个奇怪的数学关系:如果从A010861序列中减去A010860序列,则每个索引的结果始终等于1!令人着迷...
门把手

这将很难被击败:-)
路易斯·门多

哦,大写..好主意:)
Martin Ender

10

果酱,-5

limpet;

A010051:打印0合成数字和1素数。

我花了很长时间才找到一些得分不高的东西,并且在删除任何字母时都会折断。除去任何东西m引发错误,而删除m则会使程序变成身份函数。

li  e# Read input and convert to integer.
mp  e# Check for primality.
et  e# Get current datetime as a list.
;   e# Discard the datetime again.

在线尝试。


顺序的美丽选择!:-)
路易斯·门多

8

05AB1E -4 -11

代码,打印A010869(常数30):

ASYNcHRonouSlyI)g

先前的代码:

DoGS

说明:

D     # Duplicate top of the stack
 o    # Pop a, push 2**a
  G   # For N in range(1, 2**a):
   S  # Push all chars seperate from the top of the stack

打印A010879序列。


到目前为止,这是最有趣的顺序!
路易斯·门多

2
划掉的

6

MATL,-6

INhale

在线尝试!

生产序列123,...( A000027

删除任何字母都会更改输出,或者使程序等待不存在的第二个输入,或者产生错误。

说明

该程序只是吸入一个数字,经过一些摆弄之后,将其不变地呼出。

I    % produces number 3
N    % number of elements in stack: produces number 1
h    % concatenates horizontally into array [3, 1]
a    % true if any element is nonzero. So it gives true (or equivalently 1)
l    % produces number 1
e    % triggers implicit input and reshapes into a 1x1 array. So it leaves input unchanged

5

Pyth,1

*QhSatan0000
   Satan

说明?

       n00   - 0 != 0 (0) 
      a   0  - abs(^-0) (0, Required so it doesn't print out a random 0)
     t       - ^-1 (-1, required or will output 0 all the time)
    a      0 - abs(^-0) (1, Required so counts in right direction, would also print out a random 0)
   S         - 1-indexed range ([1], required so next command works properly)
  h          - Get the head (if `S` missed, will out 2)
*Q           - Multiply by Q

1,2,3,4,5 ...

顺序A000027

潜意识信息?决不。

在这里尝试。


4

贾普特-6

NuLLIFIED)r^

输出A004453:N和12的和(N XOR 12)。在线测试!

注意:OEIS序列的索引为0,因此输入0将产生第一项。

怎么运行的

        // Implicit: N = array of inputs
Nu      // Push the following things to N:
LLIF    // 100, 100, 64, 15,
IED     // 64 again, 14, and 13.
)r^     // Reduce by XORing (using ^ between each pair)
        // The reduction goes as follows: U, U^100, U, U^64, U^79, U^15, U^1, U^12.

真好!什么时候可以解释?
路易斯·门多 Luis Mendo)

@LuisMendo当然可以。它非常简单,但是我还没有发现更复杂的东西。
ETHproductions 2016年

@LuisMendo更新。这有点有趣。
ETHproductions 2016年

确实!但是显然删除Y产生相同的输出吗?(除非我做错了)
路易斯·门多

@Luis更好吗?
ETHproductions 2016年

3

头颈得分-4

exit

这映射到Brainfuck程序,+-.,该程序读取单个字符并进行打印,从而计算A000030。删除任何字符显然会破坏它。

还有marshal,-<>+-.),它是有效的,-.,但是与任何OEIS序列都不对应。


2

x86机器码,得分-4

代码的十六进制转储:

53 51 55 41 53 68 69 65 73 74 51 58 83 c4 14 c3

或者,在代码页437中

SQUAShiestQXâ─¶├

汇编代码:

push ebx
push ecx
push ebp
inc ecx
push ebx
push 0x74736569
push ecx
pop eax
add esp, 0x14
ret

一个功能 为其参数加1的函数

删除A将其变成身份功能。删除其他任何字节都会使堆栈混乱,从而导致调用函数崩溃或错误行为。

我很确定可以提高分数,但这可能取决于要求的解释。例如,使用单词SQUEAMIShness给出一个程序,该程序先增加然后减少ebp寄存器。删除其中任何一个是否会导致崩溃?最简单的测试程序不使用ebp寄存器,所以也许它不...为了避免这种疑问,我使用了一个较短的词。



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.