ลูก ๆ ของฉันมีแผ่นตัวอักษรเพื่อเล่นด้วยเช่นนี้:
หลังจากหลายเดือนที่วางแผ่นกระเบื้องแบบสุ่มฉันก็เหนื่อยและวางกระเบื้องทั้งหมดของเสื่อที่จัดกลุ่มตามส่วนต่าง ๆ ตามสีพื้นหลังของพวกเขา ดังนั้นถ้าตัวอักษรแสดงสีพื้นหลังฉันได้เสื่อแบบนี้:
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
ดังนั้นสำหรับสี A, B, C, D และ E มักจะมีวิธีการเชื่อมต่อกระเบื้องทั้งหมดด้วยสีพื้นหลังเดียวกันทั้งแนวนอนหรือแนวตั้งในเสื่อ นั่นคือสิ่งที่ฉันเรียกเสื่อที่จัดกลุ่มตามสีอย่างเหมาะสม คุณสามารถดูกลุ่มสำหรับตัวอย่างก่อนหน้าในตารางต่อไปนี้:
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
นอกจากนี้มีเพียงกลุ่มเดียวสำหรับทุกสีดังนั้นสิ่งนี้จะไม่ถูกต้อง:
ABA
ABA
เนื่องจากสี A ไทล์ไม่ได้ถูกจัดกลุ่มในกลุ่มเดียวเท่านั้น สิ่งนี้จะไม่ถูกต้องเนื่องจากไทล์ไม่เชื่อมต่อทั้งแนวนอนหรือแนวตั้ง:
AB
BA
ความท้าทาย
กำหนดอาร์เรย์ 2 มิติของอักขระในช่วง ASCII ที่พิมพ์ได้ (ไม่จำเป็นต้องเป็นสี่เหลี่ยมจัตุรัสตราบใดที่ขนาดของมิติทั้งสองเท่ากับหรือมากกว่า 1) ตรวจสอบว่าอาร์เรย์แสดงmat ที่จัดกลุ่มสีอย่างถูกต้องหรือไม่ (อักขระแต่ละตัวที่แตกต่างกันในอาร์เรย์แทนสีที่ต่างกัน) อินพุตอาจอยู่ในรูปแบบที่สมเหตุสมผลตราบใดที่มันแทนอาร์เรย์ 2 มิติของอักขระ (อาร์เรย์ถ่าน 2 มิติอาร์เรย์ของสตริงที่มีความยาวเท่ากันเป็นต้น) และเอาต์พุตต้องเป็นคู่ของค่าจริงและเท็จ (0 / 1, 't' / 'f', จริง / เท็จไม่ว่าอะไรก็ตามตราบเท่าที่บางสิ่งถูกส่งคืนและค่าส่งคืนมีความสอดคล้องกันในอินพุต)
นี่คือโค้ดกอล์ฟดังนั้นโปรแกรม / ฟังก์ชั่น / วิธีการ / แลมบ์ดาที่สั้นที่สุดสำหรับแต่ละภาษาจะชนะ!
ตัวอย่าง
A truthy
AB
AB truthy
AB
BA falsey
ABCDE truthy
ABCDC falsey
**::dd22
***:d222
*:::::22 truthy
$$$%%%&&
$$%%&&&&
&&$$$%&& falsey
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC truthy
AABB
ABBA
AAAA truthy
AAAB
AAAA
AAAA truthy
เสื่อของฉันจัดกลุ่มตามสีอย่างเหมาะสม
(ฉันยังต้องแก้ไขเส้นขอบเหล่านั้น ... )