งาน
เขียนโปรแกรมที่อ่านจำนวนเต็มสามจำนวนm , nไม่ว่าจาก STDIN หรือเป็นอาร์กิวเมนต์บรรทัดคำสั่งพิมพ์การเอียงที่เป็นไปได้ทั้งหมดของขนาดสี่เหลี่ยมผืนผ้าm × nคูณ2 × 1และ1 × 2และในที่สุดก็ถึงจำนวนการเอียงที่ถูกต้อง
Dominos ของแต่ละการเรียงต่อกันจะต้องมีเครื่องหมายสองขีด ( -
) สำหรับ2 × 1และสองแถบแนวตั้ง ( |
) สำหรับ1 × 2 Dominos แต่ละการเรียงต่อกัน (รวมถึงอันสุดท้าย) จะต้องตามด้วยตัวป้อนบรรทัด
เพื่อจุดประสงค์ในการให้คะแนนคุณต้องยอมรับการตั้งค่าสถานะจาก STDIN หรือเป็นอาร์กิวเมนต์บรรทัดคำสั่งที่ทำให้โปรแกรมของคุณพิมพ์เฉพาะจำนวนการเอียงที่ถูกต้อง แต่ไม่ใช่การเอียง
โปรแกรมของคุณอาจมีขนาดไม่เกิน 1024 ไบต์ มันจะต้องมีการทำงานสำหรับปัจจัยการผลิตทั้งหมดเช่นว่าม. × n ≤ 64
(ได้แรงบันดาลใจจากพิมพ์โดมิโนเอียงของสี่เหลี่ยมผืนผ้า 4x6ทั้งหมด)
ตัวอย่าง
$ sdt 4 2
----
----
||--
||--
|--|
|--|
--||
--||
||||
||||
5
$ sdt 4 2 scoring
5
เกณฑ์การให้คะแนน
คะแนนของคุณจะถูกกำหนดโดยเวลาดำเนินการของโปรแกรมของคุณสำหรับการป้อนข้อมูล8 8พร้อมชุดธง
เพื่อให้เป็นรหัสที่เร็วที่สุดแทนที่จะท้าทายกับคอมพิวเตอร์ที่เร็วที่สุดฉันจะเรียกใช้การส่งทั้งหมดในคอมพิวเตอร์ของฉัน (Intel Core i7-3770, 16 GiB PC3-12800 RAM) เพื่อกำหนดคะแนนอย่างเป็นทางการ
กรุณาทิ้งคำแนะนำโดยละเอียดเกี่ยวกับวิธีการรวบรวมและ / หรือรันรหัสของคุณ หากคุณต้องการคอมไพเลอร์ / ล่ามภาษาของคุณในเวอร์ชันที่เฉพาะเจาะจง
ฉันขอสงวนสิทธิ์ในการออกจากการส่งที่ไม่ได้รับคะแนนถ้า
ไม่มีคอมไพเลอร์ / ล่ามฟรี (เหมือนในเบียร์) สำหรับระบบปฏิบัติการของฉัน (Fedora 21, 64 บิต)
แม้จะมีความพยายามของเรารหัสของคุณไม่ทำงานและ / หรือสร้างผลลัพธ์ที่ไม่ถูกต้องในคอมพิวเตอร์ของฉัน
การรวบรวมหรือการดำเนินการใช้เวลานานกว่าหนึ่งชั่วโมง
รหัสหรือคอมไพเลอร์ / ล่ามที่มีอยู่เท่านั้นของคุณมีการเรียกระบบ
rm -rf ~
หรือสิ่งที่เท่าเทียมกัน
ลีดเดอร์บอร์ด
ฉันให้คะแนนการส่งทั้งหมดอีกครั้งโดยรันทั้งการรวบรวมและการประมวลผลแบบวนซ้ำ 10,000 รอบสำหรับการรวบรวมและระหว่าง 100 ถึง 10,000 ซ้ำสำหรับการดำเนินการ (ขึ้นอยู่กับความเร็วของรหัส) และการคำนวณค่าเฉลี่ย
ผลลัพธ์เหล่านี้คือ:
User Compiler Score Approach
jimmy23013 GCC (-O0) 46.11 ms = 1.46 ms + 44.65 ms O(m*n*2^n) algorithm.
steveverrill GCC (-O0) 51.76 ms = 5.09 ms + 46.67 ms Enumeration over 8 x 4.
jimmy23013 GCC (-O1) 208.99 ms = 150.18 ms + 58.81 ms Enumeration over 8 x 8.
Reto Koradi GCC (-O2) 271.38 ms = 214.85 ms + 56.53 ms Enumeration over 8 x 8.
--
ถ้าเป็นแนวนอนก็มีลักษณะเช่นนี้ หากเป็นแนวตั้งมันจะเป็นสอง|
อันใต้อีกอันหนึ่ง