Modified Boggle Checker, dengan Modifikasi Boggle-Modified Code


19

Latar Belakang

Boggle adalah permainan papan di mana para pemain harus menemukan kata-kata bahasa Inggris pada papan 4-oleh-4 huruf acak. Kata-kata dapat dibangun dengan memilih sel-sel yang berdekatan secara berurutan di papan tulis. ("berdekatan" berarti berdekatan secara horizontal, vertikal atau diagonal.) Juga, sel yang sama tidak dapat digunakan lebih dari sekali dalam satu kata.

Berikut ini adalah contoh papan:

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

Di papan ini BINGO,, ORANGEdan WEARSmerupakan kata yang valid, tetapi SURGEdan RUSSIAtidak:

  • SURGE: Tidak ada pasangan yang berdekatan di papan memiliki RG.
  • RUSSIA: Stidak dapat digunakan dua kali.

Boggle yang Dimodifikasi adalah versi Boggle yang dimodifikasi, dengan aturan berikut:

  • Ukuran board n-by- n, di mana nbisa bilangan bulat positif.
  • Setiap sel dapat berisi satu byte antara 0 dan 255 inklusif.
  • Sel dapat digunakan lebih dari sekali, tetapi tidak dua kali berturut-turut .

Menggunakan contoh papan di atas, sebagai tambahan BINGO, ORANGEdan WEARS, LANGUAGEmenjadi string yang valid (karena Gdigunakan dua kali, tetapi tidak dua kali berturut-turut) tetapi RUSSIAmasih tidak (karena SSberpasangan).

Berikut adalah contoh lain menggunakan fragmen kode. String from itertools import*\ndapat ditemukan di papan berikut, tetapi tidak from itertoosl import*atau from itertools import *:

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

Perhatikan bahwa Anda perlu dua ountuk mencocokkan oourutan.

Tantangan

Tulis fungsi atau program yang, diberi papan Modifikasi Boggle B(dari berbagai ukuran) dan string s, menentukan apakah sdapat ditemukan B.

Batasan

Kode Anda sendiri juga harus sesuai pada papan Modifikasi Boggle b. Artinya, Anda harus menunjukkan papan bdi kiriman Anda bersama dengan kode Anda, sehingga fungsi / program Anda menghasilkan true jika diberikan bdan kode Anda sebagai input.

Mencetak gol

Nilai kiriman Anda adalah panjang sisi papan terkecil di bmana Anda dapat memasukkan kode Anda. Ikatan rusak oleh aturan biasa , yaitu panjang kode Anda dalam byte. Pengajuan dengan skor terendah (untuk kedua kriteria) menang.

Misalnya, from itertools import*\nmemiliki skor 4 (menggunakan papan di atas) dan panjang kode 23 byte.

Masukan dan keluaran

Untuk input, Anda dapat mengambil metode praktis apa pun untuk keduanya Bdan s. Ini termasuk daftar karakter dan daftar kode, 2D atau diratakan atau apa pun yang masuk akal. Selain itu, Anda dapat memilih ukuran papan sebagai bagian dari input.

Untuk hasil, Anda dapat memilih salah satu dari yang berikut:

  • Nilai-nilai yang benar dan salah mengikuti konvensi bahasa Anda, atau
  • Satu nilai yang telah ditentukan untuk benar dan salah masing-masing.

Silakan tentukan metode input / output Anda dalam kiriman Anda.


Saya menduga beberapa esolang yang memiliki charset sangat kecil yang dapat ditampung pada 2x2 akan menang xD
HyperNeutrino

Dan setiap program Unary akan mendapatkan skor 4 tetapi hampir pasti akan kalah karena aturan imbang terhadap bahasa secara efisien menggunakan 4 simbol yang berbeda.
Arnauld

@Arnauld saya berpikir mungkin BB kecil dan ketika Anda membutuhkan dua simbol yang berdekatan Anda hanya melakukan +=+=atau sesuatu seperti itu. Masalahnya adalah ==fungsi output ...
HyperNeutrino

2
@ l4m2 Memecahkan dengan bahasa seperti itu selalu diterima, tetapi waspadalah dengan peringatan Jo King di atas.
Bubbler

3
Apakah ini benar - benar sumber terbatas ? Saya pikir ini hanya tantangan dua kali lipat (lebih banyak untuk bahasa non-golf), di mana Anda seharusnya menemukan kedua kode dan papan Boggle terkecil yang mungkin di mana kodenya cocok.
Erik the Outgolfer

Jawaban:


10

Python 2, skor 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)+…

Kode lengkap adalah output dari: Coba online!

Cocok di papan Boggle:

e x (
c % 1
' + )

Dekode dan jalankan program ini:

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)

Yang membutuhkan input seperti: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'


Hm, sepertinya saya sudah menemukan cara untuk melakukannya di Jelly.
Erik the Outgolfer

5

CJam , skor 2, 9351 byte

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

Cobalah online! Diharapkan input seperti:

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

dan cocok di papan Boggle:

' )
~ )

