¿Qué tan bien conoces el sitio? Vamos a averiguar.
Este es un desafío de policías y ladrones . Hilo de policía .
Como ladrón, necesitas:
- Encuentre un desafío no eliminado y no cerrado que coincida con el envío de un policía. El desafío no puede tener las siguientes etiquetas: policías y ladrones , concurso de popularidad , trolling de código , descuidado , castor ocupado , rey de la colina , consejos , encadenamiento de respuestas . El desafío debe tener restricciones en la salida válida.
- Publique el desafío aquí y enlace al policía que está descifrando
- Agregue un comentario "Agrietado" a la publicación de la policía, con un enlace a esta respuesta
Recibirá 1 punto, más 1 punto por cada período de 24 horas que el envío haya permanecido sin descifrar (máximo 7). Tiebreaker es el número total de sumisiones agrietadas.
Notas:
- Si un desafío requiere un resultado de
X
, y usted genera un resultadoXY
oYX
dóndeY
hay algo más que un espacio en blanco, el envío no es válido para ese desafío. - Un desafío más nuevo que el 2016-11-17 no está permitido.
- Me reservo el derecho de prohibir ciertos desafíos si son ampliamente aplicables (podrían aplicarse a la mayoría de todas las presentaciones).
- Asegúrese de agregar una o dos oraciones como explicación (también ayuda a que su envío no se convierta en un comentario)
- ¡Gracias a Daniel por la idea inicial!
cops-and-robbers
obfuscation
Nathan Merrill
fuente
fuente
Respuestas:
Calcule la probabilidad de obtener la mitad de caras que arrojar monedas.
Entrada de policías (publicada por Conor O'Brien): /codegolf//a/100521/8927
Pregunta original: Calcule la probabilidad de obtener la mitad de caras que arrojar monedas.
La solución publicada tuvo un par de técnicas de ofuscación aplicadas, seguidas de múltiples capas de la misma técnica de ofuscación. Una vez pasados los primeros trucos, se convirtió en una tarea simple (¡aunque tediosa!) Extraer la función real:
Me tomó un tiempo darme cuenta de lo que estaba mirando (durante un tiempo sospeché algo que tenía que ver con la entropía), pero una vez que se movió, logré encontrar la pregunta fácilmente buscando "probabilidad de lanzamiento de monedas".
Dado que Conor O'Brien desafió una explicación en profundidad de su código, aquí hay un resumen de los bits más interesantes:
Comienza por ofuscar algunas llamadas a funciones incorporadas. Esto se logra codificando los nombres de las funciones en base-32 y luego asignándolos a nuevos nombres de espacios de nombres globales de un solo carácter. Solo se usa 'atob'; los otros 2 son solo pistas falsas (eval toma la misma taquigrafía que atob, solo para anularse, y btoa simplemente no se usa).
A continuación, hay un par de mezclas triviales de cadenas para ocultar el código. Estos se revierten fácilmente:
La mayor parte de la ofuscación es el uso de la
g
función, que simplemente define nuevas funciones. Esto se aplica de forma recursiva, con funciones que devuelven nuevas funciones, o que requieren funciones como parámetros, pero eventualmente se simplifica de inmediato. La función más interesante que resulta de esto es:También hay un truco final con esta línea:
Aunque como el siguiente bit es ".pow (T, a)", ¡siempre fue bastante probable que tuviera que ser "Math"!
Los pasos que tomé a lo largo de la ruta de las funciones de expansión fueron:
La estructura de la función de anidamiento se basa en la utilidad; la función más externa "D" / "j" calcula una relación, luego las funciones internas "C" / "h" y "E" (en línea) calculan los recuentos de monedas necesarios. La función "F", eliminada en el tercer paso, es responsable de conectarlos en un todo utilizable. Del mismo modo, la función "k" es responsable de elegir el número de cabezas que deben observarse; una tarea que delega a la función de relación "D" / "j" a través de la función de enlace de parámetros "L"; se usa aquí para fijar el parámetro
b
aT
(aquí siempre 2, es el número de estados que puede tomar la moneda)Al final, obtenemos:
fuente
f
. ¡Pero el resto es correcto! Además, un poco de elaboración sobre cómoRESULT
se deriva puede ser digno;)MATL, Luis Mendo , cuenta el número de decimales fuertes entre 2 números
Me di cuenta de lo que hace jugando con las entradas, pero no pude averiguar qué desafío tendrías que calcular el número de enteros en un rango cuya suma era mayor que 7 veces el número de dígitos. Después de leer los documentos de MATL, armé una explicación aproximada de lo que esto hace:
Luego pasé de buscar "suma de dígitos mayor que 7 veces la longitud" a "dígito promedio mayor que 7", lo que arrojó el desafío que estaba buscando.
fuente
아희 (Aheui), JHM , bucle infinito más corto que no produce salida
Probé en línea, el código sigue ejecutándose y no hay salida
fuente
Invertir una matriz unidimensional
Creo que esto es todo, es como la primera respuesta.
/codegolf//a/100368/31343
fuente
C #, Yodle , dada una entrada , muévala a lo largo del teclado con N caracteres
Una entrada
string
yint
y cambia cadachar
de lastring
a lachar
que estáN
llaves de distancia en el teclado (envoltura alrededor).fuente
Perl, Gabriel Benamy , conveniente corrector de palíndromo
El código era obviamente una especie de palíndromo. Una vez que escogí la
y- - -
estructura y noté lo que se estaba transcribiendo, supe qué desafío era.fuente
Pyth - /codegolf//a/100391/31343
Rápidamente descubrí lo que hizo el programa, pero encontrar el desafío tomó bastante tiempo.
Diferente camino a seguir
Este es mi búfer.
fuente
05AB1E, 27 bytes, Adnan
Evaluación de la puntuación basada en una cadena de ajedrez FEN
Descomprimí la cadena y busqué, y se me ocurrió este desafío.
fuente
MATL, Luis Mendo , Calcule el peso de hamming con bajo peso de hamming
Probé poniendo números, y encontré la cuestión del peso hamming en OEIS .
Luego busqué en PPCG, intenté poner cadenas y funcionó.
fuente
C ++, Karl Napf , conjunto de suma de subcadenas
Demostración en línea que muestra el primer caso de prueba de la pregunta.
fuente
Ruby, histocrat , implementa una máquina de la verdad
El código define un sistema de funciones iteradas
f(n) = n*(3*n-1)/2
que se ejecuta hasta que eln
mod 7 sea 0.0
Por lo tanto, la entrada termina inmediatamente (después de imprimir0
una vez). Entrada de1
donaciones1
, lo que lleva a un bucle infinito de impresión1
. Otra entrada termina después de 1-3 pasos si la inicialn
es congruente con 0, 2, 3, 5 o 6 mod 7, o crece para siempre si es congruente con 1 o 4 mod 7. Pero eso es irrelevante.fuente
Hexagonía, 548 bytes, Martin Ender
¡Este es el desafío " Imprime todos los personajes que tu programa no tiene "!
Huellas dactilares:
Lo cual es muy similar a la salida en este . La pista aquí era que lo último
.
no estaba impreso. Además, el código en sí no tenía letras, y todos sabemos que las frases en la salida contienen todas las letras del alfabeto.fuente
Python, 935 Bytes, Mega Man , ¿Cuál es el entero positivo de base 10 más pequeño que puede imprimir un programa más corto (en caracteres) que él mismo?
En realidad no lo intenté. Pero supongo que imprime un número más largo que el programa.
fuente
Python 3, /codegolf//a/100381/31343
Use la fórmula de xkcd para aproximar la población mundial
Solo busqué desafíos que involucraran años bisiestos (debido a la divisibilidad decodificada por cuatro correctores) y que no tuvieron ninguna entrada.
fuente
%4
y elstrftime
, pero buen trabajo para detectar las partes importantes del código (la mayor parte era galimatías)7.3 328
, y haya buscado eso. El desafío surge de inmediato.Brainfuck, FinW , imprime la tabla ASCII
Eso fue fácil, ya que publicó su respuesta sobre ese desafío.
Enlace a su respuesta
fuente
Mathematica, JHM , Construcción natural
El operador unario
±
calcula una representación basada en la teoría de conjuntos de los números naturales.fuente
Ruby, wat , 400th Question Celebration / Challenge
Eso fue lo primero que encontré al buscar "400". Dicho esto, el desafío parece estar equivocado y debería ser un popcon y probablemente también debería cerrarse por no tener requisitos objetivos.
fuente