Напишіть програму, яка візуалізує довгий поділ з мистецтвом ASCII. Введення складається з двох цілих чисел, чисельника та знаменника, використовуючи обраний вами формат введення.
Приклади:
1234 ÷ 56:
22
----
56|1234
112
---
114
112
---
2
1002012 ÷ 12:
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
Правила:
- Використання оператора ділення мови програмування в це дозволено.
- Використання великої цілої підтримки також дозволено.
- Для послідовності:
- Якщо коефіцієнт дорівнює нулю, надрукуйте один кінець нуля в кінці дайвінг-дошки.
- Якщо залишок дорівнює нулю, не друкуйте його.
- Не друкуйте провідні нулі на жодних номерах.
- Зайві нові рядки в кінці та пробіли праворуч дозволені.
- Рішення з найменшими символами виграє.
Обмеження:
- 0 <= чисельник <= 10 72 - 1
- 1 <= знаменник <= 9999999
Це означає, що вихід ніколи не буде ширшим за 80 стовпців.
Тестовий набір та реалізація вибірки:
Ви можете використовувати long-Division.c ( gist ) для тестування програми. Це насправді баш-скрипт із програмою C всередині. Налаштуйте його, щоб викликати свою програму в тестовому наборі. Подивіться на код C внизу, щоб побачити реалізацію посилань. Будь ласка, повідомте мені, чи є якісь проблеми із зразком програми або тестовим набором.
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
Змінити: За бажанням, я поставив набір тестів введення і очікувані результати в текстові файли ( GIST ). Використання зразка (bash):
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
Дивні команди sed відфільтровують нові результати та пробіли з результатів програми.