>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь
$: обозначает самый длинный, содержащий его, глагол.
|
Пример 1:
1:`(] * $:@<:)@.* 5
120
В этом выражении, Сообразно (@.)
выбирает глагол ] * $:@<: пока аргумент
(уменьшаемый на единицу при каждом вызове)
остается ненулевым. При нулевом аргументе, справа
от @. получается ноль, и Сообразно выбирает
постоянную функцию 1: .
Если опустить $:@ ,
вычисление будет выполнено только один раз:
1:`(] * <:)@.* 5
20
Глагол Вызвать Себя приводит к тому, что вся функция
выполняется снова после уменьшения аргумента на единицу.
Пример 2:
В алгоритме быстрой сортировки (quicksort), из сортируемого списка
случайно выбирается “центральный элемент”. Результат тогда
есть отсортированный список элементов, меньших центрального; присоединенный
к списку элементов, равных центральному; присоединенный к отсортированному
списку элементов, больших центрального.
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
] v=: 20 ?.@$ 13
10 3 3 6 11 11 4 0 10 2 5 6 2 0 1 3 12 10 11 5
quicksort v
0 0 1 2 2 3 3 3 4 5 5 6 6 10 10 10 11 11 11 12
>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь