Zmodyfikowany kontroler Boggle ze zmodyfikowanym kodem Boggle

19

tło

Boggle to gra planszowa, w której gracze muszą znaleźć angielskie słowa na planszy losowych alfabetów 4 na 4. Słowa można konstruować, wybierając kolejno sąsiednie komórki na planszy. („przylegające” oznacza przylegające w poziomie, w pionie lub po przekątnej). Ponadto, ta sama komórka nie może być używana więcej niż jeden raz w słowie.

Oto przykładowa tablica:

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

Na tej płycie, BINGO, ORANGEi WEARSsą ważne słowa, ale SURGEi RUSSIAnie są:

  • SURGE: Na planszy nie ma sąsiadującej pary RG.
  • RUSSIA: Snie można użyć dwa razy.

Zmodyfikowany Boggle to zmodyfikowana wersja Boggle, z następującymi zasadami:

  • Rozmiar płytki to n-by- n, gdzie nmoże być dowolna dodatnia liczba całkowita.
  • Każda komórka może zawierać dowolny jeden bajt od 0 do 255 włącznie.
  • Komórki można użyć więcej niż jeden raz, ale nie dwa razy z rzędu .

Na przykładzie pokładzie powyżej, w uzupełnieniu do BINGO, ORANGEi WEARS, LANGUAGEstaje się ważna łańcuch (ponieważ Gstosuje się dwa razy, a nie dwa razy z rzędu), ale RUSSIAwciąż nie jest (ze względu na SSpary).

Oto kolejny przykład z wykorzystaniem fragmentu kodu. Łańcuch from itertools import*\nmożna znaleźć na następnej płycie, ale nie from itertoosl import*lub from itertools import *:

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

Zauważ, że potrzebujesz dwóch o, aby dopasować oosekwencję.

Wyzwanie

Napisz funkcję lub program, który na podstawie tablicy Zmodyfikowanego Boggle B(dowolnego rozmiaru) i łańcucha sokreśla, czy smożna ją znaleźć B.

Ograniczenia

Twój kod powinien również zmieścić się na tablicy Zmodyfikowanego Boggle b. Oznacza to, że musisz pokazać tablicę bw swoim zgłoszeniu wraz ze swoim kodem, aby funkcja / program generował wartość true, jeśli została podana, ba kod jako dane wejściowe.

Punktacja

Wynik Twojego zgłoszenia to długość boku najmniejszej planszy, na bktórej możesz zmieścić kod. Więzy są zrywane według zwykłych zasad , tj. Długości kodu w bajtach. Zgłoszenie z najniższą oceną (dla obu kryteriów) wygrywa.

Na przykład from itertools import*\nma wynik 4 (przy użyciu powyższej płytki) i długość kodu 23 bajtów.

Wejście i wyjście

W przypadku danych wejściowych można zastosować dowolną dogodną metodę zarówno dla, jak Bi s. Obejmuje to listę znaków i listę znaków, 2D lub spłaszczonych lub cokolwiek innego, co ma sens. Możesz również opcjonalnie wziąć rozmiar płyty jako część danych wejściowych.

W przypadku danych wyjściowych możesz wybrać jedną z następujących opcji:

  • Prawdziwe i fałszywe wartości zgodne z konwencją twojego języka lub
  • Jedna predefiniowana wartość odpowiednio dla true i false.

Proszę podać metodę wejścia / wyjścia w swoim zgłoszeniu.

Bubbler
źródło
Podejrzewam, że jakiś esolang, który ma bardzo mały zestaw znaków, który może zmieścić się na 2x2, wygra xD
HyperNeutrino
I każdy program Unary uzyska 4 punkty, ale prawie na pewno przegra z powodu reguły remisu przeciwko językowi, który skutecznie wykorzystuje 4 różne symbole.
Arnauld
@Arnauld Myślałem, że może malutkiBF, a kiedy potrzebujesz dwóch sąsiednich symboli, po prostu zrób +=+=coś takiego. Problemem jest ==funkcja wyjściowa ...
HyperNeutrino,
2
@ l4m2 Rozwiązywanie przy użyciu takiego języka jest zawsze mile widziane, ale uważaj na ostrzeżenie Jo Kinga powyżej.
Bubbler
3
Czy to naprawdę jest ograniczone źródło ? Myślę, że to tylko podwójne wyzwanie (więcej dla języków nie golfowych), w którym powinieneś znaleźć zarówno kod, jak i najmniejszą możliwą tablicę Boggle, w której kod się mieści.
Erik the Outgolfer

Odpowiedzi:

10

Python 2, wynik 3, 20972 bajtów

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

Pełny kod jest wynikiem: Wypróbuj online!

Pasuje do tablicy Boggle:

e x (
c % 1
' + )

Dekoduje i wykonuje ten program:

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)

Który wymaga danych wejściowych takich jak: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'

Lynn
źródło
Hm, wygląda na to , że znalazłem sposób na zrobienie tego w Galaretce.
Erik the Outgolfer
5

CJam , wynik 2, 9351 bajtów

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

Wypróbuj online! Oczekuje danych wejściowych takich jak:

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

i pasuje do tablicy Boggle:

