Código Boggle modificado y salida: Edición CnR (Cops)


8

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, ORANGEy WEARSson palabras válidas, pero SURGEy RUSSIAno lo son:

  • SURGE: No hay par adyacente en el tablero que tenga RG.
  • RUSSIA: Sno 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, donde my npuede 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, ORANGEy WEARS, se LANGUAGEconvierte en una cadena válida (ya que Gse usa dos veces, pero no dos veces seguidas) pero RUSSIAaún no lo es (debido al SSpar).

Aquí hay otro ejemplo usando un fragmento de código. La cadena from itertools import*\nse 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 opara que coincida con la oosecuencia.


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.

Solo para asegurarnos, tanto los bytes de salida como de entrada se pueden reutilizar, pero no se pueden usar dos veces seguidas, ¿verdad?
maxb

@maxb Tienes razón, excepto que es código , no entrada (el código no puede recibir ninguna entrada).
Bubbler

Mi error, me refería al código. ¿Hay algún límite en la longitud de salida?
maxb

@maxb Sin límites, pero tenga en cuenta que su programa debería finalizar en 5 segundos.
Bubbler

He estado tratando de encontrar una salida no trivial solo para brainfuck []+., pero creo que podría ser imposible. ¿A alguien le importa probar?
Jo King

Respuestas:


3

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

aN

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.


1
Lo que el JSF ** k! lmao, y apuesto a que la salida esNaN
Shieru Asakoto

@ShieruAsakoto Tenías una grieta válida. Volveré a su estado original, y puedes recuperar tu respuesta. Volveré a enviar con una aclaración.
Khuldraeseth na'Barya


3

JavaScript (Node.js), código 53 bytes, salida 41 bytes, descifrado por Arnauld

Tablero de códigos: 3 filas por 6 columnas:

cog(n)
lsn1()
e.+<<;

Tablero de salida: 4 filas por 6 columnas:

481534
270906
602148
53829n

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**128con un final que nmarca el número como un literal BigInt.


2
Si esto no comienza console.log,
quedaré

2
Un solo número no puede imprimirse como 41 dígitos. Debería haber una forma de convertir a una cadena, pero ... consoleno 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é consolelas propiedades globales de Node y sus propiedades, pero nada cabe allí.
Bubbler


2

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:

e.i--)=%5
lc;,2s*17
fosn8407%
gnr785138
s(;527067
=);s%1419
4n,i=1832

Tablero de salida: 1 filas por 2 columnas:

0n

El resultado es obvio, pero el código no lo es. ;)

Mi respuesta original fue una prueba LL de M 127 , que fue

for(s=4n,i=125;i;s%=170141183460469231731687303715884105727n,i--)s=s*s-2n;console.log(s)

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%=sparte en absoluto:

s=4n;s%=s;7n;console.log(s)

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



1

MathGolf, código 42 bytes, salida 22 bytes

Tablero de códigos: 3 filas por 7 columnas

 r5 qÄ 
~←▲↔▼→~
 Äq 5r 

Tablero de salida: 3 filas por 6 columnas:

421
402
135

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.


1

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

aN

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.



¿No es esto idéntico a tu otra publicación de JS?
Shaggy

@Shaggy Al primero le faltaba la mención completa del programa y, en cambio, estaba descifrado como REPL.
Arnauld

1

Python 3, código 56 bytes, salida 69 bytes, SEGURO

Tablero de códigos: 4 filas por 10 columnas:

  print(1,
b; f,)*l(1
 =lamb+a,)
ese d:(-1)

Tablero de salida: 7 filas por 7 columnas:

1466900
3427430
1304212
9653895
0511633
5680228
4437679

Mucho difícil que mi primer desafío;)

Código esperado y salida:

Código:

l=lambda a,b:(a+b)*l(a-1,a*b)if a else b;print(l(11,11))

Salida:

421827435070654423113161304555505960246647934329322186026783332352000

Me encanta cómo no puedes formar lambda xD
Quintec

Puede, reutilizar una carta está permitido, pero no dos veces directamente seguidas. (Creo que tengo la forma de este abajo, pero es muy modificable, y esa salida podría ser cualquier cosa ... Encontré un programa de 56 bytes con salida de 69 bytes, pero no está en el tablero de Boggle.)
Lynn

OK, me acabo de dar cuenta de que la salida puede ser más larga, lo que cambia las cosas. Pero todavía no veo una manera de "engañarlo" (apuesto a que hay alguna forma de salida 10^lots, sin embargo).
Lynn

1
Apuesto a que debería verse así l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))... Pero no puedo encontrar uno.
tsh

0

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

╒Æ■r
îm4~

Tablero de salida: 2 filas por 3 columnas

140
412

0

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

»V
”;
“;

Tablero de salida

Krgwn
Ubots
RAbbt

0

J (REPL), código 9 bytes, salida 10000 bytes

Tablero de códigos: 3 filas, 3 columnas

epi
j.r
oI5

Tablero de salida: 3 filas, 2 columnas, como valores de bytes

10  10
48  49
32  255

En esencia, \n\n/ 01/ <space><don't use>.

La solución prevista proporciona una salida de 20008 bytes.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.