Verificador de Boggle modificado, con código de Boggle modificado

19

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 n-by- n, donde 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 .

Usar el panel 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

Escriba una función o programa que, dado un tablero de Boggle modificado B(de cualquier tamaño) y una cadena s, determine si sse puede encontrar en él B.

Restricciones

Su código en sí también debe caber en un tablero de Boggle modificado b. Es decir, debe mostrar el tablero ben su envío junto con su código, de modo que su función / programa salga verdadero si se proporciona by su código como entrada.

Puntuación

El puntaje de su envío es la longitud lateral del tablero más pequeño bdonde puede ajustar su código. Los empates se rompen por las reglas habituales de , es decir, la longitud de su código en bytes. La presentación con el puntaje más bajo (para ambos criterios) gana.

Por ejemplo, from itertools import*\ntiene un puntaje de 4 (usando la tabla anterior) y una longitud de código de 23 bytes.

Entrada y salida

Para la entrada, puede tomar cualquier método conveniente para ambos By s. Esto incluye una lista de caracteres y una lista de códigos de barras, 2D o aplanados o lo que tenga sentido. Además, opcionalmente puede tomar el tamaño de la placa como parte de la entrada.

Para la salida, puede elegir uno de los siguientes:

  • Valores de verdad y falsedad siguiendo la convención de su idioma, o
  • Un valor predefinido para verdadero y falso respectivamente.

Especifique su método de entrada / salida en su envío.

Bubbler
fuente
Sospecho que algo de esolang que tiene un juego de caracteres muy pequeño que puede caber en un 2x2 ganará xD
HyperNeutrino
Y cualquier programa de Unary va a obtener un puntaje de 4 pero está casi garantizado que perderá debido a la regla de empate contra un idioma que usa eficientemente 4 símbolos distintos.
Arnauld
@Arnauld Estaba pensando que quizás tinyBF y cuando necesitas dos símbolos adyacentes simplemente haces una +=+=o algo así. El problema es la ==función de salida ...
HyperNeutrino
2
@ l4m2 Resolver con un lenguaje así siempre es bienvenido, pero ten cuidado con la advertencia de Jo King anterior.
Bubbler
3
¿Es esto realmente una fuente restringida ? Creo que es solo un desafío doble (más para los idiomas que no son de golf), donde se supone que debes encontrar tanto el código como la tabla Boggle más pequeña posible en la que se ajuste el código.
Erik the Outgolfer

Respuestas:

10

Python 2, puntaje 3, 20972 bytes

exec'cecxc%c'%(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1)+…

El código completo es el resultado de: ¡ Pruébelo en línea!

Se adapta a la tabla Boggle:

e x (
c % 1
' + )

Decodifica y ejecuta este programa:

cecxc=any
c,cec=input()
cxec=len(c)
cexec=lambda    cxc,cexc,c,cec:cexc<=''or   cxc[cec][c]==cexc[0]>0<cecxc(cexec(cxc,cexc[1:],cxcxc,cxcec)for cxcxc   in(c-(c>0),c,c+(+1+c<cxec))for  cxcec   in(cec-(cec>0),cec,cec+(+1+cec<cxec))if(cxcxc,cxcec)!=(c,cec))
cxc=range(cxec)
print   cecxc(cexec(c,cec,cexc,cxec)for cexc    in  cxc for cxec    in  cxc)

Que toma entrada como: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'

Lynn
fuente
Hm, parece que he encontrado una manera de hacerlo en Jelly.
Erik the Outgolfer
5

CJam , puntaje 2, 9351 bytes

'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~)))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))~

Pruébalo en línea! Espera entradas como:

["ILWA" "BNGE" "IUAO" "ASRL"]
LANGUAGE

y cabe en el tablero Boggle:

' )
~ )

Construye la cadena y l~:Q,:K;{\:Y;\:X;:C,!_{;QY=X=C0==_{;[X(XX)]K,&[Y(YY)]K,&m*[XY]a-C1>:D;{~DF}%:|}&}|}:F;l:R;K,2m*{~RF}%:|~luego la evalúa como código CJam.

Lynn
fuente
A menos que exista un incorporado en algún lugar (te estoy mirando, Mathematica), una puntuación de 2 es lo más bajo que puedes obtener. Así que ahora el desafío es hacer una versión más corta del mismo tamaño.
Engineer Toast
@EngineerToast No solo cualquier incorporado. Tiene que ser un byte incorporado, porque no puede usar el mismo espacio de boggle más de una vez en una fila.
mbomb007
@ mbomb007 Eso es exactamente lo que quise decir, pero no lo dije explícitamente. La aclaración descarta idiomas como Unary o cualquier otra cosa que sea el mismo carácter repetido.
Engineer Toast
3

