เกม
เมื่อเร็ว ๆ นี้เวลาส่วนใหญ่ของฉันถูกนำขึ้นเกมการเสพติดบนโทรศัพท์ของฉันที่ชื่อว่า Logic Dots ซึ่งเป็นแรงบันดาลใจให้ฉันเขียนความท้าทายนี้ เป็นการง่ายกว่าที่จะอธิบายกฎถ้าฉันแสดงให้คุณเห็นเกมดังนั้นนี่คือภาพหน้าจอของปริศนาที่ยังไม่แก้และแก้ไข:
ตอนนี้ที่นี่มีสามสิ่งหลักที่ต้องแจ้งให้ทราบ
- กระดานเกม (ตาราง 4x4 ของสี่เหลี่ยมอยู่ตรงกลาง)
- รูปร่างที่ต้องการ (จุดเชื่อมโยงในแถบที่สองจากด้านบนใต้คะแนนและเมนู ฯลฯ ) ซึ่งเป็นเส้นทั้งหมดหรือ
a
1 สี่เหลี่ยม - ตัวเลขเหนือแถวและคอลัมน์ซึ่งแสดงถึงจำนวนจุดที่ต้องอยู่ในคอลัมน์สำหรับการแก้ปัญหา
วัตถุประสงค์ของเกมคือเพื่อให้พอดีกับรูปร่างที่ต้องการในกริด คุณสามารถหมุนรูปร่างได้ แต่จะไม่สามารถเคลื่อนที่ในแนวทแยงมุมได้
ในการแก้ปัญหาให้สังเกตว่ารูปร่างทั้งหมดจะถูกสร้างขึ้นเพียงครั้งเดียว (เพราะพวกเขาอยู่ในรูปร่างที่ต้องการเพียงครั้งเดียว) และในกรณีนี้พวกเขาเป็นแนวนอนทั้งหมด แต่พวกเขาสามารถแนวตั้ง สีชมพูที่เต็มไปด้วยสี่เหลี่ยมหมายถึงสี่เหลี่ยมที่ไม่ได้ใช้
นี่คือตารางที่ใหญ่กว่าและซับซ้อนกว่าเล็กน้อย:
โปรดสังเกตว่าในปริศนาที่ยังไม่แก้มีสี่เหลี่ยมอยู่สองสามตัวในสี่เหลี่ยมสีเทาที่มีความหมายว่าสี่เหลี่ยมที่ถูกบล็อกซึ่งคุณไม่สามารถวางจุดบน จุดที่มีก้อยบอกคุณว่าจุดนั้นอยู่ในจุดนั้นและมันเชื่อมโยงไปยังจุดอย่างน้อยหนึ่งจุดในทิศทางของหาง แต่ไม่ใช่ในทิศทางอื่น (รวมถึงทิศทางตรงกันข้าม)
เอกสาร
สำหรับส่วนที่เหลือของโพสต์นี้ฉันจะอ้างถึงบอร์ดโดยใช้สัญลักษณ์ต่อไปนี้:
- <,>, ^, v -หมายถึงจุดที่วางไว้ล่วงหน้าโดยมีหางยื่นออกไปในทิศทางของจุด
- * -หมายถึงจุด หากได้รับในตารางที่ไม่ได้แก้ไข (อินพุต) มันเป็นรูปร่างของแต่ละบุคคล หากอยู่ในเอาต์พุตก็จะเชื่อมต่อกับจุดโดยรอบ
- # -หมายถึงสี่เหลี่ยมกริดที่ถูกบล็อก (ซึ่งคุณไม่สามารถวางจุดได้)
- -, | (เครื่องหมายขีดคั่นและแถบ) -ระบุจุดด้วยหางขวาและซ้ายและจุดที่มีหางขึ้นและลงตามลำดับ
- ** (อักขระเว้นวรรค) - ** หมายถึงพื้นที่ว่าง
การใช้สัญลักษณ์เหล่านี้กรณีตัวอย่างหลัง (ยังไม่แก้) สามารถแสดงได้ดังนี้:
<
#
^ #
และการแก้ปัญหาสามารถแสดงเป็น:
*< * *
*
*
* *
* *#*
^ # *
โปรดทราบว่าไม่มีสองรูปทรงที่สามารถสัมผัสในแนวนอนแนวตั้งหรือแนวทแยงมุมดังนั้นกรณีต่อไปนี้ไม่ถูกต้อง:
***
**
**
ท้าทาย
ความท้าทายของคุณคือการแก้ปริศนาลอจิกจุดตั้งแต่ 4x4 ถึง 9x9 คุณจะได้รับอินพุตสี่บรรทัดจากนั้นบอร์ดเกม บรรทัดจะเป็นดังนี้:
- บรรทัดที่ 1, รูปร่าง - รูปร่างที่จะค้นหาแต่ละอันที่อยู่ในรูปแบบ
sizexquantity
(เช่น3x2
สำหรับสองรูปร่างที่มีความยาวสาม) และคั่นด้วยช่องว่าง บรรทัดตัวอย่าง:3x1 2x1 1x1
- บรรทัดที่ 2, คอลัมน์ - รายการที่คั่นด้วยช่องว่างของจำนวนจุดที่ต้องการสำหรับแต่ละคอลัมน์ บรรทัดตัวอย่าง:
1 1 2 2
- บรรทัดที่ 3, แถว - รายการที่คั่นด้วยช่องว่างของจำนวนจุดที่ต้องการสำหรับแต่ละแถว บรรทัดตัวอย่าง:
3 0 3 0
- บรรทัดที่ 4, ขนาดบอร์ด - จำนวนเต็มเดียว, ขนาดบอร์ด,
B
จากนั้นคณะกรรมการจะได้รับและเป็นB
บรรทัดของการเป็นตัวแทนของคณะกรรมการโดยใช้สัญกรณ์ดังกล่าวข้างต้น ตัวอย่างเช่นอินพุตที่สมบูรณ์สำหรับกรณีตัวอย่างหลังมีดังนี้:
4x1 3x1 2x2 1x2
1 4 0 3 0 5
4 1 1 2 3 2
6
<
#
^ #
โปรแกรมของคุณจะแสดงผลบอร์ดที่แก้ไขแล้วในรูปแบบเดียวกัน ผลลัพธ์ที่ตรงกันสำหรับอินพุตด้านบนมีดังนี้:
** * *
*
*
* *
* *#*
* # *
โปรดทราบว่าบอร์ดเกมสามารถมีวิธีแก้ไขปัญหาได้หลายอย่าง ในกรณีนี้เพียงแค่แสดงทางออกที่ถูกต้อง นอกจากนี้โปรแกรมของคุณจะต้องแสดงทางออกที่ถูกต้องภายใน 10 วินาทีบนเดสก์ท็อปคอมพิวเตอร์ที่เหมาะสมสำหรับตาราง 10x10 ที่ซับซ้อน
นี่คือรหัสกอล์ฟอย่างน้อยไบต์จะชนะ
กรณีทดสอบ
อินพุต 1
3x2 1x4
2 2 3 1 2
4 0 3 0 3
5
#
#
*
เอาท์พุท 1
*** *
***#
#
* * *
อินพุต 2
3x1 1x6
2 0 4 0 3
3 1 2 1 2
5
*
#
เอาท์พุท 2
* * *
*
* *
* #
* *
อินพุต 3
5x1 4x1 2x1 1x2
1 2 3 3 2 2
0 5 0 4 0 4
6
#
-
#
<
เอาท์พุท 3
#
*****
****
#
* ** *
t no two shapes can touch horizontally, vertically or diagonally
(นี้ควรจะเป็นจุดเริ่มต้นที่ไม่ได้หายไปเกือบใกล้จะจบ แต่อย่างไรก็ตาม ... )