Antecedentes
Es bien sabido en matemáticas que los enteros se pueden poner en una correspondencia uno a uno con pares de enteros. Hay muchas formas posibles de hacer esto, y en este desafío, implementará una de ellas y su operación inversa.
La tarea
Su entrada es un número entero positivo n > 0
. Se sabe que existen enteros únicos no negativos, a, b ≥ 0
tales como . Su salida es la "versión invertida" de , el entero positivo .n == 2a * (2*b + 1)
n
2b * (2*a + 1)
Puede suponer que la entrada y la salida se ajustan al tipo de datos entero sin signo estándar de su idioma.
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
Estos se dan en el formato in <-> out
, ya que la función que se implementará es su propio inverso: si le devuelve la salida, debe obtener la entrada original.
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
Tabla de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma. Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
## Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (p. Ej., Porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de los intérpretes por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
## Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes