Esto es parte de un desafío de policías y ladrones . Ve aquí por la parte de la policía.
El desafío de los ladrones
La respuesta de un policía se puede descifrar eliminando cualquier subconjunto de caracteres del programa Haystack, de modo que salga en Needle
lugar de Haystack
(mientras sigue siendo un envío válido en el mismo idioma). No tiene que encontrar exactamente la misma solución que el policía pretendía, siempre que la suya sea válida según las restricciones anteriores.
Si logra esto, publique una respuesta con la solución, vinculando la respuesta del policía, y deje un comentario sobre la respuesta del policía vinculando la suya.
El ladrón que descifra la mayor cantidad de respuestas de policías gana. Los empates se rompen por la suma de los tamaños de las respuestas de los policías descifrados (a favor del ladrón que descifra los envíos más largos).
Cada respuesta de policía solo se puede descifrar una vez y, por supuesto, no puedes descifrar tu propia respuesta. Si la respuesta del policía resulta ser inválida antes o después de ser descifrada, no se cuenta para el puntaje del ladrón.
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.
fuente
hashing, encryption or random number generation
se permite el uso de ladrones (aunque la posibilidad es pequeña)Respuestas:
JavaScript, 85 bytes (ES6)
Rompe la respuesta de Arnauld
Demo de "aguja"
Mostrar fragmento de código
Explicación
La función original era:
que es más legible como:
Tenga en cuenta que cuando
n=21625674
, entoncesn.toString(35)
es'eedle'
.El 35 en la entrada probablemente no se puede cambiar a un subconjunto (porque queremos una base lo suficientemente grande como para contener todas las letras 'del', por lo que necesitamos una base que sea al menos 22). Así que los números al cambio son
74837258394056219
,268435455
y124038877
. Queremos reemplazarlos con los números a, b, c, cada uno formado con un subconjunto de los dígitos de los números originales, de modo que la funcióng(k) = (k * a & b)
, comenzandok=35
e iterada 35 veces, y luego XORed con c, dé21625674
.Para éste, después de pensar un poco, ya que las longitudes son pequeñas (el máximo
a
tiene una longitud 17,b
yc
tener una longitud 9), acabo de utilizar fuerza bruta :-) Escrito un programa en C ++ para generar todos los números posiblesa
,b
,c
formado como subconjuntos de los números originales, repita todoa
yb
, y verifique si el requeridoc
estaba en el conjunto. Se ejecuta en unos 15 segundos, y la única salida esa=4853461
,b=268435455
,c=12408877
(resulta que el númerob
no tiene que ser cambiado). No estoy seguro de si hay una forma más inteligente de invertir esta función.fuente
Pajar , 82 bytes
Cracks La respuesta de HyperNeutrino
Pruébalo en línea!
fuente
0
al principio: P ¡Sin embargo, es agradable ver otro enfoque! +1Brain-Flak , 96 bytes
Cracks Funky Computer La respuesta del hombre .
Pruébalo en línea!
Este fue un desafío divertido.
El -24 al principio que convierte
y
aa
en el original es ahora utilizado para convertire
aM
, que se convierte a continuaciónN
en el lugar por el cambio de todo el bucle final a())
. La primera letra empujadak
se cambió ae
simplemente eliminando un push-pop que le agrega 6. El resto en su mayoría simplemente cayó en su lugar, con algunos errores humorísticos en el camino (incluido un programa cuyo resultado fueMeddle
).Comparación de los dos programas:
fuente
N
era 77 en lugar de 78, así que no lo entendí.Haskell
Cracks @ Laikoni responde .
Pruébalo en línea!
Código original:
Reemplazar los caracteres eliminados con guiones bajos:
Cómo
Needle
se construye: la cadena al final del código se divide en palabras. El primer carácter de cada palabra se incrementa tantas veces como haya caracteres en la palabra, por ejemplo,Haysta
->H
más 6 caracteres ->N
.fuente
Hexagonía , 17 bytes, H.PWiz
Pruébalo en línea!
Comparación con el original:
Visualización:
Explicación
Marcas de bonificación: ¡utiliza las 6 IP y todas las celdas menos una!
La IP # 0 comienza dirigiéndose a lo largo del camino negro hacia el
]
.Luego pasamos a IP # 1, que se dirige a lo largo del camino rojo, imprimiendo
N
yN;
luego volviendo a envolverlo]
nuevamente.Luego pasamos a IP # 2, que se dirige a lo largo del camino azul, almacenando
e
en la celda de memoria actual, luego a lo largo del camino verde, ejecutando (con un reflejo en\
);;(;
que imprimeee
, disminuye la celda de memoriae
parad
luego imprimird
.La IP continúa a lo largo del camino naranja, ejecutando lo
Nl;se
que imprimel
y almacenae
en la celda de memoria actual. Continúa por el camino marrón, imprimiendoe
con;
. En este punto ya hemos impresoNeedle
, por lo que el resto está por terminar. La IP almacenac
, luego golpea]
. Luego hacemos la transición a IP # 3, que se dirige a lo largo del camino azul, golpeando , rebotando en el que rebota . Luego hacemos la transición a IP # 4, que se dirige a lo largo del camino verde, rebotando y luego ramificándose a (ya que es positivo). Finalmente, hacemos la transición a IP # 5, que almacena y luego sale con .\
_
]
_
\
]
c
e
@
fuente
Python 2 , 123 bytes
Cracks agtoever's Answer
repl.it
Comparación:
Me divertí mucho buscando soluciones que imprimieran
Meedle
yNeedlf
ajustando un polinomio a la mediana de los índices de los símbolos numpy que comienzan con cada una de las letrasNeedle
. Luego intenté encontrar coeficientes similares con subconjuntos del programa original a mano, pero terminé teniendo que recurrir a la fuerza bruta para encontrar una solución válida.fuente
Javascript, 91 bytes
Rompe esto . En realidad fue divertido.
Mostrar fragmento de código
fuente
Jalea , 14 bytes
Cracks La respuesta de Jonathan Allan
Pruébalo en línea!
Comparación:
Solía
œc
iterar a través de varios subconjuntos de cadenas literales, utilizadotr -d
para cada filtro posible, ygrep
ed para Needle. Suponiendo que ninguno de los caracteres utilizados en la primera cadena se utilizó en la respuesta, le permite encontrar una respuesta en menos de 15 segundos.fuente
Nebbed
+ruble
sin ninguno derub
.Python 2 , 73 bytes
Cracks La respuesta del usuario71546 .
Pruébalo en línea!
Resuelto con este programa.
fuente
Java (OpenJDK 8), 191 bytes
Rompe la respuesta de Luke Steven
Pruébalo en línea!
Caracteres eliminados:
Esto hace
d
evaluar a078101101100108101
, que hechizosNeedle
.fuente
Ruby , 149 bytes
Rompe esto: /codegolf//a/144790/74216
El módulo era bastante pequeño, así que escribí un artículo de cumpleaños con varios subprocesos y esperé lo mejor.
Editar: Y después de eso encontró una respuesta aún más corta.
Pruébalo en línea!
Cambios:
fuente
cc , 34 bytes
Rompe esto . TIO .
Comencé obteniendo la representación numérica de Haystack (5215583380252484459) y Needle (86197399743589). A continuación, hice una factorización de este último, que es 47 * 432323 * 4242169. A partir de esto, fue bastante fácil reconstruir esos números.
Marcado de los caracteres utilizados:
fuente
Hexagonía , 19 bytes, Martin Ender
Pruébalo en línea!
Comparación con el original
Código desplegado
Entonces, nunca he escrito nada en Hexagony, pero pensé que con solo 37 bytes podría encontrar el crack. Martin, espero que sepas que dediqué mucho tiempo a tratar de resolver esto. :)
Puede que sea incorrecto, pero explicaré lo que creo que está haciendo este código:
El programa comienza con
[
, que automáticamente pasa a IP # 5. Esta IP comienza en la esquina oeste, en dirección a la[
una vez más, que la mueve a la IP # 4. A partir de aquí, se ejecuta,N;e
luego se dirige a la esquina sureste y se ejecuta;
, rebota hacia la derecha para otro,;
luego se envuelve, lo(
que disminuye la corrientee
a ad
. Luego continúa (con una envoltura) para...;.
luego rebotarl
y llegar a la[
última vez, moviéndose a IP # 3. Se ejecuta;
,>
redirige al noroeste para.
luego<
redirigir al oeste, golpeandoe
, envolviendo;
y terminando en el@
.Versión detallada
Mostrar fragmento de código
Estoy muy contento de que haya utilizado un tamaño de hexágono normal para el programa Needle; Estaba comprobando programas de tamaño 19 (para un hexágono lateral de longitud 3) cuando me di cuenta de que podía eliminar cualquier número de caracteres y automáticamente llenaría el hexágono con
.
s al final, lo que haría que sea mucho más difícil de descifrar. Tal como están las cosas, Hexagony es un lenguaje maligno para este desafío porque (en su mayoría) cualquier personaje que se elimine cambia toda la ruta de ejecución del programa. Dicho esto, disfruté tratando de llegar a esto, incluso si terminé por obligarlo al final. :)fuente
Java (OpenJDK 8) , 151 bytes
Cracks La respuesta de Kevin Cruijssen
Pruébalo en línea!
Comparación:
Siento que la última parte no fue pensada.
fuente
v->{String h="Haystack";int x=7;return new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~1^-x++*x)+15),new Byte(""+10+((x=h.length()*4/x)+x-7))}).toByteArray())+(new StringBuffer("hidden".substring(++x%3,x).replaceFirst("d","e"+(char)(x*21+3))).reverse());}
(no sé por qué he incluido el BigInteger, ya que solo byte-array es suficiente ...) , pero me gusta más el tuyo .. :)Brain-Flak , 102 bytes
Rompe la respuesta de H.PWiz .
Pruébalo en línea!
fuente
Ly , 21 bytes
Pruébalo en línea!
Rompe la respuesta de LyricLy .
fuente
Java de Johnathan S.
TiO
Simplemente quite el lazo que agrega el heno y no quedará nada en la pila excepto la aguja.
fuente
equals
método funciona igual de bien.Pyth , 21 bytes
resuelve esto .
Pruébalo en línea!
fuente
T-SQL por phroureo , 757 bytes
De alguna manera, no creo que esa sea la solución prevista. Utiliza los personajes rodeados por
{}
:fuente
PHP
Grietas Titus respuesta
Pruébalo en línea
fuente