Controllo di Boggle modificato, con codice di Boggle in grado di modificare


19

sfondo

Boggle è un gioco da tavolo in cui i giocatori devono trovare parole inglesi su un tabellone 4 per 4 di alfabeti casuali. Le parole possono essere costruite selezionando celle sequenzialmente adiacenti sulla lavagna. ("adiacente" significa orizzontale, verticale o diagonale adiacente.) Inoltre, la stessa cella non può essere utilizzata più di una volta in una parola.

Di seguito è riportato un esempio di scheda:

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

In questa scheda, BINGO, ORANGEe WEARSsono parole valide, ma SURGEe RUSSIAnon sono:

  • SURGE: Non ci sono coppie adiacenti sulla scheda RG.
  • RUSSIA: Snon può essere usato due volte.

Boggle modificato è una versione modificata di Boggle, con le seguenti regole:

  • La dimensione della scheda è n-by- n, dove npuò essere qualsiasi numero intero positivo.
  • Ogni cella può contenere un byte qualsiasi compreso tra 0 e 255 inclusi.
  • Una cella può essere utilizzata più di una volta, ma non due volte di seguito .

L'uso della scheda di esempio sopra, oltre a BINGO, ORANGEe WEARS, LANGUAGEdiventa una stringa valida (poiché Gviene utilizzata due volte, ma non due volte di seguito) ma non lo RUSSIAè ancora (a causa della SScoppia).

Ecco un altro esempio usando un frammento di codice. La stringa from itertools import*\npuò essere trovata sulla scheda seguente, ma non from itertoosl import*o from itertools import *:

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

Nota che hai bisogno di due oper abbinare la oosequenza.

Sfida

Scrivi una funzione o un programma che, data una scheda Boggle modificata B(di qualsiasi dimensione) e una stringa s, determina se è spossibile trovarla B.

restrizioni

Il codice stesso dovrebbe anche adattarsi a una scheda Boggle modificata b. Cioè, devi mostrare la scheda bnella tua richiesta insieme al tuo codice, in modo che la tua funzione / programma sia vera se viene data be il tuo codice come input.

punteggio

Il punteggio della tua presentazione è la lunghezza laterale della tavola più piccola in bcui puoi adattare il tuo codice. I legami sono interrotti dalle solite regole del , ovvero dalla lunghezza del codice in byte. Vince l'invio con il punteggio più basso (per entrambi i criteri).

Ad esempio, from itertools import*\nha il punteggio di 4 (usando la scheda sopra) e la lunghezza del codice di 23 byte.

Ingresso e uscita

Per l'input, puoi prendere qualsiasi metodo conveniente per entrambi Be s. Ciò include un elenco di caratteri e un elenco di caratteri, 2D o appiattiti o qualunque cosa abbia senso. Inoltre, puoi facoltativamente prendere la dimensione della scheda come parte dell'input.

Per l'output, puoi scegliere una delle seguenti opzioni:

  • Valori di verità e falsità secondo la convenzione della tua lingua, o
  • Un valore predefinito rispettivamente per true e false.

Si prega di specificare il metodo di input / output nell'invio.


Sospetto che qualche esolang che ha un set di caratteri molto piccolo che può stare su un 2x2 vincerà xD
HyperNeutrino,

E qualsiasi programma Unary segnerà 4 ma è quasi garantito che perderà a causa della regola del pareggio contro una lingua che utilizza in modo efficiente 4 simboli distinti.
Arnauld,

@Arnauld Stavo forse pensando a tinyBF e quando hai bisogno di due simboli adiacenti, fai semplicemente una +=+=cosa del genere. Il problema è la ==funzione di output ...
HyperNeutrino,

2
@ l4m2 Risolvere con un linguaggio del genere è sempre il benvenuto, ma fai attenzione all'avvertimento di Jo King sopra.
Bubbler,

3
Questa è davvero fonte limitata ? Penso che sia solo una duplice sfida (più per le lingue non golf), in cui dovresti trovare sia il codice che la scheda Boggle più piccola possibile in cui il codice si adatta.
Erik the Outgolfer,

Risposte:


10

Python 2, punteggio 3, 20972 byte

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)+…

Il codice completo è l'output di: provalo online!

Si adatta alla scheda Boggle:

e x (
c % 1
' + )

Decodifica ed esegue questo programma:

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)

Che richiede input come: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'


Sembra che io abbia trovato il modo di farlo in Jelly.
Erik the Outgolfer,

5

CJam , punteggio 2, 9351 byte

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

Provalo online! Si aspetta input come:

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

e si adatta alla scheda Boggle:

' )
~ )

