Modified Boggle Checker พร้อม Modified Boggle สามารถแก้ไขได้


19

พื้นหลัง

เกรงกลัวเป็นเกมกระดานที่ผู้เล่นจะต้องค้นหาคำศัพท์ภาษาอังกฤษในคณะอักษรสุ่ม 4-by-4 สามารถสร้างคำโดยเลือกเซลล์ที่อยู่ติดกันตามลำดับบนกระดาน ("ที่อยู่ติดกัน" หมายถึงที่อยู่ติดกันในแนวนอนแนวตั้งหรือแนวทแยงมุม) นอกจากนี้เซลล์เดียวกันไม่สามารถใช้มากกว่าหนึ่งครั้งในหนึ่งคำ

ต่อไปนี้เป็นบอร์ดตัวอย่าง:

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

บนกระดานนี้BINGO, ORANGEและWEARSเป็นคำที่ถูกต้อง แต่SURGEและRUSSIAไม่ได้:

  • SURGERGไม่มีคู่ที่อยู่ติดกันบนกระดานมีเป็น
  • RUSSIA: Sไม่สามารถใช้ได้สองครั้ง

Modified Boggleเป็นรุ่นที่ได้รับการดัดแปลงของ Boggle พร้อมกับกฎต่อไปนี้

  • ขนาดคณะกรรมการจะn-by- nที่nสามารถเป็นจำนวนเต็มบวกใด ๆ
  • แต่ละเซลล์สามารถมีหนึ่งไบต์ระหว่าง 0 ถึง 255 รวม
  • เซลล์สามารถใช้ได้มากกว่าหนึ่งครั้งแต่ไม่สามารถใช้สองครั้งติดต่อกัน

การใช้บอร์ดตัวอย่างข้างต้นนอกเหนือไปBINGO, ORANGEและWEARS, LANGUAGEกลายเป็นสตริงที่ถูกต้อง (ตั้งแต่Gจะใช้สองครั้ง แต่ไม่ได้เป็นครั้งที่สองในแถว) แต่RUSSIAยังไม่ (เนื่องจากSSทั้งคู่)

นี่เป็นอีกตัวอย่างหนึ่งที่ใช้แฟรกเมนต์โค้ด สตริงfrom itertools import*\nสามารถพบได้ในบอร์ดต่อไปนี้ แต่ไม่ใช่from itertoosl import*หรือfrom itertools import *:

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

โปรดทราบว่าคุณต้องมีสองสิ่งoเพื่อให้ตรงกับooลำดับ

ท้าทาย

เขียนฟังก์ชั่นหรือโปรแกรมที่ได้รับการดัดแปลงเกรงกลัวคณะกรรมการB(ขนาดใดก็ได้) และสตริงsกำหนดว่าสามารถพบได้ในsB

ข้อ จำกัด

bรหัสของคุณเองก็ควรจะพอดีกับคณะกรรมการเกรงกลัวดัดแปลง นั่นคือคุณจะต้องแสดงบอร์ดbในการส่งของคุณพร้อมกับรหัสของคุณเพื่อให้ฟังก์ชั่น / โปรแกรมของคุณส่งออกจริงถ้ามันได้รับbและรหัสของคุณเป็นอินพุต

เกณฑ์การให้คะแนน

คะแนนที่คุณส่งคือความยาวด้านของบอร์ดbที่เล็กที่สุดซึ่งคุณสามารถใส่รหัสได้ ความสัมพันธ์ถูกทำลายโดยกฎของเช่นความยาวของโค้ดของคุณเป็นไบต์ การส่งที่มีคะแนนต่ำสุด (สำหรับทั้งสองเกณฑ์) จะชนะ

ตัวอย่างเช่นfrom itertools import*\nมีคะแนน 4 (ใช้บอร์ดด้านบน) และความยาวรหัส 23 ไบต์

อินพุตและเอาต์พุต

สำหรับการป้อนข้อมูลคุณสามารถใช้วิธีที่สะดวกใด ๆ สำหรับทั้งสองและB sซึ่งรวมถึงรายการตัวอักษรและรายการของตัวอักษรสองมิติหรือแบนหรือสิ่งที่เหมาะสม นอกจากนี้คุณยังสามารถเลือกขนาดกระดานเป็นส่วนหนึ่งของอินพุตได้

สำหรับเอาต์พุตคุณสามารถเลือกหนึ่งในสิ่งต่อไปนี้:

  • ค่าความจริงและเท็จต่อการประชุมภาษาของคุณหรือ
  • หนึ่งค่าที่กำหนดไว้ล่วงหน้าสำหรับจริงและเท็จตามลำดับ

โปรดระบุวิธีการอินพุต / เอาต์พุตในการส่งของคุณ


