警察的挑战
您应该使用自己选择的语言编写程序或函数,该程序或函数将输出字符串Haystack
。但是,必须有可能从程序中删除某些字符子集(而无需重新排序其余字符),以使生成的字符串也是使用相同语言的有效程序,而将其打印出来Needle
。这两个程序/功能都可以选择打印一条尾随的换行符(彼此独立),但没有其他内容。输出区分大小写,并且必须遵循提供的确切大小写。
当然,您的目标是很好地隐藏“针”。但是请注意,可以使用任何有效的解决方案来破解提交的内容,而不仅仅是您想要的解决方案。
请在您的答案中包括:
- 您提交的语言(和相关版本)。
- Haystack程序的大小(以字节为单位)。
- Haystack程序本身。
- 如果不是STDOUT,则为输出方法。
- 如果可能,请提供指向您所选择语言的在线口译/编译器的链接。
您提交的内容可能是程序或功能,但不能是摘要,并且您不得采用REPL环境。您不得输入任何内容,而可以通过STDOUT,函数返回值或函数(输出)参数进行输出。
两种程序/功能都必须在合理的台式机上在5秒内完成,并且需要确定性。您不得使用内置函数进行散列,加密或随机数生成(即使您将随机数生成器植入固定值)。
为了公平起见,必须为您选择的语言提供免费的解释器或编译器。
如果找到Needle程序,答案将被破解。如果您的答案在7天内没有被破解,则可以在答案中显示预期的Needle程序,从而确保提交的内容安全。只要您不公开解决方案,即使7天已经过去,它也可能会被强盗破解。最短的安全 Haystack程序(以字节为单位)获胜。
例子
这是几个使用不同语言的简单示例:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
请注意,已删除字符的子集不必是连续的。
完整的提交
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>