23 lines
682 B
ObjectPascal
23 lines
682 B
ObjectPascal
type
|
|
Matrix = array [,] of integer;
|
|
|
|
function kronecker(a, b: Matrix): Matrix;
|
|
begin
|
|
SetLength(result, a.RowCount * b.RowCount, a.ColCount * b.ColCount);
|
|
for var i := 0 to a.RowCount - 1 do
|
|
for var j := 0 to a.ColCount - 1 do
|
|
for var k := 0 to b.RowCount - 1 do
|
|
for var l := 0 to b.ColCount - 1 do
|
|
result[b.RowCount * i + k, b.ColCount * j + l] := a[i, j] * b[k, l];
|
|
end;
|
|
|
|
begin
|
|
var a1: Matrix := ((1, 2), (3, 4));
|
|
var b1: Matrix := ((0, 5), (6, 7));
|
|
kronecker(a1, b1).Println;
|
|
println;
|
|
var a2: Matrix := ((0, 1, 0), (1, 1, 1), (0, 1, 0));
|
|
var b2: Matrix := ((1, 1, 1, 1), (1, 0, 0, 1), (1, 1, 1, 1));
|
|
kronecker(a2, b2).Println;
|
|
end.
|