Membangun string 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}%:|~kemudian mengevaluasinya sebagai kode CJam.


Kecuali jika built-in ada di suatu tempat (Saya melihat Anda, Mathematica), skor 2 adalah yang terendah yang bisa Anda dapatkan. Jadi sekarang tantangannya adalah membuat versi yang lebih pendek dengan ukuran yang sama.
Engineer Toast

@ EngineerToast Bukan sembarang built-in. Itu harus built-in 1-byte, karena Anda tidak dapat menggunakan ruang boggle yang sama lebih dari sekali berturut-turut.
mbomb007

@ mbomb007 Itulah yang saya maksudkan tetapi saya tidak secara eksplisit mengatakannya. Klarifikasi mengesampingkan bahasa seperti Unary atau apa pun yang hanya karakter yang sama diulang.
Engineer Toast

3

Bersih , skor 12 (175 byte)

(Ini hampir pasti akan kalah oleh esolang dan mungkin bahasa normal juga.)

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

Ini mendefinisikan fungsi $ :: Int [Char] {#String} -> Boolyang memeriksa apakah argumen kedua (kata) dapat ditemukan dalam argumen ketiga (papan) diberikan argumen pertama sebagai lebar.

Di papan tempat ini cocok (lihat di bawah), *tandai tempat yang tidak digunakan. Ada 16 dari mereka, pada papan ukuran 12 × 12 = 144, berarti 128 digunakan secara efektif (sebuah efisiensi dari 175/128 ≈ 1,37 ). Dimungkinkan untuk mendapatkan program yang sama pada 11 × 11, tetapi ini semua dilakukan dengan tangan dan sangat membosankan; bos saya mungkin tidak akan senang jika saya mencoba mendapatkannya pada 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

Cobalah online (dengan program itu sendiri sebagai masukan)!


2

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

Cobalah online!

Disusun dengan JDK 9, tetapi harus bekerja dengan 8.

Saya tidak tahu apa yang harus dilakukan dengan impor dan bidang statis (yang sebenarnya diperlukan), jadi saya memutuskan untuk mengambil seluruh kelas dan menempelkan lambda di penginisialisasi. Lambda gkemudian dapat diterapkan pada array 2D dan string, dan kembali 1jika string ada di papan dan 0jika tidak (sebagai Byte, 3 karakter lebih pendek dari Integer).

Kredit untuk orang ini untuk (dalam kasus saya) lebih pendek dari cara hardcoding untuk mengatasi sel tetangga.

Di suatu tempat dalam proses membuat monstrositas ini, saya diinvestasikan untuk membuatnya bekerja dengan lambdas, menjadi semakin buruk dan semakin buruk sampai ini terjadi. Bahkan tidak mendekati jawaban lain dan mungkin bahkan tidak dekat dengan solusi optimal di Jawa, tapi hei, itu cocok dengan cukup rapi di papan 23x23 (yang tidak optimal, tetapi mungkin lebih dekat daripada program itu sendiri) :

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,                            

Tentu saja, pada saat itu tidak ada gunanya mencoba membuatnya dengan tangan. Jadi sebagai bonus, inilah fungsi (naif) yang saya gunakan untuk memampatkan kode ke papan:

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

Ini memetakan inputnya ke spiral implementasi ular tidak bekerja , meninggalkan karakter keluar jika mungkin. Ini agak sederhana sehingga mungkin bisa ditingkatkan dan saya lupa menambahkan memeriksa karakter dalam arah mundur-kanan (pembaruan: Saya menambahkannya dan itu menghasilkan hasil yang salah) , jadi saya mungkin bisa mengurangi satu atau dua karakter tapi saya ragu itu semakin pada 22x22.

Sunting: Dihapus 6 spasi di tempat-tempat yang tidak perlu. Disimpan 13 byte dengan mengganti tanda centang pada indeks array dengan try-catch. Memotong 12 byte dengan memindahkan ukuran papan ke dalam int.


1

Jelly , 2316 bytes, skor 3

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

Cobalah online!

Naik:

1,v
D1J
§ịØ

Catatan: ini adalah solusi (agak) sepele. Kredit untuk Lynn untuk ide .

Mengembalikan daftar yang tidak kosong jika sdapat ditemukan di B, dan daftar kosong jika tidak. Footer yang ditambahkan membantu mengklarifikasi hal itu.


Saya tidak yakin apakah ini diizinkan. Saya ingin mengembalikan 0 jika stidak dapat ditemukan, atau bilangan bulat positif jika dapat ditemukan. Tetapi aturan menyatakan "Satu nilai yang telah ditentukan untuk benar dan salah masing-masing". Atau kosong / tidak kosong untuk konvensi palsu / benar di Jelly?

Konstruksi "if-like" @Keelan Jelly, yang, secara default, mendefinisikan kebenaran suatu nilai, akan menganggap daftar kosong sebagai palsu dan daftar lainnya sebagai kebenaran. Ini benar-benar hanya konvensi Python 3 (karena itulah Jelly diterapkan di dalamnya).
Erik the Outgolfer
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.