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)