ฉันสงสัย esolang บางอย่างที่มีชุดตัวอักษรขนาดเล็กมากที่สามารถใส่ลงใน 2x2 จะชนะ xD
HyperNeutrino

และโปรแกรมใด ๆ ของยูนารีจะมีคะแนน 4 แต่เกือบจะรับประกันว่าจะเสียเพราะกฎการผูกกับภาษาได้อย่างมีประสิทธิภาพโดยใช้ 4 สัญลักษณ์ที่แตกต่างกัน
Arnauld

@Arnauld ฉันคิดว่าอาจจะเป็นตัวย่อขนาดเล็กและเมื่อคุณต้องการสัญลักษณ์สองตัวที่อยู่ติดกันคุณเพียงแค่ทำ+=+=สิ่งนั้น ปัญหาคือ==ฟังก์ชั่นเอาท์พุท ...
HyperNeutrino

2
@ l4m2 การแก้ปัญหาด้วยภาษานั้นยินดีต้อนรับเสมอ แต่ระวังคำเตือนของ Jo King ด้านบน
Bubbler

3
นี่เป็นแหล่งที่ จำกัดจริงๆหรือ ฉันคิดว่ามันเป็นเพียงความท้าทายสองเท่า (สำหรับภาษาที่ไม่ใช่กอล์ฟ) ซึ่งคุณควรจะค้นหาทั้งรหัสและบอร์ด Boggle ที่เล็กที่สุดเท่าที่เป็นไปได้ซึ่งรหัสนั้นพอดี
Erik the Outgolfer

คำตอบ:


10

Python 2 คะแนน 3, 20972 ไบต์

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

รหัสเต็มคือผลลัพธ์ของ: ลองออนไลน์!

พอดีกับบอร์ดเกรงกลัว:

e x (
c % 1
' + )

ถอดรหัสและรันโปรแกรมนี้:

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)

ซึ่งรับอินพุตเช่น: ['ILAW','BNGE','IUAO','ASRL'], 'LANGUAGE'


หืมดูเหมือนว่าฉันได้พบวิธีในเจลลี่แล้ว
Erik the Outgolfer

5

CJam , คะแนน 2, 9351 ไบต์

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

ลองออนไลน์! คาดว่าจะมีการป้อนข้อมูลเช่น:

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

และพอดีกับบอร์ดเกรงกลัว:

' )
~ )

สร้างสตริง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}%:|~แล้วประเมินว่าเป็นรหัส CJam


ยกเว้นในตัวมีอยู่ที่ไหนสักแห่ง (ฉันกำลังมองคุณ Mathematica) คะแนน 2 เป็นระดับต่ำสุดที่คุณจะได้รับ ดังนั้นความท้าทายคือการทำให้ขนาดที่สั้นลงมีขนาดเท่ากัน
Engineer Toast

@EngineerToast ไม่ใช่แค่ในตัวเท่านั้น ต้องมีขนาด 1 ไบต์ในตัวเนื่องจากคุณไม่สามารถใช้พื้นที่เกรงขามเดียวกันมากกว่าหนึ่งครั้งในแถวเดียว
mbomb007

@ mbomb007 นั่นคือสิ่งที่ฉันหมายถึง แต่ฉันไม่ได้พูดอย่างนั้น ความกระจ่างออกกฎภาษาเช่น Unary หรืออะไรก็ได้ที่เป็นตัวละครเดียวกันซ้ำแล้วซ้ำอีก
Engineer Toast

3

ทำความสะอาด , คะแนน 12 (175 bytes)

(สิ่งนี้เกือบจะแน่นอนว่าจะต้องถูกตีแผ่โดยภาษา esolang และอาจเป็นภาษาปกติด้วย)

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

