Intro
In der Freizeitmathematik habe ich mit der Konstruktion einer Divisortabelle gespielt, um die Primteiler einer Reihe von Zahlen visuell zu vergleichen / gegenüberzustellen. Die eingegebenen Zahlen stehen oben als Spaltenbezeichnungen, die Primteiler links als Zeilenbezeichnungen und eine Markierung gibt an, wo sich die beiden in einer Reihe befinden.
Für die Eingabe wird beispielsweise 6, 9, 14, 22
eine Tabelle ähnlich der folgenden erstellt:
6 9 14 22
2 * * *
3 * *
7 *
11 *
Dies liegt daran, dass 6
es Hauptteiler von 2
und 3
, 9
Hauptteiler von 3
und so weiter gibt.
Konstruktion
- Die Tabelle ist so aufgebaut, dass die Eingabenummern Spaltenbezeichnungen bilden, die durch Leerzeichen und in aufsteigender Reihenfolge voneinander getrennt sind (Sie können davon ausgehen, dass sie vorsortiert sind), und die Primteiler links in aufsteigender Reihenfolge für jede Zeile aufgelistet sind, die die Zeile bildet Etiketten.
- Beachten Sie, dass führende Leerzeichen in den Primteilern und Eingabezahlen erforderlich sein können, wenn die Zahlen unterschiedlich lang sind, damit alle Spalten die gleiche Breite haben und entsprechend ausgerichtet sind.
- Jeder Teiler wird durch ein einzelnes
*
(oder ein anderes geeignetes ASCII-Zeichen Ihrer Wahl dargestellt, sofern für alle Vorkommen dasselbe Zeichen verwendet wird). - Mehrere Teiler werden ignoriert (z. B.
3 x 3 = 9
gibt es nur einen*
für diese Schnittmenge). - Das
*
kann überall horizontal in der Spalte platziert werden, solange es eindeutig ist (ich habe alle meine Beispiele*
rechtsbündig).
Eingang
- Jeweils eine Liste positiver Ganzzahlen in einem beliebigen Format
>1
. - Sie können davon ausgehen, dass die Eingabe vorsortiert ist.
- Die Eingabe hat garantiert nur eindeutige Werte.
Ausgabe
Die resultierende ASCII-Grafikdarstellung der Primteilertabelle.
Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind optional, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Wenn eine Trennlinie zwischen den Spalten- / Zeilenüberschriften und den Tabellendaten kürzer ist, ist dies ebenfalls zulässig.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit die Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
6,9,14,22
6 9 14 22
2 * * *
3 * *
7 *
11 *
2,3,5,7
2 3 5 7
2 *
3 *
5 *
7 *
2,4,8,16,32
2 4 8 16 32
2 * * * * *
75,99,151,153
75 99 151 153
3 * * *
5 *
11 *
17 *
151 *