З огляду на ціле число і деяку функцію чорного поля знаходять фіксовану точку в послідовності, визначеній .x1
f: ℤ → ℤ
f
xk+1 := f(xk)
Деталі
Значення,
x
як кажуть, є фіксованою точкоюf
ifx = f(x)
.Наприклад, якщо
f(x) := round(x/pi)
і у нас є відправна точка, то ми отримуємо , потім , потім і, нарешті, що означає, що подання має повернутися .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
- Можна припустити, що створена послідовність насправді містить фіксовану точку.
- Ви можете використовувати нативний тип для цілих чисел замість
ℤ
. - Ви можете використовувати будь-яку мову, для якої є стандартні параметри для функцій чорного поля, що вводяться у стандартний метапост IO . Якщо у вашій мові немає такої за замовчуванням, сміливо додайте її у сенсі визначення функцій чорного поля та переконайтеся, що зв’яжіть ваші пропозиції з цим визначенням. Також не забудьте проголосувати за них.
Приклади
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ƭ⁻Ç$¿
, яке є щось на зразок, (псевдокод) for x in [0, -1, 1, -2, 2, -3, 3, -4, 4, ...]: if (x == f(x)): break; print(x);
. Це може стояти ще одного виклику.