Es gibt ein Netzwerk von bis zu 26 Knoten (benannt A
nach Z
oder a
nach z
Ihrem Wunsch). Jedes Knotenpaar kann verbunden oder getrennt werden. Ein Knoten darf mit maximal 4 anderen Knoten verbunden sein. Ihre Aufgabe ist es, das Netzwerk in einem 2D-Diagramm zu zeichnen. Die Eingabe erfolgt so, dass diese Aufgabe möglich ist (weitere Einschränkungen finden Sie im Abschnitt Ausgabe).
Format
Eingang
- Buchstabenpaare (
A
nachZ
odera
nachz
Ihrem Wunsch). Sie sind in keiner Reihenfolge sortiert. - Optional - Anzahl der Paare
Ausgabe
- Eine ASCII-Zeichnung, die die tatsächlichen Verbindungen zwischen den Knoten zeigt. Die Knoten werden durch gegeben
a
zuz
oderA
zuZ
. Verwenden Sie-
für horizontale Links und|
für vertikale Links. Verknüpfungen können eine beliebige Länge (ungleich Null) haben, sie sollten jedoch gerade horizontale / vertikale Linien sein , die nicht gebogen werden . Leerzeichen können hinzugefügt werden, sofern sie das Bild nicht verunstalten.
Sie können möglicherweise keine integrierten Funktionen verwenden, die beim Layout des Diagramms hilfreich sind. Möglicherweise sind auch andere grafische integrierte Funktionen zulässig (Lösungen ohne integrierte Funktionen wären jedoch wünschenswerter). Kürzester Code gewinnt.
Beispieldaten
Eingang
A B
B F
B L
F K
L K
K R
K S
R P
S J
S P
J A
T V
V N
Ausgabe
A - B - F T - V
| | | |
| L - K - R N
| | |
J ----- S - P
Eingang
H C
G H
A B
B F
B C
F G
C D
D A
Ausgabe
A - B ----- F
| | |
D - C - H - G
code-golf
ascii-art
graph-theory
ghosts_in_the_code
quelle
quelle
H A
und diese Kante nicht in der angegebenen Ausgabe enthalten sind. Bearbeiten: Problem identifiziert und behoben.Antworten:
CJam, 142
Sie haben nicht nach einer optimalen, deterministischen oder schnellen Lösung gefragt.
Probieren Sie es online aus
Dies generiert zufällige Koordinaten für jeden Buchstaben und prüft, ob das Layout akzeptabel ist (Kantenbuchstaben aneinandergereiht und keine Schnittpunkte), bis es ist. Es wird langsam, je mehr Kanten hinzugefügt werden.
Die beiden
D
Buchstaben im Code geben die maximalen x- und y-Koordinaten an. Ich habeD
(= 13) gewählt, weil ich denke, dass es für alle Fälle ausreichen sollte. Zögern Sie nicht, mir das Gegenteil zu beweisen. Sie können sie jedoch auf andere Werte ändern, um das Programm zu beschleunigen. Das zweite Beispiel sollte beispielsweise innerhalb von ein oder zwei Minuten abgeschlossen sein, wenn Sie stattdessen 3 und 4 verwenden.quelle
C 813 Bytes
Übernimmt Eingaben als Kommandozeilenargumente, zB:
Nirgends konkurrenzfähig mit Aditsus Antwort nach Größe, aber viel effizienter!
Dies wird alle möglichen Lösungen brachial erzwingen, aber Fehler schnell erkennen, wie es geht. In den beiden Testfällen wird es fast sofort beendet, und bei schwierigeren Eingaben scheint es nur ein paar Sekunden zu dauern. Es gibt auch keine Beschränkung für die akzeptierten Knotennamen (obwohl Sie nicht ein Leerzeichen
|
oder benennen können-
) und es gibt keine Beschränkung für die Anzahl der Knoten (solange alle Namen in ein Byte passen, beträgt die praktische Beschränkung also 252 Knoten). und es wird langsam werden, lange bevor es so viele erreicht).Es gibt viel Spielraum, um dies zu beschleunigen. Viele Kurzschlussverluste gingen beim Golfen verloren und es gibt Teile, die aus den Hot-Loops entfernt werden können. Einige Beobachtungen der Symmetrie können unter anderem die Positionierung der ersten beiden Knoten drastisch reduzieren.
Nervenzusammenbruch:
quelle