ฟังก์ชันนี้กำหนดฟังก์ชัน$ :: Int [Char] {#String} -> Boolที่ตรวจสอบว่าอาร์กิวเมนต์ที่สอง (คำ) สามารถพบได้ในอาร์กิวเมนต์ที่สาม (บอร์ด) ที่กำหนดอาร์กิวเมนต์แรกเป็นความกว้าง

ในกระดานที่เหมาะกับนี้ (ดูด้านล่าง) *ทำเครื่องหมายสถานที่ที่ไม่ได้ใช้ มี 16 ของเหล่านั้นบนกระดานขนาด 12 × 12 = 144 ใช้ความหมาย 128 อย่างมีประสิทธิภาพ ( ประสิทธิภาพของ175/128 ≈ 1.37 ) อาจเป็นไปได้ที่จะได้รับโปรแกรมเดียวกันในวันที่ 11 × 11 แต่ทั้งหมดนี้ทำด้วยมือและน่าเบื่อมาก เจ้านายของฉันอาจไม่มีความสุขถ้าฉันจะลองใช้มันในวันที่ 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

ลองออนไลน์ (ด้วยโปรแกรมเป็นอินพุต)!


2

Java, คะแนน 23, 538 507 ไบต์

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

ลองออนไลน์!

คอมไพล์ด้วย JDK 9 แต่ควรทำงานกับ 8

ฉันไม่รู้ว่าจะทำอย่างไรกับการนำเข้าและฟิลด์คงที่ (ซึ่งอันที่จริงแล้วจำเป็น) ดังนั้นฉันตัดสินใจที่จะเรียนทั้งชั้นและติดลูกแกะไว้ในเครื่องมือเริ่มต้น แลมบ์ดาgสามารถนำไปใช้กับอาเรย์สองมิติและสตริงและส่งคืน1ถ้าสตริงอยู่ในบอร์ดและ0หากไม่ใช่ (เป็น a Byte, 3 ตัวอักษรจะสั้นกว่าInteger)

ให้เครดิตกับผู้ชายคนนี้สำหรับ (ในกรณีของฉัน) ที่สั้นกว่าวิธีเข้ารหัสที่อยู่เซลล์ใกล้เคียง

อยู่ที่ไหนสักแห่งในความคืบหน้าของการทำให้ความประหลาดนี้ฉันได้ลงทุนในการทำงานกับลูกแกะมันเลวร้ายลงเรื่อย ๆ จนกระทั่งสิ่งนี้เกิดขึ้น มันไม่ได้ใกล้เคียงกับคำตอบอื่น ๆ และอาจไม่ได้ใกล้เคียงกับโซลูชันที่ดีที่สุดใน Java แต่เดี๋ยวก่อนมันเหมาะอย่างประณีตบนกระดาน 23x23 (ซึ่งไม่เหมาะสม แต่อาจใกล้กว่าโปรแกรมของตัวเอง) :

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,                            

แน่นอนว่า ณ จุดนั้นไม่มีจุดพยายามทำด้วยมือ เพื่อเป็นโบนัสนี่คือฟังก์ชัน (ไร้เดียงสา) ที่ฉันใช้ในการบีบอัดโค้ดลงบนกระดาน:

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

มันแมปมันเข้าสู่เกลียวที่การใช้งานของ snaking ไม่ทำงานปล่อยให้ตัวละครออกมาถ้าเป็นไปได้ มันค่อนข้างง่ายดังนั้นอาจปรับปรุงได้และฉันลืมที่จะเพิ่มการตรวจสอบตัวละครในทิศทางย้อนหลัง - ขวา(อัปเดต: ฉันเพิ่มมันเพื่อให้ได้ผลลัพธ์ที่ไม่ถูกต้อง)ดังนั้นฉันจึงอาจโกนอักขระหนึ่งหรือสองตัวออกไป ใน 22x22

แก้ไข: ลบช่องว่าง 6 ช่องในสถานที่ที่ไม่จำเป็น บันทึกแล้ว 13 ไบต์โดยแทนที่การตรวจสอบดัชนีแถวลำดับด้วยลองจับ โกน 12 intไบต์โดยการย้ายขนาดคณะกรรมการเป็น


1

เยลลี่ 2316 ไบต์คะแนน 3

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

ลองออนไลน์!

คณะกรรมการ:

1,v
D1J
§ịØ

หมายเหตุ: นี่เป็นวิธีแก้ปัญหาเล็กน้อย (ค่อนข้าง) มอบเครดิตให้แก่Lynnสำหรับแนวคิดนี้

ส่งคืนรายการที่ไม่ว่างเปล่าหากsสามารถพบได้ในBและรายการที่ว่างถ้าไม่ ส่วนท้ายที่เพิ่มเข้ามาช่วยให้ชัดเจนขึ้น


ฉันไม่แน่ใจว่าได้รับอนุญาตหรือไม่ ฉันต้องการส่งคืน 0 ถ้าsหาไม่พบหรือเป็นจำนวนเต็มบวกถ้าไม่พบ แต่กฎระบุว่า "หนึ่งค่าที่กำหนดไว้ล่วงหน้าสำหรับความจริงและเท็จตามลำดับ" หรือเปล่า / ไม่ว่างเปล่าสำหรับการประชุมเท็จ / จริงในเจลลี่?

@Keelan Jelly's สร้าง "if-like" ซึ่งโดยค่าเริ่มต้นกำหนดความจริงของค่าจะพิจารณารายการที่ว่างเปล่าจะเป็นเท็จและรายการอื่น ๆ ที่จะเป็นจริง มันเป็นเพียงแค่การประชุมของ Python 3 (เนื่องจากเป็นสิ่งที่ Jelly นำมาใช้)
Erik the Outgolfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.