Una funzione semi-esponenziale è quella che, se composta con se stessa, dà una funzione esponenziale. Ad esempio, se f(f(x)) = 2^x, allora fsarebbe una funzione semi-esponenziale. In questa sfida, calcolerai una specifica funzione semi-esponenziale.
In particolare, calcolerai la funzione dagli interi non negativi agli interi non negativi con le seguenti proprietà:
Monotonicamente in aumento: se
x < y, alloraf(x) < f(y)Almeno mezzo esponenziale: per tutti
x,f(f(x)) >= 2^xLessicograficamente più piccolo: tra tutte le funzioni con le proprietà di cui sopra, emette quella che minimizza
f(0), che data quella scelta minimizzaf(1), quindif(2), e così via.
I valori iniziali di questa funzione, per gli ingressi 0, 1, 2, ...sono:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
È possibile generare questa funzione tramite uno dei seguenti metodi, sia come funzione che come programma completo:
Prendi
xcome input, outputf(x).Prendi
xcome input, visualizza i primixvalori dif.Produce all'infinito tutto
f.
Se si desidera acquisire xe produrre f(x), è xnecessario indicizzare zero.
Implementazione di riferimento
Questo è il codice golf - vince il codice più corto in byte. Le scappatoie standard sono vietate, come sempre.