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 f
serait 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^x
Le 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
x
comme entrée, sortief(x)
.Prendre
x
en entrée, sortir les premièresx
valeurs def
.Sortie infinie de tout
f
.
Si vous voulez prendre x
et sortir f(x)
, x
doit être indexé zéro.
C'est le code golf - le code le plus court en octets gagne. Les failles standard sont interdites, comme toujours.