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>
fuente
Respuestas:
Pajar , 84 bytes, agrietado
Pruébalo en línea!
Esto parece (para mí) bastante complicado pero si encuentras el subconjunto correcto es un poco demasiado fácil ... bueno, solo para comenzar: P
fuente
Hexagonía , 37 bytes.
Pruébalo en línea!
Solo mi entrada obligatoria a Hexagony ...
Por conveniencia, aquí está el código desplegado:
Cómo funciona esto:
El programa comienza con
H
, luego pasamos a IP # 5. Esta IP comienza en la esquina oeste, rebotando y envolviéndose mientras se ejecuta (en efecto);a;y;s;
(así que hemos impresoHays
). Luegos
se incrementa a unt
by)
e se imprime, luego lo pasamosNe...(c
antes de llegara;c;
(aún rebotando en una pequeña sección del hexágono). El programa golpea el_
, refleja a través\
del
la cual obtiene disminuido a unak
por(
, que pasa a través de otro\
antes de ser impreso y los termina en el programa@
.Versión detallada
Mostrar fragmento de código
fuente
Brain-Flak , 146 bytes ( agrietado )
Pruébalo en línea!
Solución prevista, 80 bytes
fuente
JavaScript, 95 bytes (ES6), Agrietado
Una función que devuelve una cadena.
Demo "Haystack"
Mostrar fragmento de código
fuente
Haskell , 168 bytes ( Agrietado por nimi )
Pruébalo en línea! La evaluación del identificador
h
devuelve la cadena"Haystack"
, después de que seh
produzcan algunas eliminaciones"Needle"
.fuente
Gelatina , 41 bytes ( agrietada )
Pruébalo en línea!
¡Feliz cacería!
fuente
Hexagonía , 32 bytes. Agrietado
No pude resolver el de Martin , así que estoy publicando el mío.
Pruébalo en línea!
Aquí está formateado:
Mi objetivo con esto era que ambas soluciones usaran la mayor cantidad posible de IP, obtuve 6 para Needle y solo 5 para Haystack .
fuente
Pyth , 44 bytes ( agrietado )
Pruébalo aquí
fuente
Java (OpenJDK 8) ,
226217 bytes ( Agrietado )Primer código de golf, probablemente muy fácil, ¡pero fue un desafío divertido!
Pruébalo en línea!
fuente
return new Main().d();
aSystem.out.print(new Main().d());
en el método principal.cc , 148 bytes ( agrietado )
Pruébalo en línea!
Es bastante simple, pero espero que sea al menos un poco divertido de resolver: з
fuente
JavaScript, 119 bytes (ES6), Agrietado
Una función que devuelve una cadena. Bastante largo y no tan difícil, pero con suerte divertido.
Demo "Haystack"
Mostrar fragmento de código
fuente
Python 2.7.2, 103/117 bytes, Agrietado
Versión de función (117 bytes):
Versión del programa (103 bytes):
Esto debería imprimir
Haystack
bien. Probado en Python Fiddle .Por cierto, este es el primer intento.
No estoy seguro si la versión del programa se cuenta como un fragmento, así que puse ambas versiones aquí.
fuente
Python 2.7.10 con Numpy 1.12.1,
208209 bytes ( agrietado )Parece que hay una aguja y un Pajar en Numpy! Aquí está el pajar; mira si puedes encontrar la aguja. Espero que te diviertas tanto buscando la Aguja como yo la escondí.
Sale como se especifica:
Puedes responder .
fuente
Java 8, 321 bytes, agrietado
Pruébalo aquí
Más legible:
No estoy seguro de si es demasiado largo / difícil ... Por otra parte, Java en general es bastante largo para empezar, por lo que ocultar la 'Aguja' correctamente, por supuesto, aumenta un poco el recuento de bytes ...
Si nadie lo descifra, yo ' Agregaré algunos spoiler-tips más adelante.
fuente
Ruby , 185 bytes, agrietado por cab404
Pruébalo en línea!
Trataré de llegar a algo astuto, pero por ahora he aquí un intento de "simple pero desagradable".
fuente
Brain-Flak , 188 bytes ( agrietado )
Acabo de ver la respuesta de Funky Computer Man cuando publiqué esto.
Está algo ofuscado.
Pruébalo en línea!
Solución prevista, 96 bytes:
Pruébalo en línea!
fuente
T-SQL, 757 caracteres CRACKED
Disculpas por eliminar mi respuesta anterior: la edité demasiadas veces porque me ofusqué, y no quería regalar nada. :)
En cualquier caso, ofuscarse en SQL es un poco difícil, a menos que quieras hacer cosas locas como esta , y yo no estaba tan invertido.
Además, descaradamente no me disculpo por nombrar mis variables después de Dota.
Violín de SQL
Si esta es la respuesta más fácil en este hilo, probablemente tengas razón. : P Es difícil engañar a SQL.
fuente
Ly , 40 bytes, agrietado
Pruébalo en línea!
Oh chico, otra presentación de Ly CNR. Estos no han funcionado muy bien históricamente (posiblemente debido a mí y no al idioma),
pero veremos cómo funcionay hoy no es la excepción.Solución:
fuente
Java , 345 bytes, agrietado
Pruébalo en línea!
Realmente largo y probablemente fácil de descifrar, ¡pero al menos tiene un
Stack<Hay>
!fuente
TI-BASIC, 119 bytes (Seguro)
Salida almacenada en
Ans
.Solución
Eliminar caracteres de
Str1
para darle una longitud de 1.fuente
PHP, 44 bytes, agrietado
bastante fácil de romper; pero me gusta.
Ejecutar
-nr
o probarlo en línea .fuente
Aceto , 154 bytes (Seguro)
Pruébalo en línea!
fuente