Limpio , puntaje 12 (175 bytes)

(Esto seguramente será superado por un esolang y probablemente también por los idiomas normales).

import StdEnv;>[]_ _ _ _=True;>[c:s]i j n a=i<n&&j<n&&i>=0&&j>=0&&a.[i,j]==c&&or[>s k l n a\\k<-[i-1..i+1],l<-[j-1..j+1]|i<>k||j<>l];$n c a=or[>c i j n a\\i<-[0..n],j<-[0..n]]

Esto define una función $ :: Int [Char] {#String} -> Boolque verifica si el segundo argumento (la palabra) se puede encontrar en el tercer argumento (el tablero) dado el primer argumento como ancho.

En el tablero en el que encaja esto (ver más abajo), *marca los lugares no utilizados. Hay 16 de ellos, en un tablero de tamaño 12 × 12 = 144, lo que significa que 128 se usan de manera efectiva (una eficiencia de 175/128 ≈ 1.37 ). Es posible obtener el mismo programa en 11 × 11, pero todo esto se hace a mano y muy tedioso; mi jefe probablemente no estaría feliz si tratara de ponerlo en 11 × 11.

* * & & * * * * * * * ;
s [ n < j * * u r T > v
  > r & i > * e =   [ n
l k o & 0 = n   ; _ ] E
  & a . = ] a j i > [ d
a n & c [ j . + ] s c t
\ k < - i , - . 1 | : S
\ * 1 l . + 1 = i j |  
[ i \ . , ] o a < > k t
0 - < \ a   r >   l ] r
. j , * n j [ i c $ ; o
. n ] ] * *     n i m p

¡Pruébelo en línea (con el programa como entrada)!


fuente
2

Java, puntaje 23, 538 507 bytes

NSFW

import java.util.function.*;import java.util.stream.*;class B{static BiFunction<char[][],String,BiFunction<Integer,Integer,Byte>>f;{f=(b,s)->(i,j)->{try{if(b[i][j]!=s.charAt(0))return 0;}catch(Exception e){return 0;}if(s.length()<2)return 1;byte t=0;for(int k=9;k-->1;){t|=f.apply(b,s.substring(1)).apply(i+~k%3+1,j+~(k/3)%3+1);}return t;};BiFunction<char[][],String,Byte>g=(b,s)->{int l=b.length;return (byte)IntStream.range(0,l*l).map(i->f.apply(b,s).apply(i%l,i/l)).reduce((x,y)->x+y-x*y).getAsInt();};}}

Pruébalo en línea!

Compilado con JDK 9, pero debería funcionar con 8.

No sabía qué hacer con las importaciones y el campo estático (que de hecho es necesario), así que decidí tomar toda la clase y pegar las lambdas en un inicializador. La lambda gse puede aplicar en una matriz 2D y una cadena, y devuelve 1si la cadena está en el tablero y 0si no (como un Byte, 3 caracteres más cortos que Integer).

Le doy crédito a este tipo por una forma (en mi caso) más corta que la codificada para abordar las celdas vecinas.

En algún lugar en el progreso de hacer esta monstruosidad me invertí en hacer que funcionara con lambdas, empeoró progresivamente cada vez más hasta que esto sucedió. Ni siquiera se acerca a las otras respuestas y probablemente ni siquiera se acerca a la solución óptima en Java, pero bueno, encaja bastante bien en una placa de 23x23 (que no es óptima, pero tal vez más cerca que el programa en sí) :

