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)