Una función semi-exponencial es aquella que cuando se compone consigo misma da una función exponencial. Por ejemplo, si f(f(x)) = 2^x
, entonces f
sería una función medio exponencial. En este desafío, calcularás una función semiexponencial específica.
Específicamente, calculará la función desde los enteros no negativos hasta los enteros no negativos con las siguientes propiedades:
Monotónicamente creciente: si
x < y
, entoncesf(x) < f(y)
Al menos medio exponencial: para todos
x
,f(f(x)) >= 2^x
Lexicográficamente más pequeña: Entre todas las funciones con las propiedades anteriores, la salida de la que reduce al mínimo
f(0)
, lo que, dado que reduce al mínimo la elecciónf(1)
, a continuaciónf(2)
, y así sucesivamente.
Los valores iniciales de esta función, para las entradas 0, 1, 2, ...
son:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
Puede generar esta función a través de cualquiera de los siguientes métodos, ya sea como función o como programa completo:
Tomar
x
como entrada, salidaf(x)
.Tomar
x
como entrada, generar los primerosx
valores def
.Infinitamente salida de todo
f
.
Si desea tomar x
y generar f(x)
, x
debe estar indexado a cero.
Este es el código de golf: el código más corto en bytes gana. Las lagunas estándar están prohibidas, como siempre.