' )
~ )

Konstruuje ciąg, 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}%:|~a następnie ocenia go jako kod CJam.

Lynn
źródło
Jeśli gdzieś nie ma wbudowanego (patrzę na ciebie, Mathematica), wynik 2 jest najniższy, jaki możesz uzyskać. Zatem teraz wyzwaniem jest stworzenie krótszej wersji o tym samym rozmiarze.
Inżynier Toast
@EngineerToast Nie tylko każdy wbudowany. Musi to być wbudowany 1-bajtowy, ponieważ nie można użyć tego samego miejsca boggle więcej niż raz z rzędu.
mbomb007
@ mbomb007 Dokładnie to miałem na myśli, ale nie powiedziałem tego wprost. Wyjaśnienie wyklucza języki takie jak Unary lub cokolwiek innego, co powtarzany jest ten sam znak.
Engineer Toast
3

Wyczyść , zdobądź 12 (175 bajtów)

(Niemal na pewno zostanie to obezwładnione przez esolang i prawdopodobnie również normalne języki).

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

Definiuje funkcję, $ :: Int [Char] {#String} -> Boolktóra sprawdza, czy drugi argument (słowo) można znaleźć w trzecim argumencie (tablica), biorąc pod uwagę pierwszy argument jako szerokość.

Na planszy, na której to pasuje (patrz poniżej), *zaznacz nieużywane miejsca. Istnieje 16 z nich, na płytce o wymiarach 12 x 12 = 144, co oznacza, 128 są efektywnie wykorzystywane (o wydajności z 175/128 ≈ 1,37 ). Możliwe jest uzyskanie tego samego programu na 11 × 11, ale wszystko to odbywa się ręcznie i jest bardzo żmudne; mój szef prawdopodobnie nie byłby szczęśliwy, gdybym spróbował dostać to 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

Wypróbuj online (z samym programem jako wejściem)!


źródło
2

Java, wynik 23, 538 507 bajtów

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

Wypróbuj online!

Skompilowany z JDK 9, ale powinien działać z 8.

Nie wiedziałem, co zrobić z importem i polem statycznym (co w rzeczywistości jest konieczne), więc postanowiłem po prostu wziąć całą klasę i włożyć lambdy do inicjalizatora. Lambda gmoże być następnie zastosowana do tablicy 2D i łańcucha i zwraca, 1jeśli łańcuch znajduje się na planszy, a 0jeśli nie (jako Byte3 znaki krótsze niż Integer).

Podziękowania dla tego faceta za (w moim przypadku) krótszy niż na stałe sposób adresowania sąsiednich komórek.

Gdzieś w trakcie tworzenia tej potworności zainwestowałem w to, aby działała z lambdami, aż do tego czasu postępowała coraz gorzej. Nie zbliża się nawet do innych odpowiedzi i prawdopodobnie nie jest nawet blisko optymalnego rozwiązania w Javie, ale hej, całkiem ładnie pasuje do płyty 23x23 (co nie jest optymalne, ale być może bliżej niż sam program) :

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,                            

Oczywiście w tym momencie nie było sensu próbować zrobić tego ręcznie. Jako bonus, oto (naiwna) funkcja, której użyłem do skompresowania kodu na płycie:

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

Odwzorowuje swój wkład na spiralę, która nie zadziałała z implementacją snaking , pozostawiając postacie, jeśli to możliwe. Jest to raczej proste, więc prawdopodobnie można go poprawić i zapomniałem dodać sprawdzanie znaków w kierunku do tyłu do tyłu (aktualizacja: dodałem go i wygenerowało niepoprawne wyniki) , więc prawdopodobnie mógłbym ogolić jedną lub dwie postacie, ale wątpię, żeby to się dostało na 22x22.

Edycja: Usunięto 6 spacji w miejscach, w których nie musiały być. Zaoszczędzono 13 bajtów, zastępując kontrolę indeksów tablic try-catch. Ogolono 12 bajtów, przenosząc rozmiar planszy na int.

S.Klumpers
źródło
1

Galaretka , 2316 bajtów, wynik 3

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

Wypróbuj online!

Tablica:

1,v
D1J
§ịØ

Uwaga: jest to (nieco) trywialne rozwiązanie. Problem zgłosili Lynn dla idei .

Zwraca niepustą listę, jeśli smożna ją znaleźć B, oraz pustą listę, jeśli nie. Dodana stopka pomaga to wyjaśnić.

Erik the Outgolfer
źródło
Nie byłem pewien, czy było to dozwolone. Chciałem zwrócić 0, jeśli snie można znaleźć, lub dodatnią liczbę całkowitą, jeśli można ją znaleźć. Ale reguły mówią: „Jedna predefiniowana wartość odpowiednio dla prawdy i fałszu”. A może są puste / niepuste na konwencję fałsz / prawda w galarecie?
Konstrukcja „if-like” @Keelana Jelly'ego, która domyślnie określa prawdziwość wartości, uzna pustą listę za fałsz, a każdą inną listę za prawdę. To tak naprawdę tylko konwencja Pythona 3 (ponieważ w tym implementuje się Jelly).
Erik the Outgolfer