Re: Алгоритм

From
Vovanius Uryvaeff (2:5020/175.2)
To
Pavel P
Date
2002-10-09T19:16:20Z
Area
RU.ALGORITHMS
From: "Vovanius Uryvaeff" <micro-s@vniiofi.ru>

Wed Oct 09 2002 08:56, Pavel P wrote to Alexey Desyatnik:
 >> > Дан массив A[m,n] Известно, что среди его эл-тов
 >> > всего 2 равны между собой. Напечатать их индесксы.
 >> procedure Find_Duplicates(
 >> P.S. Наверняка язык незнаком... :) Это чтоб было не слишком просто.
 PP> Язык програмирования Ада. Не зря так назван :)))
 PP> Проще надо быть ... проще ... :)
 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
:)

EMail send to vovanius<yxo>xakep.ru, please.

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)