Esto es parte de un desafío de policías y ladrones . Vaya aquí para la parte de los ladrones.
El desafío de los policías
Debe escribir un programa o función en el idioma que elija, que genera la cadena Haystack
. Sin embargo, debe ser posible eliminar algunos subconjuntos de caracteres de su programa (sin reordenar el resto), de modo que la cadena resultante también sea un programa válido en el mismo idioma, que se imprime en su Needle
lugar. Ambos programas / funciones pueden imprimir opcionalmente una nueva línea final (independientemente la una de la otra), pero nada más. La salida distingue entre mayúsculas y minúsculas y debe seguir la carcasa exacta proporcionada.
Su objetivo, por supuesto, es ocultar muy bien la "aguja". Pero tenga en cuenta que su envío se puede descifrar con cualquier solución válida, no solo la que pretendía.
Por favor incluya en su respuesta:
- El idioma (y la versión, si corresponde) de su envío.
- El tamaño del programa Haystack en bytes.
- El programa Haystack en sí.
- El método de salida si no es STDOUT.
- Si es posible, un enlace a un intérprete / compilador en línea para el idioma elegido.
Su envío puede ser un programa o una función, pero no un fragmento y no debe asumir un entorno REPL. No debe tomar ninguna entrada, y puede salir a través de STDOUT, valor de retorno de función o parámetro de función (out).
Ambos programas / funciones deben completarse en 5 segundos en una máquina de escritorio razonable y deben ser deterministas. No debe utilizar las funciones integradas para el hash, el cifrado o la generación de números aleatorios (incluso si coloca el generador de números aleatorios en un valor fijo).
En aras de la equidad, debe haber un intérprete o compilador disponible gratuitamente para el idioma elegido.
Una respuesta se descifra si se encuentra el programa Needle. Si su respuesta no ha sido descifrada durante 7 días, puede revelar el programa Needle previsto en su respuesta, lo que hace que su envío sea seguro. Siempre y cuando no reveles tu solución, los ladrones aún pueden descifrarla, incluso si ya han pasado los 7 días. El programa más seguro de Haystack seguro (medido en bytes) gana.
Ejemplos
Aquí hay un par de ejemplos simples en diferentes idiomas:
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]
Tenga en cuenta que el subconjunto de caracteres eliminados no tiene que ser contiguo.
Envíos sin descifrar
<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>