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 fseria 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^xLexicograficamente 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
xcomo entrada, saídaf(x).Tome
xcomo entrada, produza os primeirosxvalores def.Infinitamente saída tudo
f.
Se você deseja obter xe enviar f(x), xdeve 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.