Este es el hilo de los ladrones. Para el hilo de la policía, ve aquí .
Introducción
Para este desafío de policías / ladrones, los policías escribirán programas de producción y los entrelazarán. Es el trabajo del ladrón separar los programas de la policía para producir los resultados deseados.
Reglas de ladrón
Los ladrones intentarán encontrar los diferentes programas que las personas publican en los envíos al hilo de los policías (vinculado anteriormente). Si un ladrón resuelve el código de un policía, debe publicar los programas separados y combinarlos con sus resultados en una respuesta aquí y publicar que han descifrado el código en la respuesta del policía.
Puntuación
Hay dos componentes que se agregan juntos al calificar un envío agrietado.
- 2 a la potencia del número de diferentes programas utilizados en la respuesta del policía
- Ronda el número de bytes en el entrelazamiento de abajo a la fuente más cercana de 2.
Por ejemplo, si un ladrón se quiebra TIliGoEnR
como siendo TIGER
y lion
, entonces el ladrón recibe 2 ^ 2 + 8 = 12 puntos.
El ganador del desafío de los ladrones será la persona con más puntos después de un período de tiempo suficiente para que las personas participen.
(¿Quién quiere ayudar con un fragmento?)
fuente
BitShift , 2 ^ 2 + 64 = 68 puntos
hilo de policías
huellas dactilares
! ?
huellas dactilares
? !
Código
Agregaré alguna descripción más tarde (divida el código en las partes que imprimen partes individuales)
fuente
2^programs + 256/bytes=points
. En este caso lo es2^2 + 256/128=6 points
. Sin embargo, creo que esto se editará porque, como lo es ahora, menos programas de conteo de bytes reciben una bonificación más alta para los ladrones. Que se sientePHP , 68 puntos
Salida:
Array
Salida:
\^/\]co\[\$
Me gusta esta presentación, porque se basa en algunas características menos conocidas, se podría decir que son falsas , de PHP. PHP permite asignar referencias de funciones a variables, por ejemplo:
haría exactamente lo que esperabas. Como lo haría:
... excepto que no está haciendo lo que piensas.
$f = pow
no asigna una referencia de función a$f
(eso tendría demasiado sentido, ¿verdad?), sino la cadena'pow'
. La implicación es que cualquier cadena puede usarse como una llamada de función, si representa el nombre de una función definida. Mal código esperando a suceder. Ni siquiera sé por qué te quieres para permitir esto.Otra característica errónea de PHP es que los nombres de funciones y palabras clave no distinguen entre mayúsculas y minúsculas. Desearía estar bromeando. Por lo tanto
echo pow(2, 4)
,ECHO POW(2, 4)
yEcHo PoW(2,4)
todos son funcionalmente equivalentes.La última característica errónea en el escaparate es que siempre que una matriz se escribe como una cadena, como para imprimir, el resultado es siempre la cadena increíblemente útil
Array
. Tómese un momento para reflexionar sobre el hecho de que alguien realmente hizo esto deliberadamente.Entonces, en el primer programa, @insertusernamehere construye la cadena
stR_split
, esta cadena se usa como referencia de función (que, por las razones anteriores, realmente funciona), y el resultado, una matriz, se emite.fuente
Rubí , 68 puntos
Primero:
Segundo:
Siguió de forma bastante natural el trabajo del final, con
putc
.fuente
JavaScript, 68 puntos
Hilo de policías
Primer programa
Salida:
ffttff
Segundo programa
Salida:
1010
Entretejido
fuente
Java, 132 puntos
Hilo de policías
Primer programa:
Segundo programa:
Las salidas del primer programa
Hell0
y las salidas del segundo programaBye!
fuente
Javascript , 132 puntos
Programa 1
Programa 2
Uf. Esto fue terrible.
Después de mucha depuración descubrí que después de llamar (partes de) el segundo programa, no volvería a ejecutarse. Esto se debe a que la variable global
f
todavía estaba asignada. Debido af
ser asignado, el try / catch no fallóObject.keys(f)
. No sé si es un truco disimulado o no intencional, pero me causó dolor de cabeza.Además, creo que la salida del primer programa es específica de la plataforma.
/../g
elimina todos los caracteres en mi máquina, debido a la expresión regular,.
que significa cualquier carácter./\../g
Sin embargo, escapar de esto funciona, espero que alguien pueda arrojar más luz sobre esto. Además, mi salida es propensa a errores de redondeo, ¿tal vez alguna variable global de JavaScript puede cambiar esto?Salida
Esto fue probado en Chrome 46 (mi único navegador), Windows 7.
Espero que esta sea una presentación válida, a pesar de los diferentes resultados.
fuente
JavaScript (ES6) , 68 puntos
Programa 1
Programa 2
Programas entrelazados
Esto hubiera sido mucho más difícil si el policía hubiera desgarrado las palabras clave. ;)
fuente
PHP , 24 puntos
Programa 1
Programa 2
Programa 3
Probado con http://sandbox.onlinephpfunctions.com/ .
fuente
Python 2 , 320 puntos
fuente