Introducción
Definí la clase de permutaciones ansiosas en un desafío anterior . Como recordatorio, una permutación p de los números del 0 al r-1 es inquietante, si para cada entrada p [i] excepto la primera, hay alguna entrada anterior p [ik] tal que p [i] == p [ ik] ± 1 . Como dato curioso, también dije que para r ≥ 1 , hay exactamente 2 permutaciones ansiosas de r-1 de longitud r . Esto significa que existe una correspondencia biunívoca entre las permutaciones inquietas de longitud r y los vectores binarios de longitud r-1. En este desafío, su tarea es implementar dicha correspondencia.
La tarea
Su tarea es escribir un programa o función que tome un vector binario de longitud 1 ≤ n ≤ 99 y genere una permutación inquieta de longitud n + 1 . La permutación puede estar basada en 0 o en 1 (pero esto debe ser coherente), y la entrada y la salida pueden estar en cualquier formato razonable. Además, las diferentes entradas siempre deben dar diferentes salidas; Aparte de eso, puede devolver cualquier permutación ansiosa que desee.
El conteo de bytes más bajo gana.
Ejemplo
Las permutaciones ansiosas (basadas en 0) de longitud 4 son
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
y su programa debería devolver uno de ellos para cada uno de los vectores de ocho bits de longitud 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
y 0 0 1
debe dar salidas de diferentes longitudes.