Napisz program, który wizualizuje długi podział ze sztuką ASCII. Dane wejściowe składają się z dwóch liczb całkowitych, licznika i mianownika, przy użyciu wybranego formatu wejściowego.
Przykłady:
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
Zasady:
- Używanie operatora podziału języka programowania toDozwolone użycie .
- Dozwolone jest także użycie obsługi dużej liczby całkowitej.
- Dla spójności:
- Jeśli iloraz wynosi zero, wydrukuj jedno zero na końcu trampoliny.
- Jeśli reszta to zero, nie drukuj jej.
- Nie drukuj zer wiodących na żadnych liczbach.
- Dozwolone są nadmierne znaki nowej linii na końcu i końcowe spacje po prawej stronie.
- Rozwiązanie z najmniejszą liczbą postaci wygrywa.
Limity:
- 0 <= licznik <= 10 72 - 1
- 1 <= mianownik <= 9999999
Oznacza to, że wynik nigdy nie będzie szerszy niż 80 kolumn.
Pakiet testowy i przykładowa implementacja:
Możesz użyć long-division.c ( gist ), aby przetestować swój program. W rzeczywistości jest to skrypt bash z programem C. Ulepsz go, aby wywołać program w pakiecie testowym. Spójrz na kod C na dole, aby zobaczyć implementację referencyjną. Daj mi znać, jeśli występują problemy z programem przykładowym lub pakietem testowym.
$ ./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!
Edycja: Na żądanie umieszczam dane wejściowe zestawu testów i oczekiwane dane wyjściowe w plikach tekstowych ( gist ). Przykładowe użycie (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
Dziwne polecenia sed odfiltrowują końcowe znaki nowej linii i spacje z wyników programu.