2
การจัดแนวบนกริดแบบสามเหลี่ยม
กริดแบบหกเหลี่ยมได้รับความนิยมอย่างมากสำหรับความท้าทายเกี่ยวกับข้อมูล 2 มิติเมื่อไม่นานมานี้ อย่างไรก็ตามดูเหมือนว่ากริดรูปสามเหลี่ยมที่น่าสนใจไม่แพ้กัน ฉันต้องการแก้ไขด้วยความท้าทายที่ค่อนข้างง่าย ก่อนอื่นเราจะแสดงตารางสามเหลี่ยมได้อย่างไร ลองพิจารณาตัวอย่างต่อไปนี้ (ไม่สนใจไดอะแกรมที่เหมาะสม) เซลล์ตกลงอย่างเรียบร้อยบนกริดปกติ (ความแตกต่างของกริดปกติเป็นเพียงเซลล์ที่ถูกพิจารณาว่าติดกัน): 1234567 89abcde fghijkl mnopqrs ในขณะที่แผนภาพด้านขวาแสดงให้เห็นว่าตารางสามเหลี่ยมมีสามแกนหลัก ได้แก่ แนวนอนและแนวทแยงสองเส้น ไฮไลต์สิ่งเหล่านี้ในตาราง ASCII: AVAVAVA VAabcAV fVAiAVl mnVAVrs ความท้าทาย คุณได้รับสตริงรูปสี่เหลี่ยมผืนผ้าที่แสดงถึงรูปสามเหลี่ยม (ซึ่งมุมบนซ้ายเป็นรูปสามเหลี่ยมชี้ขึ้น) เซลล์ส่วนใหญ่ที่มีค่าเป็น.แต่จะมีเซลล์สองเซลล์#เช่น: ....# .#... ..... ตรวจสอบว่าทั้งสอง#ถูกจัดตำแหน่งตามแนวแกนใด ๆ ในสามแกนของตารางหรือไม่ (เช่นว่าพวกเขานอนบนแถวเดียวในทิศทางใดก็ได้ที่เน้นด้านบน) สำหรับตัวอย่างนี้คำตอบคือ "ไม่" คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์ อินพุตอาจเป็นสตริงเดี่ยวที่คั่นด้วย linefeeds หรืออักขระที่สะดวกอื่น ๆ หรือรายการสตริง คุณอาจจะใช้สอง …