Este es el hilo de los policías. El hilo de los ladrones está aquí .
Antecedentes
Boggle es un juego de mesa donde los jugadores tienen que encontrar palabras en inglés en un tablero de 4 por 4 de alfabetos aleatorios. Las palabras se pueden construir seleccionando celdas secuencialmente adyacentes en el tablero. ("adyacente" significa horizontal, vertical o diagonalmente adyacente). Además, la misma celda no se puede usar más de una vez en una palabra.
El siguiente es un tablero de ejemplo:
I L A W
B N G E
I U A O
A S R L
En este tablero, BINGO
, ORANGE
y WEARS
son palabras válidas, pero SURGE
y RUSSIA
no lo son:
SURGE
: No hay par adyacente en el tablero que tengaRG
.RUSSIA
:S
no se puede usar dos veces.
Boggle modificado es una versión modificada de Boggle, con las siguientes reglas:
- El tamaño de la placa es
m
-by-n
, dondem
yn
puede ser cualquier número entero positivo. - Cada celda puede contener cualquier byte entre 0 y 255 inclusive.
- Una celda se puede usar más de una vez, pero no dos veces seguidas.
El uso de la tabla de ejemplo anterior, además de BINGO
, ORANGE
y WEARS
, se LANGUAGE
convierte en una cadena válida (ya que G
se usa dos veces, pero no dos veces seguidas) pero RUSSIA
aún no lo es (debido al SS
par).
Aquí hay otro ejemplo usando un fragmento de código. La cadena from itertools import*\n
se puede encontrar en el siguiente tablero, pero no from itertoosl import*
o from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Tenga en cuenta que necesita dos o
para que coincida con la oo
secuencia.
Desafío de la policía
Escriba un programa completo en su idioma de elección que satisfaga las siguientes reglas:
- El programa debe imprimir algo que sea consistente en varias ejecuciones.
- El programa debería finalizar en aproximadamente 5 segundos.
- El programa no puede tomar ninguna entrada.
- Tanto el programa como la salida deben tener al menos 2 bytes.
- Todo lo relacionado con funciones hash, PRNG o criptografía no está permitido.
Luego, diseñe su programa y salida en dos tableros modificados por separado . Cada tablero puede ser un no cuadrado. Tenga en cuenta que los tableros 1 por N y 2 por N pueden plantear desafíos especiales tanto para el policía como para el ladrón. Si desea que algunas celdas de una placa no se puedan usar (para agregar más restricciones), puede elegir algunos bytes inútiles y llenar los agujeros con ellas.
Por ejemplo, si desea una cuadrícula de 2x2 con movimientos horizontales / verticales solamente, puede hacer esto en su lugar:
a b
c d
-----------
X a X
c X b
X d X
En su envío, especifique el idioma que utilizó, las longitudes del código fuente y la salida, y los dos tableros de palanca. Tenga en cuenta que se permite un código más corto y / o una salida más larga para los ladrones , por lo que puede optar por dar algo de espacio para el recuento de bytes (es decir, especificar un código más largo y / o una salida más corta que su solución real).
Si su tablero contiene algunos caracteres no imprimibles, puede especificar el tablero como valores de byte.
Después de una semana se publica un policía, puede ser marcado como seguro por el póster si no está descifrado hasta entonces. El policía todavía está abierto para los ladrones hasta que esté marcado como seguro. Un policía seguro no puede ser descifrado, y el póster debe revelar la solución deseada.
Querrás ofuscar los paneles tanto como sea posible, ya que el desafío del ladrón es descifrar tu presentación al encontrar el código y su salida en los paneles. Si desea meter un código largo en un tablero pequeño, las respuestas al desafío Boggle modificado original pueden dar algunas ideas.
Puntuación para policías
Dado que es difícil decir si un tablero más grande o más pequeño es más difícil de descifrar, cada presentación segura de un policía cuenta como un puntaje de 1. El usuario con el puntaje más alto gana. Se alienta a participar con diferentes idiomas y enfoques creativos.
Cop ejemplo y formato
# Japt, code 9 bytes, output 20 bytes
Code board: 2 rows, 2 columns
`l
íÏ
As byte values:
96 108
237 207
Output board: 3 rows, 3 columns
175
120
643
Script de verificación de Boggle modificado
Todos los scripts a continuación tienen una entrada de ejemplo.
Script para cadena de caracteres (código / salida) y boggle. Esto no admite cadenas de varias líneas. El formato de entrada es
- una sola línea de cadena (código o salida), seguida de
- El tablero de boggle crudo.
Script para cadena de caracteres con boggle de valor de byte. Use esto si la cadena de destino es imprimible pero tiene una o más líneas nuevas. El formato de entrada es
- el número de líneas para la cadena
- cadena sin procesar (posiblemente multilínea), luego
- el tablero de boggle como valores de byte.
Script para cadena de valor de byte y boggle. Use esto si la cadena de destino contiene uno o más caracteres no imprimibles. El formato de entrada es
- una sola línea de cadena (ya sea código o salida) como valores de bytes, seguido de
- el tablero de boggle como valores de byte.
[]+.
, pero creo que podría ser imposible. ¿A alguien le importa probar?