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.
fuente
[]+.
, pero creo que podría ser imposible. ¿A alguien le importa probar?Respuestas:
JavaScript, código de 1443 bytes, salida de 3 bytes, descifrado en instantes por @ShieruAsakoto
Tablero de códigos, 3 filas por 4 columnas
Tablero de salida, 1 fila por 2 columnas
Un poco obvio cuál es la salida.
Será el código divertido de descifrar.Olvidé mencionar que estaba destinado a ser un programa completo (e implicaba un poco que no lo era; ver el párrafo a continuación). Para el verdadero desafío, vea mi otra respuesta .No creo que esto sea Node.js, pero mi conocimiento en esta área es cero. Lo que puedo decir es que se ejecuta en mi consola tanto en Edge como en Chrome.
fuente
NaN
JavaScript (Node.js), código 53 bytes, salida 41 bytes, descifrado por Arnauld
Tablero de códigos: 3 filas por 6 columnas:
Tablero de salida: 4 filas por 6 columnas:
Sugerencia: el código solo funciona en motores V8 JS, versión 6.7 o posterior
El mío era
console.log(1n+1n+1n<<(1n+1n+1n+1n<<1n+1n+1n+1n+1n));
con punto y coma (no preguntes por qué) y el resultado es sí,3 * 2**128
con un final quen
marca el número como un literal BigInt.fuente
console.log
,console
no está disponible excepto al inicio, sin asignación, sin cadena literal, sin paréntesis (por lo tanto, no hay literal de matriz ni indexación). Incluso reviséconsole
las propiedades globales de Node y sus propiedades, pero nada cabe allí.JavaScript (Node.js), código 88 bytes, salida 2 bytes, descifrado por Arnauld con un byte de 27
Tablero de códigos: 7 filas por 9 columnas:
Tablero de salida: 1 filas por 2 columnas:
El resultado es obvio, pero el código no lo es. ;)
Mi respuesta original fue una prueba LL de M 127 , que fue
La respuesta de Arnauld utilizó los puntos y comas para cerrar una grieta más corta, y no esperaba (ni me di cuenta) la
s%=s
parte en absoluto:Ah, por cierto, mis 3 publicaciones no tienen absolutamente nada que ver con funciones hash, PRNG o criptografía. Juro que estos tres son solo sobre manipulaciones de números.
hay bytes no utilizados en el tablero de códigos
fuente
MathGolf, código 42 bytes, salida 22 bytes
Tablero de códigos: 3 filas por 7 columnas
Tablero de salida: 3 filas por 6 columnas:
Esto es un poco más largo, pero daré una pequeña pista: se supone que el tablero de códigos se parece a un corbatín, y es posible que deba "atarlo" varias veces.
fuente
JavaScript, código de 1443 bytes, salida de 3 bytes, descifrado por @Bubbler
Un programa completo
Tablero de códigos, 3 filas por 4 columnas
Tablero de salida, 1 fila por 2 columnas
Un poco obvio cuál es la salida. Será el código divertido de descifrar.
No creo que esto sea Node.js, pero mi conocimiento en esta área es cero. Lo que puedo decir es que se ejecuta tanto en Edge como en Chrome. Por "programa completo" quiero decir que se ejecuta cuando se coloca entre
<script>
y</script>
en un archivo HTML.fuente
Python 3, código 56 bytes, salida 69 bytes, SEGURO
Tablero de códigos: 4 filas por 10 columnas:
Tablero de salida: 7 filas por 7 columnas:
Mucho difícil que mi primer desafío;)
Código esperado y salida:
fuente
10^lots
, sin embargo).l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))
... Pero no puedo encontrar uno.MathGolf, código 7 bytes, salida 12 bytes
¡Solo un primer desafío fácil, si quieres entrar en MathGolf!
Tablero de códigos: 2 filas por 4 columnas
Tablero de salida: 2 filas por 3 columnas
fuente
Gelatina, código de 17 bytes, salida de 19 bytes
El método general no debería ser demasiado difícil de elegir.
Tablero de códigos
Tablero de salida
fuente
J (REPL), código 9 bytes, salida 10000 bytes
Tablero de códigos: 3 filas, 3 columnas
Tablero de salida: 3 filas, 2 columnas, como valores de bytes
En esencia,
\n\n
/01
/<space><don't use>
.La solución prevista proporciona una salida de 20008 bytes.
fuente