|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vovanius Uryvaeff 2:5020/175.2 15 Oct 2002 21:03:37 To : Pavel P Subject : Re: Алгоритм -------------------------------------------------------------------------------- Thu Oct 10 2002 06:37, Pavel P wrote to Vovanius Uryvaeff: >> Компактней надо! И будет совсем просто! >> : Find.Dups ( a n m - ) LOCAL| A M E | >> DUP TO M * OVER TO A OVER + SWAP OVER TO E >> DO E I CELL+ ?DO >> I @ J @ = IF I A - M /MOD SWAP . . J A - M /MOD SWAP . . CR THEN >> LOOP LOOP ; >> CREATE arr 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 11 , 10 , 9 , 11 , >> arr 4 3 FindDups >> :) PP> Это намного хуже как по читаемости так и по функциональности, при PP> том же количестве строк. Твой пример не будет работать для записи PP> непрямоугольного массива типа PP> 1 PP> 2 3 PP> 4 5 6 PP> 7 8 PP> 6 PP> Что вернет твой алгоритм? Ты его вызвать сможешь? PP> Мой вернет - (2,2) (0,4) :) А мой и не предназначен для для "непрямоугольного массива", он предназначен для матриц. А по читаемости с моей точки зрения он и не хуже совсем. Знать просто синтаксис и основные приемы надо. А если ты свой массив в виде списка списков реализовал, то и я также могу... Впрочем это пример того, как я уложился в то-же количество строк, хотя в языке понятия матриц не было. А если взять либу с матрицами, так я думаю еще короче будет. Вроде: REQUIRE M.FIND lib/maxtrix.f : FindDups ( class.matrix -- ) LOCAL| M | TO M M M.ITEMS * 0 DO I M M@ I 1+ -1 M.FIND DUP 0< IF DROP ELSE M XY . . I M XY . . THEN LOOP ; 1 2 3 4 5 6 7 6 8 3 3 >MATRIX M M FindDups все равно нечитаемо? --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33006b129a69.html, оценка из 5, голосов 10
|