^(^1|\1\1)*1
Спробуйте в Інтернеті!
Введення та виведення не одинаково (тестовий набір включає перетворення з та в десяткові для зручності).
Пояснення
Це зробити досить просто в одинарному режимі. Все, що ми хочемо зробити, - це видалити найбільшу потужність 2 із входу. Ми можемо порівняти потужність 2 з деякими прямими посиланнями. Насправді простіше зіставити значення форми 2 n -1 , тому ми зробимо це і порівняємо один 1 окремо:
^(^1|\1\1)*1
Група 1або 1на початку поєднується з синглом, щоб розпочати щось, або вдвічі збігається з тим, що було зроблено в останній ітерації. Так воно співпадає 1, потім 2, потім 4і так далі. Оскільки вони додаються, у нас завжди не вистачає потужності 2, яку ми фіксуємо 1в кінці.
У зв'язку із зворотним подачею лінії, сірник просто видаляється із вхідних даних.
10очевидно дає0: D