ความท้าทายของคุณในวันนี้คือการรับข้อมูลเช่นนี้:
fbcfbee
ffcabbe
debceec
bccabbe
edcfbcd
daeaafc
eebcbeb
และส่งออกการเคลื่อนไหวที่ดีที่สุดในเกม Bejeweled ที่จะจับคู่ตัวอักษรสามตัวขึ้นไปเช่นนี้ (หมายเหตุเมืองหลวงB
และC
):
fbcfbee
ffcabbe
deBCeec
bccabbe
edcfbcd
daeaafc
eebcbeb
รายละเอียดแบบเต็ม:
- อินพุตจะเป็น
n
บรรทัดของn
ตัวอักษรตัวพิมพ์เล็กแต่ละตัว (ซึ่งn
อาจเป็นจำนวนใดก็ได้) - ผลลัพธ์จะเป็นท่าที่ดีที่สุดที่คุณสามารถทำได้ในเกมจับคู่ -3 โดยมีตัวอักษรสองตัวที่คุณต้องการเปลี่ยนเป็นตัวพิมพ์ใหญ่
การจับคู่ควรมีลำดับความสำคัญต่อไปนี้ (ในตัวอย่างเหล่านี้
.
บ่งชี้ว่าช่องสี่เหลี่ยมที่ไม่สำคัญ):ห้าในแถว
xxYxx ..X..
เสียห้าในแถว
X.. Yxx x.. x..
หรือ
.X. xYx .x. .x.
สี่ในแถว
xYxx .X..
สามในแถว
xYx .X.
คุณจะต้องค้นหาการจับคู่ของลำดับความสำคัญสูงสุดและส่งออก
- หากมีการจับคู่ที่มีลำดับความสำคัญเท่ากันหลายรายการคุณสามารถส่งออกรายการใดรายการหนึ่งได้
- จะมีการแข่งขันอย่างน้อยหนึ่งครั้งเสมอ (โปรแกรมของคุณสามารถแตกถ้าไม่มีการแข่งขันหรือทำอะไรก็ได้ที่คุณต้องการ)
- I / O สามารถอยู่ในรูปแบบที่เหมาะสม (stdin / out, การอ่านและการเขียนไฟล์, ข้อโต้แย้งการทำงาน / ค่าส่งคืน, กล่องโต้ตอบ, ฯลฯ ) แต่ไม่ฮาร์ดโค้ด (เช่น
x="[insert input here]"
) - นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์ หากคุณใช้การเข้าถึงเครือข่ายด้วยเหตุผลบางอย่างไบต์ทั้งหมดที่ดาวน์โหลดจากเครือข่ายจะนับรวมกับคะแนนของคุณ
1
+1 แต่ฉันประท้วงชื่อเรื่อง อาจมีการเคลื่อนไหวที่ดีขึ้น ตัวอย่างเช่นสิ่งที่สร้างสองห้าหรือหนึ่งที่ทำให้การวางเพื่อสร้างสิ่งเพิ่มเติม
—
Justin
ห้าในแถวที่แตกก็ครอบคลุม
—
Peter Taylor
..x.\nxxYX\n..x.
หรือไม่
@Peter ใช่มันเป็นเช่นนั้น
—
Doorknob
รูปแบบของแถวมี 2 อันที่แตก 5: รูปแบบ L และรูปแบบ T คุณต้องการจับคู่ทั้งสองหรือไม่
—
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
@nhahtdh ใช่ฉันจะแก้ไขให้ชัดเจน
—
Doorknob