duce((x,y)->x+y-x*y).ge
e l=b.length;return (bt
rt3+1,j+~(k/3)%3+1);}yA
.n%te t=0;for(int k=rts
)iky0;}catchExcepti9e)I
){~b (b,s)->(i,j)-o;tIn
l>+;n=ring,iFunct>nkunt
/-i1rftass B{stai{ -rt(
i)( u{Slport jatote-nS)
,synt;,cmutil.vinr)> t;
l,lref];i.porfac<y{1tr}
%bpur>[*;amitu. I{r;}e;
i(pt)>].*vaj nuBnie);a}
y=ae)e[m.noitctitft{Bm}
lg.r0traerts.liFe(uti.}
p>))(yhc<noitcnugbr|Fr 
pe12tB,regetnI,re[n=ua 
at(<Arahc.s=!]j[]i fng 
.yg)(htgnel.s(fi};0.ce 
)Bnirtsbus.s,b(ylppat( 
s,gnirtS,][][rahc<noi0 
,b(ylppa.f>-i(pm.)l*l,                            

Por supuesto, en ese punto no tenía sentido tratar de hacer eso a mano. Como beneficio adicional, aquí está la función (ingenua) que usé para comprimir el código en el tablero:

static char[][] toBoggleBoard(String s, int n) {

    char[][] board = new char[n][n];
    int i = n / 2;
    int j = i;
    int[] d = {1, 0};

    s = s + s.charAt(s.length() - 1); //the last char gets eaten don't ask me why PS editing loop condition does make it work but causes a StringIndexOutOfBoundsException
    board[i][j] = s.charAt(0);
    s = s.substring(1);
    while (s.length() > 0)
    {
        int[] ra = add(d, right(d));
        int[] r = right(d);
        int[] l = left(d);

        if (board[i + d[0]][j + d[1]] > 0)
        {
            if (board[i + d[0]][j + d[1]] == s.charAt(0))
            {
                i += d[0];
                j += d[1];
                s = s.substring(1);
            }
            else
            {
                i += l[0];
                j += l[1];
                board[i][j] = s.charAt(0);
                s = s.substring(1);
            }
        }
        else if (board[i + ra[0]][j + ra[1]] == s.charAt(0))
        {
            i += ra[0];
            j += ra[1];
            s = s.substring(1);
        }
        else if (board[i + r[0]][j + r[1]] > 0)
        {
            i += d[0];
            j += d[1];
            board[i][j] = s.charAt(0);
            s = s.substring(1);
        }
        else
        {
            int[] rb = sub(r, d);
            d = r;
            if (board[i + rb[0]][j + rb[1]] > 0)
            {
                continue;
            }
            else
            {
                i += d[0];
                j += d[1];
                board[i][j] = s.charAt(0);
                s = s.substring(1);
            }   
        }
    }

    for (int k = 0; k < board.length; ++k)
    {
        for (int l = 0; l < board.length; ++l)
        {
            if (board[k][l] == 0)
            {
                board[k][l] = ' ';
            }
        }
    }

    return board;
}

static int[] left(int[] d) {
    return new int[]{-d[1], d[0]};
}

static int[] right(int[] d) {
    return new int[]{d[1], -d[0]};
}

static int[] add(int[] x, int[] y) {
    return new int[]{x[0] + y[0], x[1] + y[1]};
}

static int[] sub(int[] x, int[] y) {
    return new int[]{x[0] - y[0], x[1] - y[1]};
}

Mapea su entrada en una espiral que la implementación de la serpiente no funcionó , dejando los caracteres fuera si es posible. Es bastante simple, por lo que probablemente podría mejorarse y olvidé agregar la verificación de caracteres en la dirección hacia atrás-derecha (actualización: lo agregué y produjo resultados incorrectos) , por lo que probablemente podría eliminar uno o dos caracteres, pero dudo que esté obteniendo en un 22x22.

Editar: Se eliminaron 6 espacios en lugares donde no necesitaban estar. Ahorró 13 bytes al reemplazar una verificación en los índices de la matriz con un try-catch. Afeitó 12 bytes moviendo el tamaño de la placa a un int.

S.Klumpers
fuente
1

Gelatina , 2316 bytes, puntaje 3

1111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111,11111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111,11111111111111111111111111111111111111111111111,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111D§ịØJv

Pruébalo en línea!

Tablero:

1,v
D1J
§ịØ

Nota: esta es una solución (algo) trivial. Gracias a Lynn por la idea .

Devuelve una lista no vacía si sse puede encontrar en ella B, y una lista vacía si no. El pie de página agregado ayuda a aclarar eso.

Erik el Outgolfer
fuente
No estaba seguro si esto estaba permitido. Quería devolver 0 si sno se podía encontrar, o un entero positivo si se podía encontrar. Pero las reglas establecen "Un valor predefinido para verdadero y falso respectivamente". ¿O están vacíos / no vacíos para una convención falsa / verdadera en Jelly?
La construcción "if-like" de @Keelan Jelly, que, por defecto, define la veracidad de un valor, considerará que una lista vacía es falsa y que cualquier otra lista es verdadera. Realmente es solo la convención de Python 3 (ya que eso es en lo que se implementa Jelly).
Erik the Outgolfer