Este es un desafío de policías y ladrones . Responda aquí si es policía (creador de crucigramas), responda la pregunta complementaria si es un ladrón (solucionador de crucigramas). Puedes asumir ambos roles.
Policías (Puzzlers)
Su tarea es escribir un crucigrama de 10 × 10 donde, en lugar de palabras o frases, fragmentos de código son las soluciones a las pistas. Cada pista será una secuencia de caracteres no vacía, de modo que al ejecutar el fragmento de código al que hace referencia se imprimirá la secuencia en stdout.
Tu publicación debe incluir tres cosas:
- Su cuadrícula de crucigramas en blanco de 10 × 10, que se utiliza
#
para los oscuros (separadores de pistas) y_
para las luces (celdas que se deben completar).- Cada secuencia horizontal o vertical de 2 o más luces (delimitadas por las sombras o el borde de la cuadrícula) es una entrada para la que debe escribir una pista. Para su comodidad, debe numerarlos de la manera habitual (de izquierda a derecha, de arriba a abajo) reemplazando
_
al comienzo de cada entrada con un identificador de carácter único (por ejemplo, 1, 2, ..., A, B , ...) - Su cuadrícula puede tener cualquier cantidad de sombras.
- Su cuadrícula puede tener cualquier cantidad de pistas.
- Las entradas horizontales siempre se leen de izquierda a derecha y las verticales de arriba a abajo.
- Cada secuencia horizontal o vertical de 2 o más luces (delimitadas por las sombras o el borde de la cuadrícula) es una entrada para la que debe escribir una pista. Para su comodidad, debe numerarlos de la manera habitual (de izquierda a derecha, de arriba a abajo) reemplazando
- Una lista de pistas que contiene cada entrada en su crucigrama, hacia abajo y al otro lado.
- Las pistas deben contener al menos 1 y no más de 10 caracteres.
- Si sus pistas contienen espacios, asegúrese de que sean obvias cuando formatee su publicación.
- Fragmentos de código de encabezado y pie de página , cada uno de 20 caracteres o menos.
- Estos se ejecutan respectivamente antes y después de un fragmento de solución, y pueden ayudar a cambiar el nombre de incorporaciones largas y demás.
El procedimiento para garantizar que una pista coincida con su fragmento de código correspondiente es:
- Concatenar la cabecera, el fragmento, y el pie de página:
[header][snippet][footer]
. - Ejecute esto como un programa normal (independiente de las ejecuciones anteriores) y observe lo que se imprimió en stdout.
- Si esto coincide con la pista, el fragmento es una solución válida.
Para simplificar, solo puede usar ASCII imprimible (códigos hexadecimales 20 a 7E) en todo momento. Solo el encabezado y el pie de página también pueden contener pestañas y nuevas líneas.
Notas adicionales
- Para cualquier fragmento, la ejecución
[header][snippet][footer]
no debería llevar más de un minuto en una computadora moderna decente . - Debe especificar su lenguaje de programación (y versión).
- No puede utilizar ningún algoritmo de hash común.
- No puede usar bibliotecas externas.
- Todo en su código debe ser determinista, invariable en el tiempo y no necesita una conexión de red.
#
y_
puede aparecer en fragmentos (o en cualquier otro lugar).- Puede revelar algunos de los caracteres en el crucigrama como lo ha hecho COTO . Todavía cuentan como luces. Los ladrones no están obligados a usarlos, son solo buenos consejos.
Ejemplo
Un ejemplo sencillo usando Python 3. Header: p=print;t=5;
. Sin pie de página.
Rejilla sin resolver:
##########
1___2___##
_###_#####
_###_#####
_###_#####
####_#####
####_#####
###3______
####_#####
####_#####
Pistas:
ACROSS
1: 8
3: A!
DOWN
1: 7
2: 10
Solución válida:
##########
print(8)##
(###+#####
7###=#####
)###5#####
####;#####
####p#####
###p('A!')
####t#####
####)#####
Ladrones (solucionadores)
Su tarea es resolver los crucigramas publicados por la policía. Debe usar el mismo lenguaje de programación exacto que el crucigrama, pero de lo contrario, cualquier solución que coincida con todas las pistas es válida.
No puede resolver sus propios crucigramas, y solo puede intentar responder cada uno de los otros crucigramas una vez.
Recuerde publicar sus soluciones en la pregunta complementaria .
Tanteo
Si un crucigrama se resuelve dentro de las 72 horas, ya no está en ejecución. Una vez que un crucigrama ha permanecido sin resolver durante 72 horas, se considera inmune y el creador puede publicar la solución (editando su publicación y marcándola inmune).
El policía ganador es el usuario que envió el crucigrama inmune con la menor cantidad de sombras ( #
). En caso de empate, gana la presentación más votada. La solución debe publicarse para que se acepte la respuesta.
El ladrón ganador es el usuario que resuelve la mayoría de los crucigramas. El desempate es su suma de votos positivos en la pregunta complementaria .
sha512sum <<<"
pie de página: "|head -c10
(en Bash).