Modified Boggle Checker, avec code modifié Boggle

19

Contexte

Boggle est un jeu de plateau où les joueurs doivent trouver des mots anglais sur un tableau 4 par 4 d'alphabets aléatoires. Les mots peuvent être construits en sélectionnant des cellules adjacentes séquentielles sur la carte. ("adjacent" signifie horizontalement, verticalement ou diagonalement adjacent.) De plus, la même cellule ne peut pas être utilisée plus d'une fois dans un mot.

Voici un exemple de tableau:

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

Sur ce plateau, BINGO, ORANGEet WEARSsont des mots valides, mais SURGEet RUSSIAne sont pas:

  • SURGE: Il n'y a pas de paire adjacente sur la carte RG.
  • RUSSIA: Sne peut pas être utilisé deux fois.

Boggle modifié est une version modifiée de Boggle, avec les règles suivantes:

  • La taille de la carte est n-par- n, où npeut être n'importe quel entier positif.
  • Chaque cellule peut contenir n'importe quel octet compris entre 0 et 255 inclus.
  • Une cellule peut être utilisée plusieurs fois, mais pas deux fois de suite .

L'utilisation de l'exemple de carte ci-dessus, en plus de BINGO, ORANGEet WEARS, LANGUAGEdevient une chaîne valide (car Gest utilisée deux fois, mais pas deux fois de suite) mais ne l' RUSSIAest toujours pas (en raison de la SSpaire).

Voici un autre exemple utilisant un fragment de code. La chaîne from itertools import*\npeut être trouvée sur le tableau suivant, mais pas from itertoosl import*ou from itertools import *:

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

Notez que vous avez besoin de deux opour correspondre à la ooséquence.

Défi

Écrivez une fonction ou un programme qui, étant donné une carte Boggle modifiée B(de n'importe quelle taille) et une chaîne s, détermine si elle speut être trouvée B.

Restrictions

Votre code lui-même devrait également tenir sur une carte Boggle modifiée b. Autrement dit, vous devez montrer le tableau bdans votre soumission avec votre code, afin que votre fonction / programme affiche vrai s'il est donné bet votre code en entrée.

Notation

Le score de votre soumission est la longueur du côté du plus petit tableau boù vous pouvez adapter votre code. Les égalités sont rompues par les règles habituelles du , c'est-à-dire la longueur de votre code en octets. La soumission avec le score le plus bas (pour les deux critères) gagne.

Par exemple, from itertools import*\na le score de 4 (en utilisant le tableau ci-dessus) et une longueur de code de 23 octets.

Entrée et sortie

Pour la saisie, vous pouvez utiliser n'importe quelle méthode pratique pour Bet s. Cela comprend une liste de caractères et une liste de codes de caractères, 2D ou aplatis ou tout ce qui a du sens. En outre, vous pouvez éventuellement prendre la taille de la carte comme partie de l'entrée.

Pour la sortie, vous pouvez choisir l'une des options suivantes:

  • Valeurs vraies et fausses suivant la convention de votre langue, ou
  • Une valeur prédéfinie pour vrai et faux respectivement.

Veuillez spécifier votre méthode d'entrée / sortie dans votre soumission.

Bubbler
la source
Je soupçonne qu'un esolang qui a un très petit jeu de caractères qui peut tenir sur un 2x2 gagnera xD
HyperNeutrino
Et tout programme Unary va marquer 4, mais il est presque garanti de perdre à cause de la règle d'égalité contre une langue utilisant efficacement 4 symboles distincts.
Arnauld
@Arnauld Je pensais peut-être à tinyBF et lorsque vous avez besoin de deux symboles adjacents, vous faites juste un +=+=ou quelque chose comme ça. Le problème est la ==fonction de sortie ...
HyperNeutrino
2
@ l4m2 Résoudre avec une telle langue est toujours le bienvenu, mais attention à l'avertissement de Jo King ci-dessus.
Bubbler
3
Est-ce vraiment une source restreinte ? Je pense que c'est juste un double défi (plus pour les langues autres que le golf), où vous êtes censé trouver à la fois le code et la plus petite planche Boggle possible dans laquelle le code tient.
Erik the Outgolfer

Réponses:

10

Python 2, score 3, 20972 octets

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

Le code complet est la sortie de: Essayez-le en ligne!

Convient au tableau Boggle:

e x (
c % 1
' + )

Décode et exécute ce programme:

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)

Ce qui prend une entrée comme: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'

Lynn
la source
Hm, on dirait que j'ai trouvé un moyen de faire ça dans Jelly.
Erik the Outgolfer
5

CJam , score 2, 9351 octets

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

Essayez-le en ligne! Attend une entrée comme:

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

et s'adapte sur la planche Boggle:

' )
~ )

