Re: Алгоритм
- From
- Pavel P ()
- To
- Vovanius Uryvaeff
- Date
- 2002-10-10T06:37:40Z
- Area
- RU.ALGORITHMS
From: "Pavel P" <vprin@indiainfo.com>
"Vovanius Uryvaeff" <micro-s@vniiofi.ru> wrote in message
[....]
> PP> //--- CUT -------------------------------------------------
> PP> find_Duplicates arr = find_item_y 0 arr ((limit o sort o flatten)
arr)
> PP> where
> PP> find_item_y _ [] _ = []
> PP> find_item_y y [h:t] z = find_item_x y 0 h z ++ find_item_y (y +
1)
> PP> t z
>
> PP> find_item_x _ _ [] _ = []
> PP> find_item_x y x [h:t] z = (if (h == z) [(x,y)] []) ++ find_item_x
y
> PP> (x + 1) t z
>
> PP> Start = find_Duplicates arr
> PP> where
> PP> arr = [[1, 2, 3, 4], [5, 6, 7, 8], [11, 10, 9, 11]]
>
> Компактней надо! И будет совсем просто!
> : 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
> :)
Это намного хуже как по читаемости так и по функциональности, при
том же количестве строк. Твой пример не будет работать для записи
непрямоугольного массива типа
1
2 3
4 5 6
7 8
6
Что вернет твой алгоритм? Ты его вызвать сможешь?
Мой вернет - (2,2) (0,4) :)
B.R.
Pavel
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)