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