ДАЮ 50 БАЛЛОВ! Помогите с информатикой. Язык Паскаль

Ответы на вопрос
Ответ:
function FindDuplicate<T>(Self: Array[,] of T): T; extensionmethod;
begin
var sourceArrayInRow := Self.Cast&<T>();
foreach var item in sourceArrayInRow.Distinct() do begin
if sourceArrayInRow.Count(x -> x = item) = 2 then
begin
Result := item;
break;
end;
end;
end;
begin
var a: array[,] of integer := ( (1,2,3), (4,5,6), (1,7,8) );
a.FindDuplicate().Println; //распечатает 1, т.к 1 - дубликат
end.
Алгоритм мягко скажем не самый оптимальный, но, в целом, поставленную задачу решает. Реализовано на PascalABC.NET 3.7.2
часть программы для поиска и вывода одинаковых элементов
for i:=1 to n do
for j:=1 to k do begin
for c:=i to n do
for d:=j+1 to k do if a[i,j]=a[c,d] then writeln('a=',a[i,j]) end;
где n и k кол-во строк и столбцов
i,j,c,d:integer;
begin
for i:=1 to 3 do
for j:=1 to 2 do readln(a[i,j]);
for i:=1 to 3 do
for j:=1 to 2 do begin
for c:=i to 3 do
for d:=j+1 to 2 do if a[i,j]=a[c,d] then writeln('a=',a[i,j]) end;
end.