Ocultar la aguja en el pajar (policías)


38

Esto es parte de un desafío de . 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 Needlelugar. 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>


1
Relacionado. (La principal diferencia es que uno hizo que los programas implementaran secuencias OEIS y permitió que el programa descifrado produjera cualquier secuencia OEIS diferente, lo que hace que sea mucho más difícil para los policías protegerse contra grietas no intencionales. También permitió a los ladrones robar grietas de otros ladrones encontrando soluciones aún más cortas.)
Martin Ender

Haría esto en Haystack pero no tiene documentación y busco en el código :(
Okx


1
El fragmento de pila tiene la longitud incorrecta para esta respuesta
mbomb007

1
@ kamoroso94 Sí, pero eso significa que puede finalizar los programas candidatos después de 5 o 6 segundos, porque si no han terminado, no pueden ser la solución que está buscando.
Martin Ender

Respuestas:


16

Pajar , 84 bytes, agrietado

0\\1-c\
//    
?10F17+c8F+4+cd8F+3+c6-c1+c,c2+c8+c|
 0   \1++c,c|
F/c++2F8
c\8F+2+cd

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



1
@icrieverytim 1. oo cool, ambos son glifos unicode 2. el actual es más científicamente preciso
HyperNeutrino

1. Sí, lo sé, se ven realmente geniales. : PI los encontró en esta mina de oro de un bloque Unicode . No se sorprenda si terminan en la página de códigos de Neon. 2. TBH, el viejo se veía mejor IMO. : P
totalmente humano

1
@HyperNeutrino ¿Por qué le interesa el benceno?
Michthan

3
@Michthan Considerando que soy un neutrino, esa es una buena pregunta, pero no lo sé: P
HyperNeutrino

12

Hexagonía , 37 bytes.

H[@;(...e<l.a;./$.>;\sN;\ac.>).;;;._y

Pruébalo en línea!

Solo mi entrada obligatoria a Hexagony ...

Por conveniencia, aquí está el código desplegado:

   H [ @ ;
  ( . . . e
 < l . a ; . 
/ $ . > ; \ s
 N ; \ a c .
  > ) . ; ;
   ; . _ y

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 impreso Hays). Luego sse incrementa a un tby )e se imprime, luego lo pasamos Ne...(cantes de llegar a;c;(aún rebotando en una pequeña sección del hexágono). El programa golpea el _, refleja a través \de lla cual obtiene disminuido a una kpor( , que pasa a través de otro \antes de ser impreso y los termina en el programa @.

Versión detallada


3
Este lenguaje todavía me hace reír. Te amo por eso
phroureo

Mi cerebro está explotando en este momento. Estaba tratando de resolver esto lo suficiente como para descifrar el código, pero SÍ, hombre. ¿Qué tipo de chico retorcido inventa esto?
phroureo

@phroureo ...> _>
Martin Ender

Después de que su respuesta sea segura, ¿puede darme un paso a paso sobre lo que está haciendo? (O si usted ya tiene un algún lugar uno algo paso a paso semejante, me punto no?)
phroureo

1
@phroureo No me importa agregar una explicación del programa de policía antes de que sea seguro, y no creo que lo declare seguro de todos modos (no estoy muy interesado en ganar mi propio desafío con una presentación que apenas puse cualquier esfuerzo en). Intentaré agregar la explicación mañana. Mientras tanto, estoy feliz de ayudarte con Hexagony en la sala de chat de esolangs .
Martin Ender

10

Brain-Flak , 146 bytes ( agrietado )

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})

Pruébalo en línea!

Solución prevista, 80 bytes

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})
( ((   )(                  [(  (( (         )()()){})) []]   ({}(  )    ( (  ( ()(({}){}){}){}){}())))            ))    (((()[]){}){({}[()  ])}{})


8

JavaScript, 95 bytes (ES6), Agrietado

Una función que devuelve una cadena.

f=(k=b=x=35)=>x--?f(k*74837258394056219&268435455):k&2?'N'+(k^124038877).toString(b):'Haystack'

Demo "Haystack"


Muy buen rompecabezas. Cracked
ShreevatsaR

8

Haskell , 168 bytes ( Agrietado por nimi )

hays=map;hay=zipWith;stack=head;h=stack{-
 hay.(hays.(stackany hay$or id).stack hay
<*>hays(sum$stack haystack<$>hay))-}$words
 "Haystack Hayst ackH aysta ckH aystac k"

