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