Funkcja półwykładnicza to taka, która po złożeniu daje funkcję wykładniczą. Na przykład jeśli f(f(x)) = 2^x, to fbyłaby funkcja półwykładnicza. W tym wyzwaniu obliczysz określoną funkcję półwykładniczą.
W szczególności obliczymy funkcję od liczb całkowitych nieujemnych do liczb całkowitych nieujemnych o następujących właściwościach:
Monotonicznie rośnie: jeśli
x < y, tof(x) < f(y)Co najmniej połowę wykładniczą: Dla wszystkich
x,f(f(x)) >= 2^xLeksykograficznie najmniejszy: Spośród wszystkich funkcji o powyższych właściwościach wypisz tę, która minimalizuje
f(0), co przy takim wyborze minimalizujef(1), a następnief(2)itd.
Początkowe wartości tej funkcji dla danych wejściowych 0, 1, 2, ...to:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
Możesz wyprowadzić tę funkcję za pomocą dowolnej z następujących metod, albo jako funkcja, albo jako pełny program:
Weź
xjako wejście, wyjścief(x).Weź
xjako dane wejściowe, wypisz pierwszexwartościf.Nieskończone wyświetlanie wszystkich
f.
Jeśli chcesz pobierać xi generować f(x), xmusi być zerowany.
To jest golfowy kod - wygrywa najkrótszy kod w bajtach. Standardowe luki są jak zawsze zakazane.