Uma função semi-exponencial é aquela que, quando composta consigo mesma, fornece uma função exponencial. Por exemplo, se f(f(x)) = 2^x
, então f
seria uma função semi-exponencial. Neste desafio, você calculará uma função semi-exponencial específica.
Especificamente, você calculará a função dos números inteiros não negativos para os números inteiros não negativos com as seguintes propriedades:
Aumento monotônico: se
x < y
, entãof(x) < f(y)
Pelo menos meio exponencial: para todos
x
,f(f(x)) >= 2^x
Lexicograficamente menor: Entre todas as funções com as propriedades acima, produza a que minimiza
f(0)
, que, dada essa escolhaf(1)
, minimiza , entãof(2)
, e assim por diante.
Os valores iniciais desta função, para entradas 0, 1, 2, ...
são:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
Você pode gerar esta função por meio de qualquer um dos seguintes métodos, como uma função ou como um programa completo:
Tome
x
como entrada, saídaf(x)
.Tome
x
como entrada, produza os primeirosx
valores def
.Infinitamente saída tudo
f
.
Se você deseja obter x
e enviar f(x)
, x
deve ser zero indexado.
Este é o código golf - o código mais curto em bytes ganha. As brechas padrão são proibidas, como sempre.