Ein ästhetisch ansprechender Teilerbaum ist ein Baum von Eingabeteilern n
, der für jede zusammengesetzte Zahl m
zwei untergeordnete Knoten hat, die das Teilerpaar darstellen , das der Quadratwurzel von am nächsten liegt m
. Der linke Knoten sollte der kleinere Teiler sein m
und der rechte Knoten sollte der größere Teiler sein m
. Eine Primzahl im Baum sollte keine untergeordneten Knoten haben. Ihr Baum kann in Form von Textkunst oder einem Bild vorliegen. Die Regeln für die Ausgabe von Textkunst lauten wie folgt.
Abstandsregeln
Um die Knoten in der Baumstruktur auszuräumen, gelten die folgenden Regeln:
- Die Knoten in einer bestimmten Tiefe von der Wurzel sollten sich in der Ausgabe alle in derselben Textzeile befinden.
/ \ NOT / \ / \ / 3 2 3 2
- Bei linken Knoten sollte sich der eingehende Zweig oben rechts befinden, wenn der Knoten eine einstellige Zahl ist, ansonsten direkt über der letzten Ziffer. Beispiel:
/ UND / 3 720
- Bei rechten Knoten sollte sich der eingehende Zweig oben links befinden, wenn der Knoten eine einstellige Zahl ist, ansonsten direkt über der ersten Ziffer. Beispiel:
\ UND \ 7 243
- Bei ausgehenden linken Zweigen sollte der Zweig ein Leerzeichen links von der Nummer beginnen. Beispiel:
275 / 11
- Für ausgehende rechte Zweige sollte der Zweig ein Leerzeichen rechts von der Nummer beginnen. Beispiel:
275 \ 25
- Zwei beliebige Knoten auf derselben Ebene des Baums müssen mindestens zwei Leerzeichen voneinander entfernt sein. Gleichzeitig sollten zwei Teilbäume auf derselben Ebene des Baums so wenig Leerzeichen wie möglich voneinander entfernt sein.
Dieser Baum funktioniert nicht, weil die ** Teilbäume ** zu eng sind. 504 / \ / \ / \ / \ 21. 24 / \. / \ / \. / \ 3 7. 4 6 . / \ / \ .2 2 2 3 Während dieser Baum genug Platz zwischen seinen Zweigen hat. 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 2 3
- Wenn zwei Teilbäume in einem Baum zu nahe beieinander liegen, können Sie sie trennen, indem Sie
/\
dem Baum über den Eltern eine weitere Reihe von Zweigen hinzufügen .
441 / \ Letzte Zeile ist noch nicht ausgefüllt und wir haben bereits keinen Platz mehr. 21 21 / \ / \ Fügen Sie eine weitere Reihe von Zweigen hinzu 441 / \ Fast, aber die 7 und die 3 liegen zu nahe beieinander. / \ Eine weitere Zeile sollte es tun. 21 21 / \ / \ 3 7 3 7 Fügen Sie eine weitere Reihe von Zweigen hinzu 441 / \ Und wir sind fertig. / \ / \ 21 21 / \ / \ 3 7 3 7
Beispiele
Als vollständiges Beispiel sieht der Teilerbaum von 24 folgendermaßen aus:
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4 und 6 sind das Teilerpaar, das der Quadratwurzel von 24 am nächsten liegt. 4 befindet sich links, da es kleiner ist. In der nächsten Zeile die Zahl 2 links von 3, weil sie kleiner ist.
Der Teilerbaum für 63 sollte wie folgt aussehen:
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
In der falschen Baumstruktur sind 3 und 21 nicht das der Quadratwurzel von 63 am nächsten liegende Teilerpaar, und 3 und 7 sind nicht richtig sortiert. Die Abzweigplatzierung auf der 21 ist jedoch korrekt.
Für 42 sollten Sie haben:
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
Werfen wir einen Blick auf 720. Beachten Sie, dass wir fünf Verzweigungsebenen benötigen 720
, damit die Teilbäume 24
und den 30
richtigen Abstand zueinander haben. Beachten Sie auch, dass 24
und 30
zwei Ebenen von Zweigen haben , weil 4
und 6
Kinder - Knoten haben , die richtigen Abstand und die Kinder - Knoten müssen 30
Notwendigkeit , sich auf der gleichen Ebene wie die Kinder - Knoten zu sein 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
Die Herausforderung
- Ihre Aufgabe ist es, einen korrekt beabstandeten, ästhetisch ansprechenden Teilerbaum für die Eingabe zu erstellen
n
, wobein
eine positive ganze Zahl größer als 1 ist. - Ihre Ausgabe kann führende und nachfolgende Leerzeichen sowie führende und nachfolgende Zeilenumbrüche enthalten, muss jedoch ansonsten den oben angegebenen Abstandsregeln entsprechen.
- Ihre Ausgabe darf sein: Textkunst, ein Bild (andere Formate müssen hinzugefügt werden, falls erforderlich).
- Stellen Sie bei Bildern sicher, dass die Knoten Ihres Baums einen ausreichenden Abstand haben und dass sich die Knoten auf derselben Höhe im Baum auf derselben Höhe im Bild befinden.
- Das ist Code Golf. Die geringste Anzahl von Bytes (oder eine entsprechende Anzahl) gewinnt.
Wir danken Stewie Griffin für das Nachdenken über diese Idee und Peter Taylor, Martin Ender, Mego und Eᴀsᴀ Iᴛᴇʀʟʏ für ihre Hilfe bei der Neufassung der Spezifikation. Wie immer sind Vorschläge oder Korrekturen sehr willkommen. Viel Glück und gutes Golfen!
Weitere Testfälle:
2
4
/ \
2 2
20
/ \
4 5
/ \
2 2
323
/ \
17 19
362880
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
576 630
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
24 24 21 30
/ \ / \ / \ / \
/ \ / \ / \ / \
4 6 4 6 3 7 5 6
/ \ / \ / \ / \ / \
2 2 2 3 2 2 2 3 2 3
1286250
/ \
/ \
/ \
/ \
/ \
1050 1225
/ \ / \
/ \ / \
/ \ / \
30 35 35 35
/ \ / \ / \ / \
5 6 5 7 5 7 5 7
/ \
2 3