Einführung
Du bist ein Verbrecher, der einige geheime Pläne des neuen Tech-Startups Dejavu stehlen muss. Sie schleichen sich über die Rückwand hinein, finden aber eine Tür, für deren Öffnen ein Stift erforderlich ist. Sie erkennen die Marke des Schlosses und wissen, dass es eine 5-stellige PIN mit allen Ziffern von 0 bis 4 benötigt. Nach jeder eingegebenen Ziffer überprüft das Schloss die letzten 5 eingegebenen Ziffern und öffnet sich, wenn der Code korrekt ist. Du musst an dieser Schleuse vorbeikommen und zwar schnell.
Superpermutationen auf den Punkt gebracht
Eine Permutation sind alle möglichen Kombinationen eines bestimmten Ziffernsatzes. Beispielsweise lauten alle Permutationen der Ziffern 0, 1, 2 wie folgt:
012, 021, 102, 120, 201 und 210.
Wenn wir alle diese Permutationen miteinander verketten, erhalten wir eine Superpermutation:
012021102120201210
Diese Superpermutation enthält alle Permutationen von 0, 1, 2, aber es ist möglich, eine kürzere zu machen. Ich werde hier etwas überspringen, aber die kürzeste Superpermutation dieser Ziffern ist:
012010210
Für unsere Absichten und Zwecke ist dies im Wesentlichen die kürzeste Ziffernfolge, die alle möglichen Permutationen dieser Ziffern enthält, dh eine Superpermutation.
Aufgabe
Ihre Aufgabe ist etwas schwieriger als das oben gezeigte Beispiel für Superpermutation, da Sie sich um zwei weitere Stellen Sorgen machen müssen. - Wenn Sie nicht über Superpermutationen gelesen haben oder mein Beispiel oben etwas unklar war, empfehle ich Ihnen dringend, diesen großartigen Artikel von Patrick Honner zu diesem Thema zu lesen (diese Herausforderung war sehr stark von seinem Artikel inspiriert, also ein großes Lob an ihn): https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/ . Ihr Ziel ist es, das kürzestmögliche Programm zu schreiben, das eine Superpermutation der Ziffern 0 bis 4 erzeugt.
Wertung
Ihr Programm nimmt keinerlei Eingaben entgegen und erzeugt eine Superpermutation der Ziffern von 0 bis 4. Diese resultierende Superpermutation muss auf der Konsole ausgedruckt oder dem Benutzer sichtbar angezeigt werden, soweit dies von der Sprache Ihrer Wahl vorgegeben wird. Dies muss nicht die kürzestmögliche Permutation sein, es muss nur eine gültige Superpermutation sein. Aus diesem Grund besteht das Ziel darin, das kürzeste Programm mit der kürzesten Superpermutation zu schreiben. Berechnen Sie Ihre Punktzahl also wie folgt:
Dateigröße (Bytes) * generierte Superpermutationslänge (Ziffern)
Wenn ich zum Beispiel ein 40-Byte-Programm hatte und meine Superpermutation 153 Stellen lang ist, lautet meine Punktzahl:
40 * 153 = 6120
Ziel ist es wie immer, diese Punktzahl so niedrig wie möglich zu halten.
Vorlage
So kannst du deine Antwort posten:
Sprache | Ergebnis
Link zum Code in der Arbeitsumgebung (falls möglich)
code snippet
Code Erklärung usw.
Finalitäten
Dies ist eine meiner ersten Fragen auf dieser Site. Sagen Sie mir bitte, wenn ich etwas vermisse oder ein Teil meiner Herausforderung unklar ist. Vielen Dank und viel Spaß beim Golfen!