Trình kiểm tra Boggle đã sửa đổi, với Mã có thể sửa đổi được


19

Lý lịch

Boggle là một trò chơi bảng trong đó người chơi phải tìm các từ tiếng Anh trên bảng 4 chữ cái ngẫu nhiên. Các từ có thể được xây dựng bằng cách chọn các ô liền kề liên tiếp trên bảng. ("Liền kề" có nghĩa là liền kề theo chiều ngang, chiều dọc hoặc đường chéo.) Ngoài ra, cùng một ô không thể được sử dụng nhiều lần trong một từ.

Sau đây là một bảng ví dụ:

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

Trên tàu này, BINGO, ORANGEWEARSlà những từ hợp lệ, nhưng SURGERUSSIAkhông:

  • SURGE: Không có cặp liền kề trên bảng có RG.
  • RUSSIA: Skhông thể được sử dụng hai lần.

Đã sửa đổi Boggle là phiên bản sửa đổi của Boggle, với các quy tắc sau:

  • Kích thước bảng là n-by- n, trong đó ncó thể là bất kỳ số nguyên dương nào.
  • Mỗi ô có thể chứa bất kỳ một byte nào trong khoảng từ 0 đến 255.
  • Một ô có thể được sử dụng nhiều lần, nhưng không hai lần liên tiếp .

Sử dụng bảng ví dụ ở trên, ngoài BINGO, ORANGEWEARS, LANGUAGEtrở thành một chuỗi hợp lệ (vì Gđược sử dụng hai lần, nhưng không phải hai lần liên tiếp) nhưng RUSSIAvẫn không (do SScặp).

Đây là một ví dụ khác sử dụng một đoạn mã. Chuỗi from itertools import*\ncó thể được tìm thấy trên bảng sau, nhưng không from itertoosl import*hoặc from itertools import *:

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

Lưu ý rằng bạn cần hai ogiây để khớp với oochuỗi.

Thử thách

Viết một hàm hoặc chương trình, được đưa ra một bảng điều chỉnh Boggle B(có kích thước bất kỳ) và một chuỗi s, xác định nếu scó thể được tìm thấy trên B.

Hạn chế

Bản thân mã của bạn cũng phải phù hợp với bảng Boggle đã sửa đổi b. Nghĩa là, bạn phải hiển thị bảng btrong bài gửi của mình cùng với mã của bạn, để chức năng / chương trình của bạn xuất ra đúng nếu được đưa ra bvà mã của bạn là đầu vào.

Chấm điểm

Điểm của bài nộp của bạn là chiều dài của bảng nhỏ nhất bnơi bạn có thể phù hợp với mã của mình. Các mối quan hệ bị phá vỡ bởi các quy tắc thông thường , tức là độ dài mã của bạn tính bằng byte. Bài nộp với số điểm thấp nhất (cho cả hai tiêu chí) sẽ thắng.

Ví dụ: from itertools import*\ncó số điểm là 4 (sử dụng bảng ở trên) và độ dài mã là 23 byte.

Đầu vào và đầu ra

Đối với đầu vào, bạn có thể thực hiện bất kỳ phương pháp thuận tiện cho cả Bs. Điều này bao gồm danh sách các ký tự và danh sách các mã, 2D hoặc dẹt hoặc bất cứ điều gì có ý nghĩa. Ngoài ra, bạn có thể tùy ý lấy kích thước bảng làm một phần của đầu vào.

Đối với đầu ra, bạn có thể chọn một trong các cách sau:

  • Giá trị trung thực và giả mạo theo quy ước ngôn ngữ của bạn, hoặc
  • Một giá trị được xác định trước cho đúng và sai tương ứng.

Vui lòng chỉ định phương thức nhập / xuất của bạn trong bài gửi của bạn.


Tôi nghi ngờ một số esolang có bộ ký tự rất nhỏ có thể vừa với 2x2 sẽ giành được xD
HyperNeutrino

Và bất kỳ chương trình Unary nào cũng sẽ đạt điểm 4 nhưng gần như được đảm bảo để thua vì quy tắc ràng buộc với một ngôn ngữ có hiệu quả bằng cách sử dụng 4 ký hiệu riêng biệt.
Arnauld

@Arnauld Tôi đã nghĩ có lẽ tinyBF và khi bạn cần hai biểu tượng liền kề, bạn chỉ cần làm một +=+=hoặc một cái gì đó tương tự. Vấn đề là ==chức năng đầu ra ...
HyperNeutrino

2
@ l4m2 Giải quyết bằng ngôn ngữ như vậy luôn được chào đón, nhưng hãy cẩn thận với cảnh báo của Jo King ở trên.
Bong bóng

3
Đây thực sự là nguồn hạn chế ? Tôi nghĩ rằng đó chỉ là một thử thách hai lần (nhiều hơn cho các ngôn ngữ không chơi gôn), trong đó bạn phải tìm cả mã và bảng Boggle nhỏ nhất có thể có mã phù hợp.
Erik the Outgolfer

Câu trả lời:


10

Python 2, điểm 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)+…

Mã đầy đủ là đầu ra của: Hãy thử trực tuyến!

Phù hợp trên bảng Boggle:

e x (
c % 1
' + )

Giải mã và thực hiện chương trình này:

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)

Mà có đầu vào như: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'


Hừm, có vẻ như tôi đã tìm ra cách để làm điều đó trong Jelly.
Erik the Outgolfer

5

CJam , điểm 2, 9351 byte

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

Hãy thử trực tuyến! Yêu cầu đầu vào như:

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

và phù hợp với bảng Boggle:

' )
~ )

