функция маккарти (немного математики)
Oct. 10th, 2006 02:48 amМне раньше не встречалась эта забавная функция.
Определение (рекурсивное):
- g(x) = x-10 если x > 100
- g(x) = g(g(x+11)) если x <= 100
g(x) называется 91-функцией Маккарти. Поведение g(x) для x>100 тривиально, как следует из первой строки определения; поведение для x<=100 на первый взгляд неочевидно.
Доказать: g(x)=91 для x<=101.
Я не предлагаю это в качестве задачи для решения в комментах, потому что доказать это очень легко, но все-таки надо немного подумать. Просто красиво, по-моему, и я хотел этим небольшим кусочком красоты, о котором сегодня случайно узнал, поделиться.
no subject
Date: 2006-10-10 01:00 am (UTC)g(99) = g(g(110)) = g(100) = 91
g(98) = g(g(109)) = g(99) = 91
...
g(90) = g(g(101)) = g(91) = 91
g(89) = g(g(100)) = g(91) = 91
g(88) = g(g(99)) = g(91) = 91
...
Действительно красиво. Я где-то тоже раньше видел определение этой функции - у Дюдни в The Turing Omnibus, что ли?
no subject
Date: 2006-10-10 01:27 am (UTC)Ну правда, зачем нужна эта функция?
Можно было написать:
g(x) = x-10, for x >= 101
g(x) = 91, for x < 101
И это работает для всех х, целых и дробных.
no subject
Date: 2006-10-10 08:15 am (UTC)no subject
Date: 2006-10-10 12:49 pm (UTC)no subject
Date: 2006-10-10 03:37 pm (UTC)no subject
Date: 2006-10-10 04:05 pm (UTC)no subject
Date: 2006-10-10 10:12 pm (UTC)no subject
Date: 2006-10-10 01:00 am (UTC)no subject
Date: 2006-10-10 01:18 am (UTC)Для нецелых x<101 g(x) = 90 + Дробная_часть(x)
no subject
Date: 2006-10-10 01:36 am (UTC)no subject
Date: 2006-10-10 01:41 am (UTC)Ваш юзерпик похож на мои стародавние фотографии :))
no subject
Date: 2006-10-10 01:50 am (UTC)no subject
Date: 2006-10-10 02:52 am (UTC)no subject
Date: 2006-10-10 12:40 pm (UTC)Я - семит, и рожа моя - семитская, таких в ЖЖ полно. Вот например,
На Вас я похож пожалуй только на этой фотографии, но всё равно, приятно познакомится. :)
PS: Насчёт "стародавности" ваших фото, судя по userinfo, Вы меня лет на 5-6 старше, отсилы.
no subject
Date: 2006-10-10 06:03 pm (UTC)no subject
Date: 2006-10-10 01:23 am (UTC)Если х дробное число, это правило не работает:
g(100.67) = 100.67 - 10 = 90.67
g(99.5) = g(g(99.5+11)) = g(g(110.5)) = g(100.5) = 90.5
no subject
Date: 2006-10-10 01:37 am (UTC)Правда, я, признаюсь, про нецелые x вообще не подумал, пока комментарии не посмотрел.
no subject
Date: 2006-10-10 03:30 am (UTC)Например, нерекурсивный факториал на Питоне:
Или на К:
Y:{[t]{x[x]}[{[f]t[{f[f][x]}]}]} / fixed-point operator F:{[f]{:[x=0;1.0;x*f[x-1]]}} / factorial without recursion factorial:Y[F] / factorial is the fixed point of F test:{($x),"!=",($factorial[x]),"\n"} / test function \p 15 / set output precision to 15 digits (we deal with floats) `0:,/test'!18 / just do it!(На Хаскелле, наверное, тоже похоже будет.)
no subject
Date: 2006-10-10 05:46 pm (UTC)no subject
Date: 2006-10-10 05:53 pm (UTC)no subject
Date: 2006-10-10 05:50 pm (UTC)no subject
Date: 2006-10-11 03:15 am (UTC)