Verificador Boggle modificado, com código capaz de Boggle modificado

19

fundo

Boggle é um jogo de tabuleiro em que os jogadores precisam encontrar palavras em inglês em um tabuleiro 4 por 4 de alfabetos aleatórios. As palavras podem ser construídas selecionando células sequencialmente adjacentes no quadro. ("adjacente" significa horizontal, vertical ou diagonalmente adjacente.) Além disso, a mesma célula não pode ser usada mais de uma vez em uma palavra.

A seguir, é apresentado um quadro de exemplo:

I L A W
B N G E
I U A O
A S R L

Nesta placa, BINGO, ORANGEe WEARSsão palavras válidas, mas SURGEe RUSSIAnão são:

  • SURGE: Não existe um par adjacente no tabuleiro RG.
  • RUSSIA: Snão pode ser usado duas vezes.

Boggle modificado é uma versão modificada do Boggle, com as seguintes regras:

  • O tamanho da placa é n-by- n, onde npode ser qualquer número inteiro positivo.
  • Cada célula pode conter qualquer byte entre 0 e 255, inclusive.
  • Uma célula pode ser usada mais de uma vez, mas não duas vezes seguidas .

O uso do quadro de exemplo acima, além de BINGO, ORANGEe WEARS, LANGUAGEtorna-se uma sequência válida (já que Gé usada duas vezes, mas não duas vezes seguidas), mas RUSSIAainda não é (devido ao SSpar).

Aqui está outro exemplo usando um fragmento de código. A string from itertools import*\npode ser encontrada no quadro a seguir, mas não from itertoosl import*ou from itertools import *:

f   i   ' ' s
r   t   m   l
e   o   o   p
\n  *   t   r

Observe que você precisa de dois opara corresponder à oosequência.

Desafio

Escreva uma função ou programa que, considerando uma placa Boggle modificada B(de qualquer tamanho) e uma string s, determine se ela spode ser encontrada B.

Restrições

Seu próprio código também deve caber em uma placa Boggle modificada b. Ou seja, você deve mostrar ao quadrob em sua submissão junto com seu código, para que sua função / programa seja verdadeiro se for fornecido be seu código como entrada.

Pontuação

A pontuação do seu envio é o comprimento lateral da menor placa bonde você pode ajustar seu código. Os laços são quebrados pelas regras usuais de , ou seja, o tamanho do seu código em bytes. A finalização com a pontuação mais baixa (para ambos os critérios) vence.

Por exemplo, from itertools import*\ntem a pontuação 4 (usando o quadro acima) e o comprimento do código de 23 bytes.

Entrada e saída

Para entrada, você pode tomar qualquer método conveniente para ambos Bes . Isso inclui uma lista de caracteres e uma lista de códigos, 2D ou achatada ou o que fizer sentido. Além disso, você pode opcionalmente considerar o tamanho da placa como parte da entrada.

Para saída, você pode escolher um dos seguintes:

  • Valores verdadeiros e falsos após a convenção de seu idioma ou
  • Um valor predefinido para true e false, respectivamente.

Especifique seu método de entrada / saída no seu envio.

Bubbler
fonte
Eu suspeito que alguns esolang que tem uma muito pequena charset que pode caber em um 2x2 vai ganhar xD
HyperNeutrino
E qualquer programa Unary terá 4 pontos, mas quase perderá por causa da regra do empate contra um idioma com eficiência, usando 4 símbolos distintos.
Arnauld
@ Arnauld Eu estava pensando, talvez tinyBF e quando você precisa de dois símbolos adjacentes você apenas faz um +=+=ou algo assim. O problema é a ==função de saída ...
HyperNeutrino
2
@ l4m2 Resolver com esse idioma é sempre bem-vindo, mas cuidado com o aviso de Jo King acima.
Bubbler
3
Essa fonte é realmente restrita ? Eu acho que é apenas um desafio duplo (mais para idiomas que não praticam golfe), onde você deve encontrar o código e o menor quadro Boggle possível no qual o código se encaixa.
Erik the Outgolfer

Respostas:

10

Python 2, pontuação 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)+…

O código completo é o resultado de: Experimente online!

Cabe no quadro Boggle:

e x (
c % 1
' + )

Decodifica e executa 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)

O que leva a entrada como: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'

Lynn
fonte
Parece que eu encontrei uma maneira de fazer isso em Jelly.
Erik the Outgolfer
5

CJam , pontuação 2, 9351 bytes

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

Experimente online! Espera entrada como:

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

e cabe no quadro Boggle:

' )
~ )

