for. T do. B end. for_xyz. T do. B end.Блок B выполняется по разу для каждого элемента массива A, являющегося результатом выполнения блока T. При использовании формы for_xyz., перед каждым выполнением блока B значению текущего элемента присваивается локальное имя xyz, а его индексу имя xyz_index (результаты непредсказуемы, если этим именам присваиваются другие значения внутри блока B). break. заканчивает выполнение управляющей конструкции for., а continue. переходит к выполнению блока B для следующего элемента. |
f0=: 3 : 0 s=. 0 for. i. y do. s=.>:s end. ) (f0 = ])"0 ?5$100 1 1 1 1 1 f1=: 3 : 0 s=.0 for_j. i.y do. if. 2|j do. continue. end. s=.j+s end. ) (f1 = 2&!@>.&.-:)"0 ?5$100 1 1 1 1 1 comb=: 4 : 0 NB. Все выборки длины x из i.y k=. i.>:d=.y-x z=. (d$<i.0 0),<i.1 0 for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end. ; z ) 3 comb 5 0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4 queens=: 3 : 0 NB. Решает "задачу о N ферзях" z=.i.n,*n=.y for. }.z do. b=. -. (i.n) e."1 ,. z +"1 _ ((-i.){:$z) */ _1 0 1 z=. ((+/"1 b)#z),.n|I.,b end. ) queens 5 0 2 4 1 3 0 3 1 4 2 1 3 0 2 4 1 4 2 0 3 2 0 3 1 4 2 4 1 3 0 3 0 2 4 1 3 1 4 2 0 4 1 3 0 2 4 2 0 3 1