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 f
był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^x
Leksykograficznie 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ź
x
jako wejście, wyjścief(x)
.Weź
x
jako dane wejściowe, wypisz pierwszex
wartościf
.Nieskończone wyświetlanie wszystkich
f
.
Jeśli chcesz pobierać x
i generować f(x)
, x
musi być zerowany.
To jest golfowy kod - wygrywa najkrótszy kod w bajtach. Standardowe luki są jak zawsze zakazane.