Écrivez un programme qui visualise une longue division avec l'art ASCII. L'entrée se compose de deux entiers, un numérateur et un dénominateur, en utilisant le format d'entrée de votre choix.
Exemples:
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
Règles:
- L'utilisation de l'opérateur de division du langage de programmation est autorisée.
- L'utilisation de la prise en charge des grands nombres entiers est également autorisée.
- Pour la cohérence:
- Si le quotient est zéro, imprimez un seul zéro à la fin du plongeoir.
- Si le reste est nul, ne l'imprimez pas.
- N'imprimez pas de zéros non significatifs sur aucun nombre.
- Les sauts de ligne à la fin et les espaces de fin à droite sont autorisés.
- La solution avec le moins de personnages gagne.
Limites:
- 0 <= numérateur <= 10 72 - 1
- 1 <= dénominateur <= 9999999
Cela implique que la sortie ne dépassera jamais 80 colonnes.
Suite de tests et exemple d'implémentation:
Vous pouvez utiliser long-division.c ( gist ) pour tester votre programme. Il s'agit en fait d'un script bash avec un programme C à l'intérieur. Ajustez-le pour appeler votre programme dans la suite de tests. Regardez le code C en bas pour voir l'implémentation de référence. Veuillez me faire savoir s'il y a des problèmes avec l'exemple de programme ou la suite de tests.
$ ./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!
Edit: Sur demande, je mets l' entrée de la suite de tests et la sortie attendue dans des fichiers texte ( gist ). Exemple d'utilisation (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
Les commandes sed étranges filtrent les nouvelles lignes et les espaces en fin de sortie du programme.