Introdução
Eu defini a classe de permutas antsy em um desafio anterior . Como lembrete, uma permutação p dos números de 0 a r-1 é ansiosa, se para cada entrada p [i], exceto a primeira, houver alguma entrada anterior p [ik] tal que p [i] == p [ ik] ± 1 . Como um fato divertido, também afirmei que para r ≥ 1 , existem exatamente 2 r-1 permutações de comprimento r . Isso significa que existe uma correspondência individual entre as permutações antipáticas de comprimento r e os vetores binários de comprimento r-1. Nesse desafio, sua tarefa é implementar essa correspondência.
A tarefa
Sua tarefa é escrever um programa ou função que considere um vetor binário de comprimento 1 ≤ n ≤ 99 e produza uma permutação antipática de comprimento n + 1 . A permutação pode ser baseada em 0 ou baseada em 1 (mas isso deve ser consistente), e a entrada e saída podem estar em qualquer formato razoável. Além disso, entradas diferentes devem sempre fornecer saídas diferentes; além disso, você pode devolver a permutação que quiser.
A menor contagem de bytes vence.
Exemplo
As permutas antsy (baseadas em 0) de comprimento 4 são
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
e seu programa deve retornar um deles para cada um dos vetores de oito bits de comprimento 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
e 0 0 1
deve fornecer resultados de diferentes comprimentos.