Pruébalo en línea! La evaluación del identificador hdevuelve la cadena "Haystack", después de que se hproduzcan algunas eliminaciones "Needle".


1
Agrietada . Fue bastante divertido de resolver.
nimi


4

Hexagonía , 32 bytes. Agrietado

No pude resolver el de Martin , así que estoy publicando el mío.

];N.@cl;e@;;(\H/;ya;_.>s.;t//<._

Pruébalo en línea!

Aquí está formateado:

   ] ; N .
  @ c l ; e
 @ ; ; ( \ H
/ ; y a ; _ .
 > s . ; t /
  / < . _ .
   . . . .

Mi objetivo con esto era que ambas soluciones usaran la mayor cantidad posible de IP, obtuve 6 para Needle y solo 5 para Haystack .




3

Java (OpenJDK 8) , 226 217 bytes ( Agrietado )

Primer código de golf, probablemente muy fácil, ¡pero fue un desafío divertido!

String d(){int h=3609000-5055+911,m=557558,s=15441301-157*10000;String d="0"+h*2+""+m*20+""+s*7,x="",y;for(int g=0;g<d.length();g+=3){y="";for(int e=0;e<3;e++)y+=d.charAt(e+g);x+=(char)Integer.parseInt(y);}return x;}

Pruébalo en línea!


Tu TIO no funciona. Es posible que desee cambiar el return new Main().d();a System.out.print(new Main().d());en el método principal.
Kevin Cruijssen

@KevinCruijssen ¡Gracias por el aviso!
Luke Stevens


3

cc , 148 bytes ( agrietado )

6 93 3 9 2 2**+*+483622 1 2 3 3*+3*+89 47*+*+3 5 2* 269 158 9**107 97*2 4*++2 3 3*+42 14 2**+*+5*+5 2148 1 6 2*+*+68262 5 280 7 2 3 3*+5 2**+*+*+*+P

Pruébalo en línea!

Es bastante simple, pero espero que sea al menos un poco divertido de resolver: з



2

JavaScript, 119 bytes (ES6), Agrietado

Una función que devuelve una cadena. Bastante largo y no tan difícil, pero con suerte divertido.

_=>(+{}+['H'])[+[3]]+(+[][[]]+[])[+!!3]+(+[][[]]+['y'])[3]+(+[][[]]+['s'])[-~2]+(~![]+['t'])[2]+(+[][[]]+[])[+!!3]+'ck'

Demo "Haystack"


Agrietada . El jsfuck github README.md ayudó mucho.
mi pronombre es monicareinstate

2

Python 2.7.2, 103/117 bytes, Agrietado

Versión de función (117 bytes):

def e():
 a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
 while a>0:
  s=chr(a%b)+s
  a//=b
 print s

Versión del programa (103 bytes):

a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
while a>0:
 s=chr(a%b)+s
 a//=b
print s

Esto debería imprimir Haystackbien. 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í.



2

Python 2.7.10 con Numpy 1.12.1, 208 209 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í.

import numpy
print "".join([dir(numpy)[int(i)][1-0] for i in numpy.poly1d([-1*1433/252e1,-3232/1920.,4026./72/2/3.,613/(6*4.)*1,-4723./1.8e2,-9763/120.,-2689/(-1+5*17.),1+138*.4*2])(numpy.arange(-12/3,13%9))])

Sale como se especifica:

Haystack

Puedes responder .


No es que realmente importe, pero esto es 209 bytes, no 208
caird coinheringaahing


2

Java 8, 321 bytes, agrietado

v->{String h="Haystack";int x=-7;return x<0?h:new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")}).toByteArray())+(new StringBuffer("hidden".substring(++x%3^4,--x-x--).replaceFirst("dd","e"+(char)(x*211%+93))).reverse());}

Pruébalo aquí

Más legible:

v->{
  String h="Haystack";
  int x=-7;
  return x<0?
          h
         :
          new String(new java.math.BigInteger(new byte[]{
            (byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),
            new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")
          }).toByteArray())
          +(new StringBuffer("hidden".substring(++x%3^4,--x-x--)
             .replaceFirst("dd","e"+(char)(x*211%+93))
            ).reverse());
}

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.


1
El TIO tiene un personaje menos, pero se agrieta de cualquier manera.
jacobly

2

Ruby , 185 bytes, agrietado por cab404

x='yGwztsPXhxDkBKlCYdFjQnpUROfoHvqmTgbaJSLcEiZrIAuMVNW'
s="n=x.to_i 36;x.bytjs.jach_cons(3){|a,b,c|n+=n*b%c;n*=a^b};puts n%8675309==1388649 ?'Njjdlj':'Haystack'"
eval s.tr ?j,s.size.chr

Pruébalo en línea!

Trataré de llegar a algo astuto, pero por ahora he aquí un intento de "simple pero desagradable".



1
eso fue divertido ^^
cab404

¡Bien hecho! Me alegro de que la fuerza bruta no fuera demasiado aburrida.
histocrat

2

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!


Te refieres a algo ofuscado más allá de la ofuscación normal de Brain-Flak.
Gryphon - Restablece a Monica el

@Gryphon Sí, agregué algunos bits adicionales.
H.PWiz


2

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

create table a(l int,c int)
insert into a values (1,10),(2,1),(3,8),(4,0)
go
;CREATE FUNCTION b(@ varchar(max)) returns varchar(max) as
begin return 'char('+@+'),'''','end 
go
;CREATE FUNCTION h(@ varchar(max),@a varchar(max), @b varchar(max), @c varchar(max), @d varchar(max), @e varchar(max), @f varchar(max), @g varchar(max), @h varchar(max))
returns varchar(max) as 
begin
return replace(replace(replace(replace(@,@a,@b),@c,@d),@e,@f),@g,@h)
end
declare @x varchar(max),@ int=1,@y varchar(99)=''
,@D varchar(4)='Ha',@O varchar(4)='ys'
,@T varchar(3)='ta',@A varchar(4)='ck'
WHILE @<=4
BEGIN
set @y+=(SELECT dbo.b(c+100)from a where l=@)+' '
set @+=1
END
SELECT @x='select
left(dbo.h('''+@D+@O+@T+@A+''','+ left(@y,len(@y)-1) +'),char(56))'
execute(@x)

Si esta es la respuesta más fácil en este hilo, probablemente tengas razón. : P Es difícil engañar a SQL.


¿No debería 'haystack' ser 'Haystack'?
cab404

SQL no maneja muy bien las mayúsculas (a menos que defina específicamente el esquema que se supone que debe usar para las letras). Opté por no hacerlo. : P
phroureo

1
@phroureo La especificación establece explícitamente que debe escribirse correctamente en mayúsculas.
Letra de

Bien, arreglé el código anterior (aunque no necesariamente arreglé el Fiddle de SQL, ya que funciona igual).
phroureo

1
agrietado (lo siento ...)
Robert Fraser

1

Ly , 40 bytes, agrietado

(78)"e"&p"Ha"s"yst"l"ck"&o(100)"l"l'&'o;

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 funciona y hoy no es la excepción.

Solución:

(78)"e"sl(100)"l"l&o;, eliminar XXXXXX XXXXX XXXXXX X Xcon siete espacios iniciales



1

Java , 345 bytes, agrietado

import java.util.*;interface Main{static void main(String[]args){Stack<Hay>s=new Stack();s.add(new Needle());for(int i=0;i<1000;i++)s.add(new Hay());System.out.println(s.get(s.indexOf(new Hay())+1).a);}}class Needle extends Hay{{a="Needle";}}class Hay{String a="Haystack";public boolean equals(Object o){return getClass().equals(o.getClass());}}

Pruébalo en línea!

Realmente largo y probablemente fácil de descifrar, ¡pero al menos tiene un Stack<Hay>!


muy bonito! pero sí, bastante fácil de descifrar.
Tito

0

TI-BASIC, 119 bytes (Seguro)

Salida almacenada en Ans.

"TIBASIC→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X

Solución

Eliminar caracteres de Str1para darle una longitud de 1.

"C→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X


0

Aceto , 154 bytes (Seguro)

              27 \ 'dNU QJi9MLJ € {{x (}] J {'! O∑ € xiDQxsJ (] sicpicp1.2sJJicp90I.2 + D / edxi - '> xd80J0IJicx'NIx5sJsJidcpIcpL7sssJicpei7 + UUdJppppppppppppppppppp   

Pruébalo en línea!

'N'ed'd80J0IJic'eUpppppp ¡ Pruébelo en línea!

Explanation:
<space>*2 - Two spaces for the hilbert curve to work right
'N pushes 'N' onto the stack
'e pushes 'e'
d duplicates it
'd pushes d
80 pushes 8, 0
J concats top two values
0I pushes 0, pops, increments, pushes back on, net effect: pushes 1
J concats to '108'
i converts to integer
c pops and pushes ascii equiv on stack
'e pushes 'e' (again)
U reverses the stack
and the p's print out the stack
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.