Einige Hintergrundinformationen
Zählstäbe sind kleine Balken (3 bis 14 cm lang), die von Mathematikern aus vielen asiatischen Kulturen mehr als 2000 Jahre lang verwendet wurden, um eine ganze Zahl oder einen ganzen Bruch darzustellen. (In dieser Tabelle konzentrieren wir uns jedoch auf vorzeichenlose Ganzzahlen.) Es gab auch eine schriftliche Version, die Stabnummern genannt wurde.
So funktioniert das:
(Wenn Sie zu irgendeinem Zeitpunkt verwirrt sind, sehen Sie sich die ASCII-Darstellung jeder Ziffer und einige Beispiele an, die ich unten aufgeführt habe.)
Stabziffern sind ein echtes Positionszahlensystem mit Ziffern für 1-9 und Leerzeichen für 0. Die Ziffern bestehen aus horizontalen und vertikalen Linien; Je mehr Zeilen, desto höher die Ziffer. Sobald Sie fünf erreicht haben, setzen Sie eine horizontale Linie oben, um 5 zur Anzahl der Zeilen darunter hinzuzufügen. Eine vertikale Linie ist 1, zwei vertikale Linien 2, fünf vertikale Linien sind 5, eine vertikale Linie mit einer horizontalen Linie oben ist 6, vier vertikale Linien mit einer horizontalen Linie oben sind 9 (die höchste Ziffer).
Eine vertikale 3-stellige:
|||
|||
|||
|||
|||
Um das Lesen der Stabnummern zu vereinfachen, verwendeten sie für jede alternierende Ziffer eine andere Notation. Die zweite Notation vertauscht die Rolle der horizontalen und vertikalen Linien. so dass 3 durch drei horizontale Linien und 8 durch drei horizontale Linien mit einer vertikalen Linie oben dargestellt wird.
Eine horizontale 8-stellige:
|
|
__|__
_____
_____
Zu wissen, welche Notation zu verwenden ist, ist einfach, wie bereits gesagt, sie werden abwechselnd verwendet, und Sun Tzu schrieb, dass "eins vertikal ist, zehn horizontal ist". Die Ziffer ganz rechts ist also vertikal und wir wechseln von da an.
Die Herausforderung
Diese Stäbe wurden verwendet, um negative Zahlen und Brüche darzustellen (wie im Wikipedia-Artikel erläutert) . Für diese Herausforderung konzentrieren wir uns jedoch nur auf positive ganze Zahlen. Das Ziel ist einfach:
Schreiben Sie eine Funktion oder ein vollständiges Programm, das in irgendeiner Weise einen ganzzahligen Wert als Eingabe verwendet und die Darstellung der Stabzahl dieser Ganzzahl in STDOUT druckt (Sie können auch in eine Datei schreiben, wenn dies besser funktioniert). Der kürzeste Code in Bytes gewinnt.
Jede Ziffer wird durch 5x5 ASCII-Zeichen dargestellt und durch zwei Spalten mit 5 Leerzeichen getrennt. Die genaue Darstellung, die Sie für jede Ziffer verwenden, lautet wie folgt:
space between two digits (two colums):
0 digit, both vertical and horizontal (five columns):
1 digit, vertical:
|
|
|
|
|
2 digit, vertical:
| |
| |
| |
| |
| |
3 digit, vertical:
|||
|||
|||
|||
|||
4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||
5 digit, vertical:
|||||
|||||
|||||
|||||
|||||
6 digit, vertical:
_____
|
|
|
|
7 digit, vertical:
_____
| |
| |
| |
| |
8 digit, vertical:
_____
|||
|||
|||
|||
9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||
1 digit, horizontal:
_____
2 digit, horizontal:
_____
_____
3 digit, horizontal:
_____
_____
_____
4 digit, horizontal:
_____
_____
_____
_____
5 digit, horizontal:
_____
_____
_____
_____
_____
6 digit, horizontal:
|
|
|
|
__|__
7 digit, horizontal:
|
|
|
__|__
_____
8 digit, horizontal:
|
|
__|__
_____
_____
9 digit, horizontal:
|
__|__
_____
_____
_____
Die Ziffern sind nebeneinander zu drucken. Nachgestellte Leerzeichen hinter dem Begrenzungsrahmen der letzten Ziffer sind nicht zulässig. Nachfolgende Leerzeichen zum Vervollständigen des Begrenzungsrahmens der letzten Ziffer (n) sind erforderlich. Sie sollten die Ausgabe mit einem einzelnen nachgestellten Zeilenumbruch beenden. Führende Leerzeichen, die nicht zum Begrenzungsrahmen der ersten Ziffer gehören, sind ebenfalls verboten.
Beispielausgabe
Zeilen, die mit beginnen, >
sind als Eingabe zu interpretieren.
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____