Einführung
Ich habe die Klasse der Ameisenpermutationen in einer früheren Herausforderung definiert . Zur Erinnerung, eine Permutation p der Zahlen von 0 bis r-1 ist antsy, wenn für jeden Eintrag p [i] mit Ausnahme der ersten, gibt es einige früheren Eintrag p [ik] derart , dass p [i] == p [ ik] ± 1 . Aus Spaß stellte ich auch fest, dass es für r ≥ 1 genau 2 r-1 Ameisenpermutationen der Länge r gibt . Dies bedeutet, dass es eine Eins-zu-Eins-Entsprechung zwischen den Ameisenpermutationen der Länge r und den Binärvektoren der Länge r-1 gibt. In dieser Herausforderung besteht Ihre Aufgabe darin, eine solche Korrespondenz zu implementieren.
Die Aufgabe
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben , die einen Binärvektor der Länge 1 ≤ n ≤ 99 aufnimmt und eine Ameisenpermutation der Länge n + 1 ausgibt . Die Permutation kann entweder 0-basiert oder 1-basiert sein (dies muss jedoch konsistent sein), und die Eingabe und Ausgabe kann in jedem vernünftigen Format erfolgen. Außerdem müssen unterschiedliche Eingänge immer unterschiedliche Ausgänge liefern. Ansonsten können Sie jede gewünschte Permutation zurückgeben.
Die niedrigste Byteanzahl gewinnt.
Beispiel
Die (0-basierten) Ameisenpermutationen der Länge 4 sind
0 1 2 3
1 0 2 3
1 2 0 3
1 2 3 0
2 1 0 3
2 1 3 0
2 3 1 0
3 2 1 0
und Ihr Programm sollte einen von ihnen für jeden der acht Bitvektoren der Länge 3 zurückgeben:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 1
und 0 0 1
sollte Ausgänge unterschiedlicher Länge geben.