Java 8,234字节
n->"v->{long t=System.nanoTime();t/=1e9;String s=\"v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>"+n+"?%1$cBOOM!%1$c:s.format(s,34,s,t);}\";return t-"+(System.nanoTime()/1e9)+">"+n+"?\"BOOM!\":s.format(s,34,s,t);}"
抱歉,请立即发布我自己的挑战。它主要是为了进一步澄清挑战,我怀疑是将其添加到问题本身还是作为答案发布(并决定将其发布为答案,以免使挑战帖子变得混乱)。
而且,尽管我想说这也是(尝试和)击败的事情,但这甚至不值得一提,因为,好吧。Java(几乎)总是被击败。; p
在线尝试。
输出示例:
v->{long t=System.nanoTime();t/=1e9;String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";return t-70492.687613232>60?"BOOM!":s.format(s,34,s,t);}
在这里尝试输出的lambda函数。
输出示例:
v->{long t=System.nanoTime();t/=1e9;String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";return t-70548>60?"BOOM!":s.format(s,34,s,t);}
说明:
main函数采用整数输入并返回String。它基本上返回一个quine函数,其中整数输入和开始时间(以秒为时间戳)作为硬编码值。
主功能:
n-> // Method with integer parameter and String return-type
"v->{long t=System.nanoTime();t/=1e9;String s=\"v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>"
// First part of the output-function
+n // With the integer input placed as hard-coded value
+"?%1$cBOOM!%1$c:s.format(s,34,s,t);}\";return t-"
// The second part of the output-function
+(System.nanoTime()/1e9)
// With the current time in seconds as hard-coded starting time
+">"+n // And the integer input again (for the output of the output function)
+"?\"BOOM!\":s.format(s,34,s,t);}"
// The final part of the output-function
n=60
在以下示例中使用:
第一个输出程序:
v->{ // Method with empty unused parameter and String return-type
long t=System.nanoTime();t/=1e9;
// New starting time in seconds
String s="v->{long t=System.nanoTime();t/=1e9;String s=%c%s%1$c;return t-%d>60?%1$cBOOM!%1$c:s.format(s,34,s,t);}";
// Unformatted (quine) result-function
return t- // If the difference between the new starting time
70492.687613232 // and hard-coded starting time from the main function
>60? // is larger than the hard-coded integer from the main function
"BOOM!" // Return "BOOM!"
: // Else:
s.format(s,34,s, // Return the formatted (quine) result-function,
t);} // with this new starting time as new hardcoded value
第二个输出程序:
与第一个输出程序相同,70492.687613232
只是用代替70548
。