Étant donné un entier et une fonction de boîte noire, trouvez un point fixe de dans la séquence définie par .x1
f: ℤ → ℤ
f
xk+1 := f(xk)
Détails
On
x
dit qu'une valeur est un point fixe def
ifx = f(x)
.Par exemple, si
f(x) := round(x/pi)
et nous avons un point de départ, nous obtenons alors , puis , et enfin, ce qui signifie que la soumission doit revenir .x1 = 10
x2 = f(x1) = f(10) = 3
x3 = f(x2) = f(3) = 1
x4 = f(x3) = f(1) = 0
x5 = f(x4) = f(0) = 0
0
- Vous pouvez supposer que la séquence générée contient en fait un point fixe.
- Vous pouvez utiliser le type natif pour les entiers à la place de
ℤ
. - Vous pouvez utiliser n'importe quelle langue pour laquelle il existe des valeurs par défaut pour les fonctions de boîte noire entrées dans la méta-publication IO standard . S'il n'y a pas de défaut par défaut pour votre langue, n'hésitez pas à en ajouter un dans le sens de la définition des fonctions de boîte noire , et assurez-vous de lier vos propositions dans cette définition. N'oubliez pas non plus de voter sur eux.
Exemples
f(x) = floor(sqrt(abs(x)))
0 -> 0, all other numbers -> 1
f(x) = c(c(c(x))) where c(x) = x/2 if x is even; 3*x+1 otherwise
all positive numbers should result in 1,2 or 4 (Collatz conjecture)
f(x) = -42
all numbers -> -42
f(x) = 2 - x
1 -> 1
~Nƭ⁻Ç$¿
, qui est quelque chose comme, (pseudo code) for x in [0, -1, 1, -2, 2, -3, 3, -4, 4, ...]: if (x == f(x)): break; print(x);
. Cela peut valoir un autre défi.