Costruisce la stringa 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}%:|~quindi la valuta come codice CJam.


A meno che non esista un built-in da qualche parte (ti sto guardando, Mathematica), un punteggio di 2 è il più basso che puoi ottenere. Quindi ora la sfida è quella di realizzare una versione più corta della stessa dimensione.
Ingegnere Toast,

@EngineerToast Non solo un built-in. Deve essere un byte incorporato, poiché non è possibile utilizzare lo stesso spazio di commutazione più di una volta di fila.
mbomb007,

@ mbomb007 Questo è esattamente ciò che intendevo, ma non l'ho detto esplicitamente. Il chiarimento esclude lingue come Unary o qualsiasi altra cosa che abbia ripetuto lo stesso personaggio.
Ingegnere Toast,

3

Pulito , punteggio 12 (175 byte)

(Questo sarà quasi certamente superato da un esolang e probabilmente anche dalle lingue normali.)

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

Questo definisce una funzione $ :: Int [Char] {#String} -> Boolche controlla se il secondo argomento (la parola) può essere trovato nel terzo argomento (la scheda) dato il primo argomento come larghezza.

Nella scheda su cui si adatta (vedi sotto), *segna i luoghi non utilizzati. Ce ne sono 16, su una tavola di dimensioni 12 × 12 = 144, il che significa che 128 sono usati in modo efficace ( un'efficienza di 175/128 ≈ 1,37 ). Potrebbe essere possibile ottenere lo stesso programma su 11 × 11, ma tutto questo è fatto a mano e molto noioso; il mio capo probabilmente non sarebbe felice se provassi a prenderlo su 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

Provalo online (con il programma stesso come input)!


2

Java, punteggio 23, 538 507 byte

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();};}}

Provalo online!

Compilato con JDK 9, ma dovrebbe funzionare con 8.

Non sapevo cosa fare con le importazioni e il campo statico (che in realtà è necessario), quindi ho deciso di prendere l'intera classe e attaccare i lambda in un inizializzatore. La lambda gpuò quindi essere applicata su un array 2D e una stringa e restituisce 1se la stringa è nella scheda e, in 0caso contrario, (come Byte3 caratteri più corta di Integer).

Ringraziamo questo ragazzo per un modo (nel mio caso) più breve di quello hardcoding per indirizzare le celle vicine.

Da qualche parte nello sviluppo di questa mostruosità sono stato investito nel farlo funzionare con lambdas, è andato progressivamente peggiorando fino a quando non è successo. Non si avvicina nemmeno alle altre risposte e probabilmente non è nemmeno vicino alla soluzione ottimale in Java, ma ehi, si adatta abbastanza bene su una scheda 23x23 (che non è ottimale, ma forse più vicina del programma stesso) :

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,                            

Certo, a quel punto non aveva senso tentare di farlo a mano. Quindi come bonus, ecco la funzione (ingenua) che ho usato per comprimere il codice sulla scheda:

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

Mappa il suo input su una spirale che l'implementazione dello snaking non ha funzionato , lasciando i personaggi fuori se possibile. È piuttosto semplice, quindi probabilmente potrebbe essere migliorato e ho dimenticato di aggiungere il controllo dei caratteri nella direzione indietro-destra (aggiornamento: l'ho aggiunto e ha prodotto risultati errati) , quindi probabilmente potrei radere via uno o due caratteri ma dubito che stia ottenendo su un 22x22.

Modifica: rimossi 6 spazi nei punti in cui non erano necessari. Salvato 13 byte sostituendo un controllo sugli indici dell'array con un try-catch. Rimozione di 12 byte spostando la dimensione della scheda in un int.


1

Jelly , 2316 byte, punteggio 3

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

Provalo online!

Tavola:

1,v
D1J
§ịØ

Nota: questa è una soluzione (piuttosto) banale. Ringraziamo Lynn per l' idea .

Restituisce un elenco non vuoto, se spresente B, e un elenco vuoto, in caso contrario. Il piè di pagina aggiunto aiuta a chiarirlo.


Non ero sicuro che fosse permesso. Volevo restituire 0 se snon fosse stato trovato o un numero intero positivo se fosse stato trovato. Ma le regole dichiarano "Un valore predefinito rispettivamente per true e false". O sono vuote / non vuote per false / true convention in Jelly?

Il costrutto "if-like" di @Keelan Jelly, che, per impostazione predefinita, definisce la veridicità di un valore, considererà una lista vuota falsa e qualsiasi altra lista veritiera. È davvero solo la convenzione di Python 3 (poiché è quello in cui è implementata Jelly).
Erik the Outgolfer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.