มีผล combinatorial คลาสสิกที่หลายวิธีที่จะกระเบื้อง2*nแถบโดย1*2แต้มเป็นที่ n THจำนวนฟีโบนักชี เป้าหมายของคุณคือการพิมพ์ความลาดเอียงทั้งหมดเพื่อให้nวาดด้วยขีดกลางและเส้นแนวตั้งเช่น 8 เอียงเหล่านี้สำหรับn=5:
|————
|————
——|——
——|——
|||——
|||——
————|
————|
||——|
||——|
|——||
|——||
——|||
——|||
|||||
|||||
คุณต้องจัดเตรียมโปรแกรมหรือฟังก์ชั่นที่มีชื่อซึ่งใช้nเป็นอินพุตและพิมพ์เอาต์พุตที่ต้องการ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ
อินพุต
ตัวเลขnระหว่าง1และ10รวมผ่าน STDIN หรืออินพุตฟังก์ชัน
เอาท์พุต
พิมพ์ทุกโดมิโนที่เป็นไปได้ของ2*nแถบที่วาดในแนวนอน รอยยิ้มอาจอยู่ในลำดับใดก็ได้ แต่แต่ละอันควรปรากฏอย่างแน่นอนหนึ่งครั้ง จะต้องคั่นด้วยบรรทัดว่าง
โดมิโนแนวตั้งทำจากแท่งแนวตั้งสองอัน ( |) และโดมิโนแนวนอนทำจากเครื่องหมายขีดกลางสองอัน ( —) คุณอาจใช้เครื่องหมายขีดกลาง ( -) แทนเครื่องหมายขีดกลางเพื่ออยู่ใน ASCII
คุณสามารถทำอะไรกับช่องว่างตราบเท่าที่ผลลัพธ์ที่พิมพ์ออกมามีลักษณะเหมือนกัน
——และ|ตามความยาวเหมือนของเดนนิสไม่ใช่nสายยาว—และ|กรองโดย—ปรากฏเป็นคู่ และสำหรับอันหลังฉันคาดหวังว่ามันจะผ่านการดำเนินการ regexes หรือสตริงบนสตริงที่ผลิตเช่นs.split('——) `ไม่ใช่ด้วยวิธีการทางคณิตศาสตร์เช่นเดียวกับคุณ