Xây dựng chuỗi 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}%:|~sau đó đánh giá nó dưới dạng mã CJam.


Trừ khi có tích hợp tồn tại ở đâu đó (tôi đang nhìn bạn, Mathicala), điểm 2 là thấp nhất bạn có thể nhận được. Vì vậy, bây giờ thách thức là tạo ra một phiên bản ngắn hơn có cùng kích thước.
Kỹ sư Toast

@EngineerToast Không chỉ bất kỳ tích hợp nào. Nó phải là một byte tích hợp sẵn, bởi vì bạn không thể sử dụng cùng một không gian boggle nhiều lần trong một hàng.
mbomb007

@ mbomb007 Đó chính xác là những gì tôi muốn nói nhưng tôi không nói rõ ràng như vậy. Việc làm rõ loại trừ các ngôn ngữ như Unary hoặc bất cứ thứ gì khác chỉ là cùng một ký tự được lặp lại.
Kỹ sư Toast

3

Sạch sẽ , điểm 12 (175 byte)

(Điều này gần như chắc chắn sẽ bị vượt qua bởi một esolang và có lẽ là ngôn ngữ bình thường.)

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

Điều này xác định một hàm $ :: Int [Char] {#String} -> Boolkiểm tra xem đối số thứ hai (từ) có thể được tìm thấy trong đối số thứ ba (bảng) đưa ra đối số đầu tiên là chiều rộng hay không.

Trong bảng mà cái này phù hợp (xem bên dưới), *đánh dấu những nơi không sử dụng. Có 16 trong số đó, trên một bảng kích thước 12 × 12 = 144, có nghĩa là 128 được sử dụng một cách hiệu quả (một hiệu quả của 175/128 ≈ 1,37 ). Có thể có được chương trình tương tự trên 11 × 11, nhưng tất cả đều được thực hiện bằng tay và rất tẻ nhạt; ông chủ của tôi có lẽ sẽ không vui nếu tôi cố gắng lấy nó vào ngày 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

Hãy thử trực tuyến (với chính chương trình là đầu vào)!


2

Java, điểm 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();};}}

Hãy thử trực tuyến!

Được biên dịch với JDK 9, nhưng sẽ hoạt động với 8.

Tôi không biết phải làm gì với trường nhập khẩu và trường tĩnh (thực tế là cần thiết), vì vậy tôi quyết định chỉ lấy cả lớp và dán lambdas vào bộ khởi tạo. Lambda gsau đó có thể được áp dụng trên một mảng 2D và một chuỗi, và trả về 1nếu chuỗi nằm trong bảng và 0nếu không (như một Byte, ngắn hơn 3 ký tự Integer).

Tín dụng cho anh chàng này cho một (trong trường hợp của tôi) ngắn hơn cách mã hóa cứng để giải quyết các tế bào lân cận.

Ở đâu đó trong tiến trình tạo ra sự quái dị này, tôi đã đầu tư vào việc làm cho nó hoạt động với lambdas, nó ngày càng trở nên tồi tệ và tồi tệ hơn cho đến khi điều này xảy ra. Nó thậm chí không gần với các câu trả lời khác và có lẽ nó không gần với giải pháp tối ưu trong Java, nhưng này, nó nằm khá gọn gàng trên một bảng 23x23 (không tối ưu, nhưng có lẽ gần hơn chính chương trình) :

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,                            

Tất nhiên, tại thời điểm đó không có điểm nào trong việc cố gắng làm điều đó bằng tay. Vì vậy, như một phần thưởng, đây là chức năng (ngây thơ) mà tôi đã sử dụng để nén mã lên bảng:

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

Nó ánh xạ đầu vào của nó thành một vòng xoắn mà việc triển khai rắn không hoạt động , bỏ các ký tự nếu có thể. Nó khá đơn giản nên có thể được cải thiện và tôi đã quên thêm việc kiểm tra các ký tự theo hướng ngược lại (cập nhật: Tôi đã thêm nó, nó tạo ra kết quả không chính xác) , vì vậy tôi có thể tắt một hoặc hai ký tự nhưng tôi nghi ngờ nó sẽ bị trên 22x22.

Chỉnh sửa: Đã xóa 6 khoảng trắng ở những nơi chúng không cần phải ở. Đã lưu 13 byte bằng cách thay thế một kiểm tra trên các chỉ số mảng bằng một lần thử. Cạo sạch 12 byte bằng cách di chuyển kích thước bảng thành một int.


1

Jelly , 2316 byte, điểm 3

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

Hãy thử trực tuyến!

Bảng:

1,v
D1J
§ịØ

Lưu ý: đây là một giải pháp tầm thường (phần nào). Tín dụng cho Lynn cho ý tưởng .

Trả về một danh sách không trống nếu scó thể được tìm thấy Bvà một danh sách trống nếu không. Phần chân trang thêm vào giúp làm rõ điều đó.


Tôi không chắc chắn nếu điều này được cho phép. Tôi muốn trả về 0 nếus không thể tìm thấy hoặc số nguyên dương nếu có thể tìm thấy. Nhưng quy tắc nêu rõ "Một giá trị được xác định trước cho đúng và sai tương ứng". Hoặc là trống / không trống cho quy ước sai / đúng trong Jelly?

Cấu trúc "if-like" của @Keelan Jelly, theo mặc định, xác định tính trung thực của một giá trị, sẽ coi một danh sách trống là sai lệch và bất kỳ danh sách nào khác là trung thực. Đó thực sự chỉ là quy ước của Python 3 (vì đó là những gì Jelly được triển khai).
Erik the Outgolfer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.