introduction
J'ai défini la classe des permutations angoissées dans un défi précédent . Pour rappel, une permutation p des nombres de 0 à r-1 est angoissée, si pour chaque entrée p [i] sauf la première, il y a une entrée antérieure p [ik] telle que p [i] == p [ ik] ± 1 . Comme fait amusant, j'ai également déclaré que pour r ≥ 1 , il y a exactement 2 r-1 permutations antsy de longueur r . Cela signifie qu'il existe une correspondance biunivoque entre les permutations antsy de longueur r et les vecteurs binaires de longueur r-1. Dans ce défi, votre tâche consiste à mettre en œuvre une telle correspondance.
La tâche
Votre tâche consiste à écrire un programme ou une fonction qui prend un vecteur binaire de longueur 1 ≤ n ≤ 99 et génère une permutation antsy de longueur n + 1 . La permutation peut être basée sur 0 ou sur 1 (mais cela doit être cohérent), et l'entrée et la sortie peuvent être dans n'importe quel format raisonnable. De plus, différentes entrées doivent toujours donner des sorties différentes; à part cela, vous êtes libre de retourner quelle que soit la permutation angoissée que vous souhaitez.
Le nombre d'octets le plus bas gagne.
Exemple
Les permutations antsy (basées sur 0) de longueur 4 sont
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
et votre programme devrait renvoyer l'un d'eux pour chacun des vecteurs de huit bits de longueur 3:
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
et 0 0 1
devrait donner des sorties de différentes longueurs.