Constrói a sequência 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}%:|~e a avalia como código CJam.

Lynn
fonte
A menos que exista um built-in em algum lugar (estou olhando para você, Mathematica), uma pontuação de 2 é a mais baixa que você pode obter. Então agora o desafio é criar uma versão mais curta do mesmo tamanho.
Engineer Toast
@EngineerToast Não é apenas um built-in. Ele deve ter um byte interno, porque você não pode usar o mesmo espaço de boggle mais de uma vez em uma linha.
Mbomb007
@ mbomb007 Foi exatamente o que eu quis dizer, mas não o disse explicitamente. O esclarecimento exclui idiomas como Unary ou qualquer outra coisa com o mesmo caractere repetido.
Engineer Toast
3

Limpo , pontuação 12 (175 bytes)

(Isso quase certamente será superado por um esolang e provavelmente também por idiomas normais.)

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]]

Isso define uma função $ :: Int [Char] {#String} -> Boolque verifica se o segundo argumento (a palavra) pode ser encontrado no terceiro argumento (o quadro), dado o primeiro argumento como largura.

No quadro em que isso se encaixa (veja abaixo), *marca os lugares não utilizados. Há 16 deles, em uma placa de tamanho 12 × 12 = 144, o que significa que 128 são usados ​​com eficiência (uma eficiência de 175/128 ≈ 1,37 ). Pode ser possível obter o mesmo programa em 11 × 11, mas tudo isso é feito à mão e muito tedioso; meu chefe provavelmente não ficaria feliz se eu tentasse obtê-lo em 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

Experimente online (com o próprio programa como entrada)!


fonte
2

Java, pontuação 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();};}}

Experimente online!

Compilado com o JDK 9, mas deve funcionar com o 8.

Como não sabia o que fazer com as importações e o campo estático (o que é de fato necessário), decidi apenas pegar a classe inteira e colocar as lambdas em um inicializador. O lambda gpode então ser aplicado em uma matriz 2D e em uma string, e retorna 1se a string estiver no quadro e 0se não estiver (como Byte, 3 caracteres menores que Integer).

Agradeço a esse cara por uma (no meu caso) uma maneira mais curta do que codificada para endereçar as células vizinhas.

Em algum momento do progresso de fazer essa monstruosidade, eu fui investido em fazê-lo funcionar com lambdas, e foi ficando cada vez pior e pior até que isso acontecesse. Ele nem chega perto das outras respostas e provavelmente nem chega perto da solução ideal em Java, mas, ei, ele se encaixa perfeitamente em uma placa 23x23 (o que não é ideal, mas talvez mais próximo do que o próprio programa) :

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,                            

Claro, naquele momento não havia sentido em tentar fazer isso manualmente. Então, como bônus, aqui está a função (ingênua) que usei para compactar o código no quadro:

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]};
}

Ele mapeia sua entrada para uma espiral em que a implementação da serpente não funcionou , deixando os caracteres de fora, se possível. É bastante simples, então provavelmente poderia ser melhorado e eu esqueci de adicionar a verificação de caracteres na direção contrária à direita (atualização: adicionei-a e produziu resultados incorretos) , então eu provavelmente poderia cortar um ou dois caracteres, mas duvido que esteja ficando em um 22x22.

Edit: Removidos 6 espaços em lugares que não precisavam estar. Economizou 13 bytes substituindo uma verificação nos índices da matriz por uma tentativa de captura. Corte 12 bytes movendo o tamanho da placa para um int.

S.Klumpers
fonte
1

Gelatina , 2316 bytes, pontuação 3

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

Experimente online!

Borda:

1,v
D1J
§ịØ

Nota: esta é uma solução (um tanto) trivial. Agradecemos a Lynn pela ideia .

Retorna uma lista não vazia, se sfor encontrada B, e uma lista vazia, se não. O rodapé adicionado ajuda a esclarecer isso.

Erik, o Outgolfer
fonte
Eu não tinha certeza se isso era permitido. Eu queria retornar 0 se snão pudesse ser encontrado ou um número inteiro positivo se pudesse ser encontrado. Mas as regras declaram "Um valor predefinido para verdadeiro e falso, respectivamente". Ou estão vazias / não vazias para convenções falsas / verdadeiras no Jelly?
A construção "if-like" de @Keelan Jelly, que, por padrão, define a veracidade de um valor, considerará uma lista vazia como falsa e qualquer outra lista como verdadeira. É realmente apenas a convenção do Python 3 (já que é nisso que o Jelly é implementado).
Erik the Outgolfer