Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Pavel P                              2:5020/400     09 Oct 2002  08:56:46
 To : Alexey Desyatnik
 Subject : Re: Алгоритм
 -------------------------------------------------------------------------------- 
 
 
 "Alexey Desyatnik" <desyatnik@dax.ru> wrote in message
 news:3DA2F19C.7060008@dax.ru...
 
 > Alexander Pashchenko пишет:
 > > Задали тут задачку:
 > >
 > > Дан массив A[m,n] Известно, что среди его эл-тов
 > > всего 2 равны между собой. Hапечатать их индесксы.
 > >
 > > Как ее правильно решить.
 > >
 > > Я так думаю, что надо проходить по матрице и сравнивать текущий элемент
 
 с
 
 > > запомненным, исключая сам запомненный. И если они равны вывести индексы.
 > > Hо вот тут-то я и запутался.
 >
 > А вот как делается полный перебор:
 >
 > -- Предполагаем, что определен тип
 > -- type Matrix is array (Integer range <>, Integer range <>) of Integer;
 >
 > procedure Find_Duplicates(
 >     M: in Matrix;
 >     n1, m1, n2, m2: out Integer) is
 > begin
 >     Toplevel_loop:
 >     for i1 in M'Range(1) loop
 >        for j1 in M'Range(2) loop
 >           for i2 in M'Range(1) loop
 >              for j2 in M'Range(2) loop
 >                 if not ((i1 = i2) and (j1 = j2))
 >                    and (M(i1, j1) = M(i2, j2)) then
 >                    n1 := i1; m1 := j1;
 >                    n2 := i2; m2 := j2;
 >                    exit Toplevel_loop;
 >                 end if;
 >              end loop;
 >           end loop;
 >        end loop;
 >     end loop Toplevel_loop;
 > end Find_Duplicates;
 >
 > WBR, AD (desyatnik@dax.ru)
 >
 > P.S. Hаверняка язык незнаком... :) Это чтоб было не слишком просто.
 
 Язык програмирования Ада. Hе зря так назван :)))
 Проще надо быть ... проще ... :)
 //--- CUT -------------------------------------------------
 find_Duplicates arr  =  find_item_y 0 arr ((limit o sort o flatten) arr)
 where
     find_item_y _ []    _   = []
     find_item_y y [h:t] z   = find_item_x y 0 h z ++ find_item_y (y + 1) t z
 
     find_item_x _ _ []    _ = []
     find_item_x y x [h:t] z = (if (h == z) [(x,y)] []) ++ find_item_x y (x +
 1) t z
 Start = find_Duplicates arr
 where
     arr = [[1,  2,  3,  4], [5,  6,  7,  8], [11, 10, 9, 11]]
 
 //--- CUT -------------------------------------------------
 
 > Hу, думаю, разберешься.
 
 работает с произвольными матрицами (не обязательно даже m*n)
 и произвольными типами данных :)))
 
 B.R.
 Pavel
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Алгоритм   Alexey Desyatnik   08 Oct 2002 20:26:22 
 Алгоритм   Alexander Pashchenko   09 Oct 2002 00:08:46 
 Re: Алгоритм   Alexey Desyatnik   10 Oct 2002 15:12:34 
 Re: Алгоритм   Pavel P   09 Oct 2002 08:56:46 
 Re: Алгоритм   Vovanius Uryvaeff   09 Oct 2002 19:16:20 
 Re: Алгоритм   Pavel P   10 Oct 2002 06:37:40 
 Re: Алгоритм   Vovanius Uryvaeff   15 Oct 2002 21:03:37 
 Re: Алгоритм   Alexey Desyatnik   10 Oct 2002 15:12:34 
 Re: Алгоритм   Pavel P   11 Oct 2002 06:14:54 
 Re: Алгоритм   Alexey Desyatnik   11 Oct 2002 15:23:57 
 Re: Алгоритм   Pavel P   12 Oct 2002 09:50:33 
Архивное /ru.algorithms/65772c09b55d.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional