Фон
Дуже кваліфіковані обробники карт здатні використовувати техніку, завдяки якій вони розрізають колоду навпіл, а потім ідеально переплітають карти. Якщо вони розпочнуть з відсортованої колоди і бездоганно виконають цю техніку 52 рази поспіль, колоду відновлять у відсортованому порядку. Ваше завдання - взяти колоду карт на цілий масив і визначити, чи можна її сортувати, використовуючи лише переміщення Фаро.
Визначення
Математично перемикання Фаро - це перестановка на 2 n елементів (для будь-якого додатного цілого числа n ), яка приймає елемент у положенні i (1-індексований) у положення 2 i (mod 2 n +1). Ми також хотіли б обробляти списки непарної довжини, тому в цьому випадку просто додайте один елемент до кінця списку (Джокер, якщо у вас є такий підручник) і Фаро перетасує новий список, як зазначено вище, але ігноруйте доданий елемент-манекен під час перевірки замовлення списку.
Мета
Напишіть програму або функцію, яка займає список цілих чисел і повертає або виводить тритугу, якщо деяка кількість перетасовок Фаро призведе до сортування цього списку у порядку, що не змінюється (навіть якщо це число дорівнює нулю - невеликі списки повинні давати правду). В іншому випадку поверніть або виведіть помилку.
Приклади
[1,1,2,3,5,8,13,21] => True
[5,1,8,1,13,2,21,3] => True
[9,36,5,34,2,10,1] => True
[1,0] => True
[0] => True
[] => True
[3,2,1] => True
[3,1,2] => False
[9,8,7,6,5,4,3,2,1,0] => True
[9,8,7,6,5,4,3,2,0,1] => False
[3,1,4,1,5,9,2,6,9] => False
[-1,-1,-1,-2] => True
Оцінка балів
Це код-гольф, тому найкоротше джерело в байтах виграє.