Завдання
Напишіть програму, яка зчитує три цілі числа m , n або з STDIN, або як аргументи командного рядка, друкує всі можливі нахили прямокутника розмірами m × n на 2 × 1 і 1 × 2 доміно і, нарешті, кількість дійсних обмоток.
Доміно окремої черепиці повинно бути представлене двома штрихами ( -
) на 2 × 1 та двома вертикальними брусками ( |
) для 1 × 2 доміно. Кожна плитка (включаючи останню) повинна дотримуватися лінійку подачі.
Для цілей вибору також потрібно прийняти прапор від STDIN або як аргумент командного рядка, який змушує вашу програму друкувати лише кількість дійсних обрізів, але не самі обшивки.
Ваша програма не може перевищувати 1024 байти. Він повинен працювати на всіх входах таким чином, що m × n ≤ 64 .
(Натхненно Друком усіх обшивок доміно до прямокутника 4x6 .)
Приклад
$ sdt 4 2
----
----
||--
||--
|--|
|--|
--||
--||
||||
||||
5
$ sdt 4 2 scoring
5
Оцінка балів
Ваш бал визначається часом виконання вашої програми для введення 8 8 із встановленим прапором.
Щоб зробити це найшвидшим кодом, а не найшвидшим завданням на комп’ютері , я запускаю всі матеріали на своєму власному комп’ютері (Intel Core i7-3770, 16 GiB PC3-12800 ОЗУ), щоб визначити офіційний бал.
Будь ласка, залиште детальні інструкції щодо компіляції та / або виконання коду. Якщо вам потрібна певна версія компілятора / перекладача вашої мови, зробіть заяву на це.
Я залишаю за собою право залишати матеріали без захисту, якщо:
Для моєї операційної системи немає безкоштовного (як у пива) компілятора / інтерпретатора (Fedora 21, 64 біт).
Незважаючи на наші зусилля, ваш код не працює та / або видає неправильний висновок на моєму комп’ютері.
Складання або виконання займає більше години.
Ваш код або єдиний доступний компілятор / інтерпретатор містять системний виклик
rm -rf ~
або щось рівномірне.
Таблиця лідерів
Я повторно оцінив всі подані матеріали, виконуючи і компіляції, і виконання у циклі з 10 000 ітерацій для компіляції та від 100 до 10000 ітерацій для виконання (залежно від швидкості коду) та обчислення середнього значення.
Такі результати:
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.
--
. Якщо вона вертикальна, це дві |
, одна нижче іншої.