Einführung
Fast jeder kennt das Travelling Salesman Problem (TSP). Die Aufgabe besteht darin, anhand einer Liste von N
Städten den minimalen Hamilton-Zyklus zu finden, dh den kürzesten Weg, der jede Stadt besucht und den Kreis schließt, um zum Start zurückzukehren. Darum geht es bei dieser Herausforderung nicht. Diese Herausforderung besteht darin, Chuck Norris ' Lösung für den TSP zu implementieren :
Chuck Norris löste das Problem des Handlungsreisenden
O(1)
rechtzeitig: Zerlege den Handlungsreisenden in N Teile; Kick jedes Stück in eine andere Stadt.
Herausforderung
Um den TSP auf diese Weise zu lösen, brauchen wir einen ausreichend langlebigen Verkäufer, der Frivolitäten wie Zergliederung nicht scheut. eine Reihe von Städten zu besuchen; eine Reihe von Produkten zu verkaufen; eine konkrete Methode zur Zerlegung; und eine Berechnung für die Wertung.
Spezifikation
- Städte
N
ist die Anzahl der von unserem Verkäufer besuchten Stellen
- Verkäufer
- Das Hauptprogramm oder die Hauptfunktion
- In Sprache geschrieben
X
- Mit Länge mod
N
gleich0
- Produkte
- Zerstückelung
- Den Verkäufer in
N
gleichlange durchgehende Stücke schneiden - Jedes Stück sollte eine gültige Funktion oder ein gültiges Programm in der Sprache sein
X
- Den Verkäufer in
- Ausgabe
- Bei der Ausführung sollte der Verkäufer
Chuck Norris
ein bestimmtes Produkt ausgeben und die geschnittenen Stücke sollten jeweils ein bestimmtes Produkt ausgeben - Nur zusätzliche Leerzeichen am Ende sind zulässig
- Bei der Ausführung sollte der Verkäufer
- Wertung
- Die Länge
L
des Verkäufers in Bytes geteilt durch die Anzahl der StädteN
im Quadrat. Score = L/(N*N)
- Kleinste Punktzahl gewinnt
- Bitte geben Sie 3 signifikante Ziffern an, wenn Sie Ihre Dezimalpunktzahl veröffentlichen
- Die Länge
Beispiele
- Dieser Verkäufer besucht so 3 Städte
N=3
und hat so eine Länge von 9L=9
. Somit wäre die Punktzahl für diese AntwortS = 9 / (3 * 3) = 9/9 = 1
.- Beachten Sie, dass der Verkäufer und jedes in Scheiben geschnittene Stück (von denen es 3 gibt) gültige Programme oder Funktionen in derselben Sprache sein sollten.
Program -> Output
------- ------
aaaBBBccc -> Chuck Norris
aaa -> Helium
BBB -> Iridium
ccc -> Tennessine
N=4
undL=20
soS=20/16=1.25
Program -> Output
------- ------
aaaaaBBBBBcccccDDDDD -> Chuck Norris
aaaaa -> Hydrogen
BBBBB -> Cadmium
ccccc -> Mercury
DDDDD -> Iron
ElementData
erlaubt? (Ich bezweifle, dass es viel spart, aber ich weiß es nicht.)