Вступ
Я визначив клас перестановок анцій у попередньому виклику . Нагадування, перестановка p чисел від 0 до r-1 є анци, якщо для кожного запису p [i], крім першого, є якийсь попередній запис p [ik], такий, що p [i] == p [ ik] ± 1 . Як цікавий факт, я також зазначив , що при г ^ 1 , існує рівно 2 г-1 неспокійних перестановки довжина г . Це означає, що між перестановками анцій довжиною r та двійковими векторами довжини r-1 існує відповідність один на один.. У цьому виклику ваше завдання - реалізувати таке листування.
Завдання
Ваше завдання - написати програму або функцію, яка займає двійковий вектор довжиною 1 ≤ n ≤ 99 і виводить перестановку мурах довжиною n + 1 . Перестановка може бути як 0 на основі 1 (але це повинно бути узгоджено), і введення та вихід можуть бути у будь-якому розумному форматі. Крім того, різні входи повинні завжди давати різні результати; окрім цього, ви можете повернути будь-яку перестановку мурашок.
Виграє найменший байт.
Приклад
Перестановки мурашок довжиною 4 становлять 0 (на основі 0)
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
і ваша програма повинна повернути один з них для кожного з восьми бітових векторів довжиною 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
і 0 0 1
має давати виходи різної довжини.