Une fonction semi-exponentielle est une fonction qui, lorsqu'elle est composée d'elle-même, donne une fonction exponentielle. Par exemple, si f(f(x)) = 2^x, alors fserait une fonction semi-exponentielle. Dans ce défi, vous calculerez une fonction semi-exponentielle spécifique.
Plus précisément, vous calculerez la fonction des entiers non négatifs aux entiers non négatifs avec les propriétés suivantes:
Croissance monotone: si
x < y, alorsf(x) < f(y)Au moins demi-exponentielle: pour tous
x,f(f(x)) >= 2^xLe plus petit lexicographiquement: parmi toutes les fonctions possédant les propriétés ci-dessus, sortez celle qui minimise
f(0), ce qui étant donné que ce choix minimisef(1), puisf(2), et ainsi de suite.
Les valeurs initiales de cette fonction, pour les entrées 0, 1, 2, ...sont:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
Vous pouvez générer cette fonction via l'une des méthodes suivantes, soit en tant que fonction, soit en tant que programme complet:
Prenez
xcomme entrée, sortief(x).Prendre
xen entrée, sortir les premièresxvaleurs def.Sortie infinie de tout
f.
Si vous voulez prendre xet sortir f(x), xdoit être indexé zéro.
C'est le code golf - le code le plus court en octets gagne. Les failles standard sont interdites, comme toujours.