给定一个正整数数组A作为输入,生成一个程序,当重复k时,该程序输出数组的kth(1-索引)值。
例如,如果数组是[1,11],则输出应该是一个输出1的程序,当重复两次时,输出11。类似于Python3中的print(end="1");的代码工作:print(end="1");打印1和print(end="1");print(end="1");打印11
解决所有测试用例的最小代码长度之和获胜。您的元代码应该在60年代解决500个测试用例,每个解决方案代码应该在10秒内返回。元代码和解决方案代码不必使用同一种语言,但是您的元程序生成的所有解决方案都应该使用同一种语言。
预测试数据和生成器可以看到这里。7天后,将使用提交时间之和(例如12:34均值1234)作为随机种子,并生成另一个测试用例作为最终测试用例。
在GMT+8中,最终的种子是7335,所以最终的测试数据是这里。
发布于 2018-03-16 08:43:14
发布于 2018-03-16 08:57:42
匿名前缀lambda。返回程序体。
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}这将探索各种方法,并返回第一个可用的方法,最终返回到一个普遍适用的方法。
如果列表只有一个元素,则返回为-原样。
一个数字可以重复产生11倍大的数字,
我们只返回最右边(⊢)号。
f(n) = k×n序列只是在第一个项之前插入一个加号。
相接
当第一个数n=!m和后续数为1时,则!m是一个解决方案,因为!m为n,m!m为1,!1为1。
因为所有的两位数字都比所有的个位数要大,一个运行的最大值,其中第一个数字的前部粘在第二个数字的后面,是一个解决方案。
检查+a×b类型的任何公式是否有效。
没有数字低于5的长序列(因为4是行中断)可以被编码为SBCS的字符。
如果有低于5的数字,我们会向上移动9,以避免那些。
字符串"{⍺←⊃⋄1⌽⍺⊢⍵}"和字符串(⍕)输入的简单字符串连接。例如,[3,1,4]返回程序体{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4。
大括号中的部分是一个矛盾的函数,这意味着它既可以是前缀函数,也可以是内固定函数。因此,它的最左边的实例将以前缀模式运行,所有其他实例都将以infix模式运行。两种模式的不同之处在于,表示左参数的⍺是否有一个值。如果没有,那么它将被分配函数⊃ (首先)。
的解释
{…} 匿名lambda:
⍺←⊃ 如果没有左参数(⍺),则将函数⊃ (first)分配给⍺
然后,⋄ :
此时,以下代码意味着两种不同的情况,取决于⍺是数字列表(infix调用)还是函数"first“(前缀调用)。
如果⍺是一个数字列表,则为 :
⍺⊢⍵ 放弃左论点,而赞成右论点。
1⌽ 向左旋转一步
如果⍺是“first”函数,则为 :
⊢⍵ 提供了正确的参数
⍺ 选择了其中的第一个元素
1⌽ 旋转它一步(在标量上没有操作)
执行3 1 4的S代码,{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4,将“第一个”函数分配给⍺,从而返回第一个元素:3。
执行{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4让最右边的lambda“捕获”左边的3 1 4作为它的左参数,因此⍺有一个值被丢弃,取而代之的是3 1 4,然后再向左旋转一步,生成1 4 3作为结果。然后,这被用作最左边lambda的唯一参数,其中⍺成为“第一个”函数,导致结果成为第一个元素;1。
执行{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4让最右边的lambda“捕获”中间的3 1 4作为它的左参数,然后将其丢弃为右参数,3 1 4,当旋转一步后,它就是1 4 3。然后,它被用作中间lambda的右参数,以及最左边的3 1 4作为左参数。左参数被丢弃为右侧,左转一步就会产生4 3 1。这将成为最左边lambda的唯一参数,因此⍺成为“第一个函数”,返回第一个元素;4。
当需要使用实际数据进行测试时,请使用这个测试线束 (使用预测试数据进行链接)。测试用例在输入字段中,输出将是所有500个程序的总字节数。(它也会抛出一个错误,但这只是因为它后来尝试按原样计算输入。)
发布于 2018-03-16 09:54:10
´⎚´§´⪪⪫IA ”y¦ Lυ⊞υω在网上试试!链接是详细的代码版本。解释:
´⎚´§´⪪输出文字字符串⎚§⪪。
⪫IA 将输入数组强制转换为string、使用空格联接并打印。
”y¦ Lυ⊞υω输出文字字符串¦ Lυ⊞υω。
例如,5,17,7,13,2的输出是⎚§⪪5 17 7 13 2¦ Lυ⊞υω。在网上试试!解释:
⎚清除画布,以便只有最后一个输出可见。
§⪪5 17 7 13 2¦ Lυ取预定义列表u的长度。使用它可以索引到已在空格上拆分的整数列表中,并输出所选元素。
⊞υω将一个虚拟变量推送到预定义的列表u,以便下一个副本将输出列表的下一个元素。
总输出长度=(所有列表中所有整数的长度)+(所有列表中的整数数)+(列表* 9)字符数(SBCS)。
https://codegolf.stackexchange.com/questions/158307
复制相似问题