Construit la chaîne 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}%:|~puis l'évalue en tant que code CJam.

Lynn
la source
À moins qu'il n'y ait un système intégré quelque part (je vous regarde, Mathematica), un score de 2 est le plus bas que vous puissiez obtenir. Alors maintenant, le défi est de faire une version plus courte de la même taille.
Ingénieur Toast
@EngineerToast Pas n'importe quel intégré. Ce doit être un octet intégré, car vous ne pouvez pas utiliser le même espace boggle plus d'une fois de suite.
mbomb007
@ mbomb007 C'est exactement ce que je voulais dire mais je ne l'ai pas dit explicitement. La clarification exclut les langues comme Unary ou toute autre chose qui est juste le même caractère répété.
Ingénieur Toast
3

Clean , score 12 (175 octets)

(Cela va presque certainement être dépassé par un esolang et probablement des langues normales également.)

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

Ceci définit une fonction $ :: Int [Char] {#String} -> Boolqui vérifie si le deuxième argument (le mot) peut être trouvé dans le troisième argument (le tableau) étant donné le premier argument comme largeur.

Dans la planche sur laquelle cela tient (voir ci-dessous), *marque les endroits inutilisés. Il y en a 16, sur une planche de taille 12 × 12 = 144, ce qui signifie que 128 sont utilisés efficacement (une efficacité de 175/128 ≈ 1,37 ). Il peut être possible d'obtenir le même programme en 11 × 11, mais tout cela est fait à la main et très fastidieux; mon patron ne serait probablement pas content si j'essayais de l'obtenir 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

Essayez-le en ligne (avec le programme lui-même en entrée)!


la source
2

Java, score 23, 538 507 octets

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

Essayez-le en ligne!

Compilé avec JDK 9, mais devrait fonctionner avec 8.

Je ne savais pas quoi faire avec les importations et le champ statique (ce qui est en fait nécessaire), j'ai donc décidé de prendre toute la classe et de coller les lambdas dans un initialiseur. Le lambda gpeut ensuite être appliqué sur un tableau 2D et une chaîne, et retourne 1si la chaîne est dans la carte et 0sinon (en tant que Byte, 3 caractères plus court que Integer).

Crédit à ce gars pour un (dans mon cas) plus courte que hardcoding façon d'aborder les cellules voisines.

Quelque part dans les progrès de la fabrication de cette monstruosité, j'ai investi pour la faire fonctionner avec des lambdas, elle est devenue de plus en plus pire jusqu'à ce que cela se produise. Il ne se rapproche même pas des autres réponses et il n'est probablement même pas proche de la solution optimale en Java, mais bon, il s'intègre assez bien sur une carte 23x23 (ce qui n'est pas optimal, mais peut-être plus proche que le programme lui-même) :

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,                            

Bien sûr, à ce moment-là, il était inutile d'essayer de le faire à la main. Donc en bonus, voici la fonction (naïve) que j'ai utilisée pour compresser le code sur la carte:

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

Il mappe ses entrées sur une spirale que l'implémentation de serpent n'a pas fonctionné , en laissant les caractères si possible. C'est assez simple, donc je pourrais probablement être amélioré et j'ai oublié d'ajouter la vérification des caractères dans le sens arrière-droit (mise à jour: je l'ai ajouté et cela a produit des résultats incorrects) , donc je pourrais probablement raser un ou deux caractères mais je doute sur un 22x22.

Edit: Suppression de 6 espaces à des endroits où ils n'avaient pas besoin d'être. Enregistré 13 octets en remplaçant une vérification des indices de tableau par un try-catch. Réduit 12 octets en déplaçant la taille de la carte dans un fichier int.

S.Klumpers
la source
1

Gelée , 2316 octets, score 3

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

Essayez-le en ligne!

Planche:

1,v
D1J
§ịØ

Remarque: il s'agit d'une solution (quelque peu) triviale. Nous remercions Lynn pour cette idée .

Renvoie une liste non vide si elle speut être trouvée dans B, et une liste vide sinon. Le pied de page ajouté permet de clarifier cela.

Erik le Outgolfer
la source
Je ne savais pas si cela était autorisé. Je voulais retourner 0 s'il sne pouvait pas être trouvé, ou un entier positif s'il pouvait être trouvé. Mais les règles indiquent "une valeur prédéfinie pour vrai et faux respectivement". Ou sont vides / non vides pour une convention fausse / vraie dans Jelly?
La construction "if-like" de @Keelan Jelly, qui, par défaut, définit la véracité d'une valeur, considérera une liste vide comme fausse et toute autre liste comme véridique. C'est vraiment juste la convention de Python 3 (puisque c'est dans cela que Jelly est implémenté).
Erik the Outgolfer