Фон
В математике хорошо известно, что целые числа могут быть приведены в однозначное соответствие с парами целых чисел. Есть много возможных способов сделать это, и в этой задаче вы реализуете один из них и его обратную операцию.
Задание
Ваш вход является положительным целым числом n > 0
. Известно, что существуют такие уникальные неотрицательные целые числа a, b ≥ 0
, что . Ваш вывод - «перевернутая версия» , положительное целое число .n == 2a * (2*b + 1)
n
2b * (2*a + 1)
Вы можете предположить, что ввод и вывод вписываются в стандартный тип данных целого числа без знака вашего языка.
Правила и оценки
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Контрольные примеры
Они даны в формате in <-> out
, так как функция, которая должна быть реализована, является собственной обратной: если вы передаете выходные данные обратно, вы должны получить исходный ввод.
1 <-> 1
2 <-> 3
4 <-> 5
6 <-> 6
7 <-> 8
9 <-> 16
10 <-> 12
11 <-> 32
13 <-> 64
14 <-> 24
15 <-> 128
17 <-> 256
18 <-> 48
19 <-> 512
20 <-> 20
28 <-> 40
30 <-> 384
56 <-> 56
88 <-> 224
89 <-> 17592186044416
Leaderboard
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам. Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в свой заголовок несколько чисел (например, потому что ваш счет равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться в фрагменте списка лидеров:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes