编写一个包含五行的函数。
如果按原样运行该函数,则应返回0。
如果您删除了五行中的任何一行并运行该函数,它应该告诉您哪些行已被删除(例如,如果您删除最后一行,则应返回5)。
简洁,新颖和优雅都值得考虑。最高投票赞成的解决方案(经过合理的时间)获胜。
编写一个包含五行的函数。
如果按原样运行该函数,则应返回0。
如果您删除了五行中的任何一行并运行该函数,它应该告诉您哪些行已被删除(例如,如果您删除最后一行,则应返回5)。
简洁,新颖和优雅都值得考虑。最高投票赞成的解决方案(经过合理的时间)获胜。
Answers:
function(n){
a=n-=1
n-=2
+3
+4;if(this.a)return 5
return n;var a
}
用n = 10调用此函数。
function(n){
a=n-=1
n-=2
+3
+4;if(this.a)return 5
n-=5;return n;var a
}
(必须以n = 15调用)
function(n){
n-=1
n-=2
n-=3
a=n-=4;if(this.a)return 5
n-=5;return n;var a
}
(必须以n = 15调用)
function(){
a=
b=
c=
d=1;if(this.a)return 5
1;var a,b,c,d;return d?c?b?a?0:1:2:3:4
}
function w(){
a=1;e=1;if(this.e)return 5
b=1;if(!a)return 1
c=1;if(!b)return 2
d=1;if(!c)return 3
var a,b,c,d,e;return d?0:4
}
function whichlineisremoved(){
/* 1 */ var a = 1; e = 1; if(window.e) return 5;
/* 2 */ var b = 1, a; if(!a) return 1;
/* 3 */ var c = 1, b; if(!b) return 2;
/* 4 */ var d = 1, c; if(!c) return 3;
/* 5 */ var e = 1, d; if(!d) return 4; return 0;
}
var a
该return
怎么办?从理论上讲,不应达到此目标。
函数体内的55个字符,不包括换行符。我无法提出更好的建议,但这是:
function f()
return 7--[[
return 1--[=[]]-2
--[[
-2--[=[]]
-5--]=]--]]-1
end
希望获得额外的评论滥用点数:P
它在5.1中不起作用的原因是嵌套 [[]]
已被删除,在5.1中它给出了编译错误,而不是像5.2那样忽略它。
return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
我找到了另一个解决方案。太糟糕了,我非常喜欢数学。此解决方案使用递归和全局变量(yuck!)来告诉每行是否已运行。我想做一些与其他解决方案不同的事情,所以这不是很优雅,但是可以正常工作:)
function LOL($a) {
if (!$a) { LOL(true); if (!$GLOBALS['b']) return 2; if (!$GLOBALS['c']) return 3; if (!$GLOBALS['d']) return 4; if (!$GLOBALS['e']) return 5; return 0; }
if ($a) $GLOBALS['b'] = true; else return 1;
$GLOBALS['c'] = true;
$GLOBALS['d'] = true;
$GLOBALS['e'] = true;
}
我真的很喜欢这个挑战,谢谢!:)
我用数学解决了。如果每个变量都被视为未知变量,并且我们每行执行一个声明,那么就有五个未知数和五行代码:这将导致我们进入以下5x5系统:
b+c+d+e = 1;
a+c+d+e = 2;
a+b+d+e = 3;
a+b+c+e = 4;
a+b+c+d = 5;
//Solutions are displayed in the code below.
找到值后,我便对其进行了硬编码并添加了一些基本内容。
function LOL(){
$a = 2.75;
$b = 1.75;
$c = 0.75;
$d = -0.25; if ($a+$b+$c+$d == 5) return $a+$b+$c+$d;
$e = -1.25; return $a+$b+$c+$d+$e;
}
注意:如果原样保留,旧答案将不起作用。
试用我的第一个发明的esolang。经过最初的困惑,我发现解决方案是如此简单。
_1 p
_^v>~2+p
> >~3+p
> >~4+X@7~8+~@$^^{;
> >~5+@7~8+~@${;
说明:
蜂蜡程序在二维六角形网格上工作。程序以矩形格式存储。
a — b — c — d
/ \ / \ / \ /
e — f — g — h
/ \ / \ / \ /
i — j — k — l
存储为
abcd
efgh
ijkl
沿特定方向移动的说明是:
b — d
/ \ / \ bd
< —IP — > or in compact form (β=IP): <β>
\ / \ / pq
p — q
简短说明
_1 p
创建一个IP,添加1,然后将IP重定向到第2行
_^v>~2+p
创建另一个IP,以防万一缺少第1行,放慢IP速度以确保第1行的IP在前面,然后添加2,然后重定向到第3行
> >~3+p
添加3,然后重定向到第4行
> >~4+X@7~8+~@$^^{;
加4,然后将第二个lstack值设置为15,然后将Xstack的top和2nd值进行XOR,减慢IP(以确保第5行的IP位于前面,如果第5行存在)并输出结果,然后终止程序。
> >~5+@7~8+~@${;
添加5,然后执行与第4行相同的操作,但放慢速度。
基本上,程序只计算总和x 15
第>
3至5行中的附加内容仅保证如果第2至4行之一丢失,则IP仍会正确重定向,并且不会离开程序。
您可以从我的GitHub存储库中克隆用Julia编写的我的蜂蜡解释器
与esolangs页面相比,GitHub上的自述文件是最新的,结构也更好。
subs(()->
-d(1)
-d(2)
-d(3)
-d(4)
-d(5)
,d=Dom::IntegerMod(15))
#!/bin/bash
# the function:
function f(){
a=1;
b=2;
c=3;
d=4;[ ! $1 ]&&f 1&&return 5||true
[ $1 ]&&return 6;e=5;s=$((a+b+c+d+e));return $((15-$s))
}
# call it:
f
# report the result:
echo Removed line $?
到第5行,一切都很简单。然后,它需要检测最后一行是否消失了。这利用了允许的函数参数,即在第5行被告知失败时递归调用一次,以测试其自身的成功值,如果删除了第5行,则第4行返回5
。
(注意:如果删除除函数之外的所有内容,删除空格并将/ bin / bash更改为/ bin / sh,则该字符数最少为131个字符)
function(){
/*aa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(6)+"*")==-1)return 5;
/*aaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(5)+"*")==-1)return 4;
/*aaaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(3)+"*")==-1)return 2;
/*aaaaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(4)+"*")==-1)return 3;
/*aaaaaa*/return +!~arguments.callee.toString().indexOf("*"+"a".repeat(2)+"*");
};