Angenommen, eine Teilzeichenfolge ist ein zusammenhängender Abschnitt einer ursprünglichen Zeichenfolge. Zum Beispiel catist ein Teilstring von concatenate. Wir werden sagen, dass eine richtige Teilzeichenfolge eine Teilzeichenfolge ist, die nicht der ursprünglichen Zeichenfolge entspricht. Zum Beispiel concatenateist eine Teilzeichenfolge concatenateeine richtige Teilzeichenfolge, aber nicht. (Einzelzeichenfolgen haben keine richtigen Teilzeichenfolgen)
Wir werden nun eine Sequenz mit diesen Begriffen definieren. Der n- te Term in dieser Sequenz ist die kleinste Zahl, sodass es einen geeigneten Teilstring seiner Binärdarstellung gibt, der kein Teilstring eines früheren Terms in der Sequenz ist. Der erste Begriff ist 10.
Als Übung erzeugen wir die ersten 5 Terme. Ich werde in Binärform arbeiten, um die Dinge einfacher zu machen.
Der erste Begriff ist 10. Da 11die nächstkleinere Zahl nur eine richtige Teilzeichenfolge hat, 1die auch eine Teilzeichenfolge von ist 10, 11ist sie nicht in der Sequenz. 100Enthält jedoch die richtige Teilzeichenfolge, 00die keine Teilzeichenfolge ist, 10so 100ist unser nächster Begriff. Als nächstes wird 101die eindeutige richtige Teilzeichenfolge 01angezeigt, die der Sequenz hinzugefügt wird. Anschließend wird 110die richtige Teilzeichenfolge angezeigt, 11die der Sequenz neu hinzugefügt wird.
Jetzt haben wir
10, 100, 101, 110
111ist weiter oben, aber es enthält nur die Teilzeichenfolgen 1und 11macht es nicht zu einem Begriff. 1000Enthält jedoch das 000Hinzufügen zur Sequenz.
Hier sind die ersten paar Begriffe in Dezimalzahl
2, 4, 5, 6, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 54, 56, 58
Aufgabe
Entweder
Nehmen Sie n als Eingabe und generieren Sie den n- ten Term in dieser Reihenfolge (entweder 0 oder 1 indiziert)
Kontinuierliche Ausgabe von Begriffen der Sequenz
Dies ist Code-Golf- Antworten werden in Bytes bewertet, wobei weniger Bytes besser sind.
n) hinzufügen ?
a(36)ist 47 (1 indiziert).