Scrivi un programma che visualizza una lunga divisione con l'arte ASCII. L'input è composto da due numeri interi, un numeratore e un denominatore, utilizzando il formato di input desiderato.
Esempi:
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
Regole:
- È consentito l'uso dell'operatore di divisione del linguaggio di programmazione .
- È consentito anche il supporto di numeri interi grandi.
- Per coerenza:
- Se il quoziente è zero, stampare un singolo zero alla fine del trampolino.
- Se il resto è zero, non stamparlo.
- Non stampare zeri iniziali su nessun numero.
- Sono consentite nuove righe in eccesso alla fine e spazi finali a destra.
- Vince la soluzione con il minor numero di personaggi.
limiti:
- 0 <= numeratore <= 10 72 - 1
- 1 <= denominatore <= 9999999
Ciò implica che l'output non sarà mai più largo di 80 colonne.
Suite di test e implementazione del campione:
Puoi usare long-division.c ( gist ) per testare il tuo programma. In realtà è uno script bash con all'interno un programma C. Modificalo per invocare il tuo programma nella suite di test. Guarda il codice C in basso per vedere l'implementazione di riferimento. Per favore fatemi sapere se ci sono problemi con il programma di esempio o la suite di test.
$ ./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!
Modifica: su richiesta, inserisco l' input della suite di test e l' output previsto in file di testo (in sintesi ). Esempio di utilizzo (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
Gli strani comandi sed filtrano le nuove righe e gli spazi finali dall'output del programma.