Schreiben Sie ein Programm, das die lange Teilung mit ASCII-Kunst visualisiert. Die Eingabe besteht aus zwei Ganzzahlen, einem Zähler und einem Nenner, wobei das Eingabeformat Ihrer Wahl verwendet wird.
Beispiele:
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
Regeln:
- Die Verwendung des Divisionsoperators der Programmiersprache ist zulässig.
- Die Verwendung von Big Integer-Unterstützung ist ebenfalls zulässig.
- Für die Konsistenz:
- Wenn der Quotient Null ist, drucken Sie eine einzelne Null am Ende des Sprungbretts.
- Wenn der Rest Null ist, drucken Sie ihn nicht aus.
- Drucken Sie keine führenden Nullen auf Zahlen.
- Überzählige Zeilenumbrüche am Ende und Leerzeichen nach rechts sind zulässig.
- Lösung mit den wenigsten Zeichen gewinnt.
Grenzen:
- 0 <= Zähler <= 10 72 - 1
- 1 <= Nenner <= 9999999
Dies bedeutet, dass die Ausgabe niemals breiter als 80 Spalten sein wird.
Testsuite und Beispielimplementierung:
Sie können long-division.c ( gist ) verwenden, um Ihr Programm zu testen. Es ist eigentlich ein Bash-Skript mit einem darin enthaltenen C-Programm. Optimieren Sie es, um Ihr Programm in der Testsuite aufzurufen. Sehen Sie sich den C-Code unten an, um die Referenzimplementierung zu sehen. Bitte lassen Sie mich wissen, wenn es Probleme mit dem Beispielprogramm oder der Testsuite gibt.
$ ./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!
Bearbeiten: Auf Wunsch stelle ich die Eingabe und erwartete Ausgabe der Testsuite in Textdateien ( gist ). Beispielnutzung (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
Die seltsamen sed-Befehle filtern nachgestellte Zeilenumbrüche und Leerzeichen aus der Programmausgabe heraus.
quelle
Antworten:
Python 3,
284257 Zeichendiv.py
Verwendung:
python3 div.py
Eingabe: über Tastatur
test.py
Output- Übereinstimmungen werden erwartet
Versionen:
1. 284
2. 257 :
s,z,f=0,0,0
→s=z=f=0
;z and f
→z*f
; besseres Looping; ein paar Zeilenumbrüche entfernt.quelle
Haskell, 320 Zeichen
Besteht alle Tests. Während ist das schön Golf'd - ich denke, es gibt hier noch mehr zu tun ...
read
Anrufe verzögern , wodurch der Anrufbedarf verringert wirdshow
und sich die Abkürzungshow
alss
nicht lohnt.quelle
-XUnicodeSyntax
) verwenden können.JavaScript (400
394418)HINWEIS: So verlockend es auch durch den Austausch ein paar Zeichen rasieren sieht
c=(c==0)?
mitc=!c?
, es ist nicht verwendbar , da es verursacht punktbezogenen Bugs schwimmen.http://jsfiddle.net/nLzYW/9/
Beispielausführung:
Edit 1 : Kleinere Fehlerbehebungen, zahlreiche Code-Optimierungen.
Edit 2 : Fehler behoben, bei dem 1/7 zusätzliche Ausgabe generiert.
quelle
d(1,7)
(und ähnliche Tests) Wiederholen Sie den Nenner, anstatt nichts zu drucken. Dies ist falsch, da diese Zahl die Quotientenziffer multipliziert mit dem Nenner sein sollte, der Null ist.Javascript: (372)
Aufruf mit i (Teiler, Zahl). Codegolfed JS: http://jsfiddle.net/puckipedia/EP464/ Ungolfed (niederländisch) JS: http://jsfiddle.net/puckipedia/M82VM/
Gibt die lange Division zurück (im holländischen Format, wie ich es gelernt habe):
Testfall:
quelle