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, alors- f(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 minimise- f(1), puis- f(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, sortie- f(x).
- Prendre - xen entrée, sortir les premières- xvaleurs de- f.
- 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.