From 07105e81a0e81f1b646f90db523ffd80e46b0938 Mon Sep 17 00:00:00 2001 From: Emelyanov535 Date: Fri, 18 Oct 2024 17:41:49 +0400 Subject: [PATCH] feature: completed lab 5 --- emelyanov_artem_lab_5/.idea/.gitignore | 8 ++++ .../.idea/emelyanov_artem_lab_5.iml | 11 +++++ .../inspectionProfiles/Project_Default.xml | 8 ++++ emelyanov_artem_lab_5/.idea/misc.xml | 6 +++ emelyanov_artem_lab_5/.idea/modules.xml | 8 ++++ emelyanov_artem_lab_5/.idea/vcs.xml | 6 +++ emelyanov_artem_lab_5/Benchmark.java | 22 +++++++++ emelyanov_artem_lab_5/Main.java | 33 +++++++++++++ emelyanov_artem_lab_5/MatrixGenerator.java | 11 +++++ .../MatrixMultiplication.java | 44 ++++++++++++++++++ emelyanov_artem_lab_5/MatrixPrinter.java | 24 ++++++++++ emelyanov_artem_lab_5/Readme.md | 17 +++++++ ... экрана от 2024-10-18 17-34-36.png | Bin 0 -> 50785 bytes .../emelyanov_artem_lab_5/.idea/.gitignore | 8 ++++ .../.idea/emelyanov_artem_lab_5.iml | 11 +++++ .../inspectionProfiles/Project_Default.xml | 8 ++++ .../emelyanov_artem_lab_5/.idea/misc.xml | 6 +++ .../emelyanov_artem_lab_5/.idea/modules.xml | 8 ++++ .../emelyanov_artem_lab_5/.idea/vcs.xml | 6 +++ .../emelyanov_artem_lab_5/Benchmark.class | Bin 0 -> 1811 bytes .../emelyanov_artem_lab_5/Main.class | Bin 0 -> 2413 bytes .../MatrixGenerator.class | Bin 0 -> 586 bytes .../MatrixMultiplication.class | Bin 0 -> 2247 bytes .../emelyanov_artem_lab_5/MatrixPrinter.class | Bin 0 -> 1207 bytes 24 files changed, 245 insertions(+) create mode 100644 emelyanov_artem_lab_5/.idea/.gitignore create mode 100644 emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml create mode 100644 emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml create mode 100644 emelyanov_artem_lab_5/.idea/misc.xml create mode 100644 emelyanov_artem_lab_5/.idea/modules.xml create mode 100644 emelyanov_artem_lab_5/.idea/vcs.xml create mode 100644 emelyanov_artem_lab_5/Benchmark.java create mode 100644 emelyanov_artem_lab_5/Main.java create mode 100644 emelyanov_artem_lab_5/MatrixGenerator.java create mode 100644 emelyanov_artem_lab_5/MatrixMultiplication.java create mode 100644 emelyanov_artem_lab_5/MatrixPrinter.java create mode 100644 emelyanov_artem_lab_5/Readme.md create mode 100644 emelyanov_artem_lab_5/images/Снимок экрана от 2024-10-18 17-34-36.png create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/.gitignore create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/misc.xml create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/modules.xml create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/vcs.xml create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/Benchmark.class create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/Main.class create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixGenerator.class create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixMultiplication.class create mode 100644 emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixPrinter.class diff --git a/emelyanov_artem_lab_5/.idea/.gitignore b/emelyanov_artem_lab_5/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml b/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml b/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..db0f74e --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/.idea/misc.xml b/emelyanov_artem_lab_5/.idea/misc.xml new file mode 100644 index 0000000..f03c948 --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/.idea/modules.xml b/emelyanov_artem_lab_5/.idea/modules.xml new file mode 100644 index 0000000..4971c76 --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/.idea/vcs.xml b/emelyanov_artem_lab_5/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/emelyanov_artem_lab_5/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/Benchmark.java b/emelyanov_artem_lab_5/Benchmark.java new file mode 100644 index 0000000..688334d --- /dev/null +++ b/emelyanov_artem_lab_5/Benchmark.java @@ -0,0 +1,22 @@ +public class Benchmark { + public static void main(String[] args) { + int[] sizes = {100, 300, 500}; + for (int size : sizes) { + int[][] matrixA = MatrixGenerator.generateMatrix(size); + int[][] matrixB = MatrixGenerator.generateMatrix(size); + + long startSequential = System.nanoTime(); + MatrixMultiplication.multiply(matrixA, matrixB, 1); + long endSequential = System.nanoTime(); + System.out.println("Последовательно (" + size + "x" + size + "): " + (endSequential - startSequential) / 1_000_000 + " ms"); + + for (int numThreads : new int[]{2, 4, 8}) { + long startParallel = System.nanoTime(); + MatrixMultiplication.multiply(matrixA, matrixB, numThreads); + long endParallel = System.nanoTime(); + System.out.println("Параллельно (" + size + "x" + size + ", " + numThreads + " потоков): " + + (endParallel - startParallel) / 1_000_000 + " ms"); + } + } + } +} diff --git a/emelyanov_artem_lab_5/Main.java b/emelyanov_artem_lab_5/Main.java new file mode 100644 index 0000000..ae1aef5 --- /dev/null +++ b/emelyanov_artem_lab_5/Main.java @@ -0,0 +1,33 @@ +public class Main{ + public static void main(String[] args){ + int[] sizes = {100, 300, 500}; + + for (int size : sizes) { + int[][] matrixA = MatrixGenerator.generateMatrix(size); + int[][] matrixB = MatrixGenerator.generateMatrix(size); + + System.out.println("Размер матрицы: " + size + "x" + size); + System.out.println("Матрица A:"); + MatrixPrinter.printMatrix(matrixA, 5); + System.out.println("Матрица B:"); + MatrixPrinter.printMatrix(matrixB, 5); + + long startSequential = System.nanoTime(); + int[][] resultSequential = MatrixMultiplication.multiply(matrixA, matrixB, 1); + long endSequential = System.nanoTime(); + System.out.println("Результат последовательного умножения:"); + MatrixPrinter.printMatrix(resultSequential, 5); + System.out.println("Время последовательного умножения: " + (endSequential - startSequential) / 1_000_000 + " ms"); + + for (int numThreads : new int[]{2, 4, 8}) { + long startParallel = System.nanoTime(); + int[][] resultParallel = MatrixMultiplication.multiply(matrixA, matrixB, numThreads); + long endParallel = System.nanoTime(); + System.out.println("Результат параллельного умножения (" + numThreads + " потоков):"); + MatrixPrinter.printMatrix(resultParallel, 5); + System.out.println("Время параллельного умножения: " + (endParallel - startParallel) / 1_000_000 + " ms"); + } + System.out.println("--------------------------------------------------"); + } + } +} diff --git a/emelyanov_artem_lab_5/MatrixGenerator.java b/emelyanov_artem_lab_5/MatrixGenerator.java new file mode 100644 index 0000000..3baecd7 --- /dev/null +++ b/emelyanov_artem_lab_5/MatrixGenerator.java @@ -0,0 +1,11 @@ +public class MatrixGenerator { + public static int[][] generateMatrix(int size) { + int[][] matrix = new int[size][size]; + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { + matrix[i][j] = (int) (Math.random() * 100); + } + } + return matrix; + } +} diff --git a/emelyanov_artem_lab_5/MatrixMultiplication.java b/emelyanov_artem_lab_5/MatrixMultiplication.java new file mode 100644 index 0000000..3064fa6 --- /dev/null +++ b/emelyanov_artem_lab_5/MatrixMultiplication.java @@ -0,0 +1,44 @@ +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class MatrixMultiplication { + public static int[][] multiply(int[][] matrixA, int[][] matrixB, int numThreads) { + int n = matrixA.length; + int[][] result = new int[n][n]; + + if (numThreads == 1) { + // Последовательное умножение + for (int i = 0; i < n; i++) { + multiplyRow(matrixA, matrixB, result, i); + } + } else { + // Многопоточное умножение + ExecutorService executor = Executors.newFixedThreadPool(numThreads); + + for (int i = 0; i < n; i++) { + final int row = i; + executor.submit(() -> multiplyRow(matrixA, matrixB, result, row)); + } + + executor.shutdown(); + try { + // Ожидаем завершения всех задач + executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + return result; + } + + private static void multiplyRow(int[][] matrixA, int[][] matrixB, int[][] result, int row) { + int n = matrixA.length; + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + result[row][j] += matrixA[row][k] * matrixB[k][j]; + } + } + } +} diff --git a/emelyanov_artem_lab_5/MatrixPrinter.java b/emelyanov_artem_lab_5/MatrixPrinter.java new file mode 100644 index 0000000..488f4fb --- /dev/null +++ b/emelyanov_artem_lab_5/MatrixPrinter.java @@ -0,0 +1,24 @@ +public class MatrixPrinter { + public static void printMatrix(int[][] matrix) { + for (int[] row : matrix) { + for (int element : row) { + System.out.printf("%6d ", element); // Форматируем для лучшей читаемости + } + System.out.println(); + } + } + + public static void printMatrix(int[][] matrix, int maxSize) { + int n = Math.min(matrix.length, maxSize); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + System.out.printf("%6d ", matrix[i][j]); + } + System.out.println(); + } + + if (matrix.length > maxSize) { + System.out.println("..."); // Указываем, что матрица обрезана для отображения + } + } +} diff --git a/emelyanov_artem_lab_5/Readme.md b/emelyanov_artem_lab_5/Readme.md new file mode 100644 index 0000000..4d9707d --- /dev/null +++ b/emelyanov_artem_lab_5/Readme.md @@ -0,0 +1,17 @@ +# Перемножение матриц + +Данная работа посвящена реализации и сравнению последовательного и параллельного алгоритмов умножения квадратных матриц на языке Java. Целью является оценка производительности при использовании разного числа потоков. + +## Функциональность: +- Генерация матриц: Класс MatrixGenerator генерирует матрицы заданного размера с случайными значениями. +- Умножение матриц: Класс MatrixMultiplication реализует метод multiply, который в зависимости от числа потоков выполняет либо последовательное, либо параллельное умножение. +- Последовательное умножение выполняется с использованием одного потока. +- Параллельное умножение использует ExecutorService для распределения строк между потоками. +- Бенчмаркинг: Класс Benchmark измеряет время выполнения для матриц размером 100x100, 300x300, и 500x500 при использовании 1, 2, 4 и 8 потоков. +- Вывод результата: Класс MatrixPrinter позволяет выводить матрицы и результаты умножения в консоль, с возможностью ограничения отображаемых строк. +## Результаты: +В отчете отражены времена выполнения для каждого из подходов, что позволяет оценить, как число потоков влияет на скорость вычислений для матриц разного размера. + +![Снимок экрана от 2024-10-18 17-34-36.png](images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%BE%D1%82%202024-10-18%2017-34-36.png) + +Ссылка на видео: https://drive.google.com/file/d/1UD--N4oE9U9fQpLReXtB7G_-XGoD0iOX/view?usp=sharing \ No newline at end of file diff --git a/emelyanov_artem_lab_5/images/Снимок экрана от 2024-10-18 17-34-36.png b/emelyanov_artem_lab_5/images/Снимок экрана от 2024-10-18 17-34-36.png new file mode 100644 index 0000000000000000000000000000000000000000..57d92f9d41c3769fd49a8accb775a71155339307 GIT binary patch literal 50785 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 g*d+bm^XW&}leVM{>I4aRsp&kxxPY14+~20RR91 literal 0 HcmV?d00001 diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/.gitignore b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/emelyanov_artem_lab_5.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..db0f74e --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/misc.xml b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/misc.xml new file mode 100644 index 0000000..f03c948 --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/modules.xml b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/modules.xml new file mode 100644 index 0000000..4971c76 --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/vcs.xml b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/Benchmark.class b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/Benchmark.class new file mode 100644 index 0000000000000000000000000000000000000000..b9f4aa81c361bb4ba0db7e24c20eec93a1ee98dc GIT binary patch literal 1811 zcmaJ>OK%%h6#i~J_Bhk=qi!Z`3WWeE*lkDx6c^$WnwUNuoF?Fq5Q30yoFSRUo(bb| z)v|)B5)wjmRS7mARY+_@#iMG$2#Ic3ITAmG1uMcgGgj)-2y1*F=brO@=bU@)`Qx8E zEdWI#UAbshJ%QLM%eK4;fk-yDpdpT46`GEH&;?R6 z(sQlL=SB@IcWRHSw6N9F;Z%9Vy^)&=6Ww4HgYZU#)# z8v0p1ReF|V)2JQ_t_bK^((nuDdP#R!$0K-@Xik%1808=| z%Nd<>E!(Sjt|{wv#rPfdhL`38K2R|zgkjI|yV#w4@PE7{#o(a`{` zVt&vxZO@W~OAxAiuQaR=>Axb~HKHBZ!zqENufx+GA3Ra`JXdbcnBKax+K8jf8)$#sZf$?uzT5tx{e8RDzSZ8^ zzRLC8?a$i3v|EE&aarWX2gP8W`WFOFP=9OtqxKdpe4B2)VXC!%CEQg4-SNRXmZ=!# zG`xW~RaE>NpBEUq|MD#RlCxoshP4&e;aOSb^J0~M(Oo(n#nAop(q65ZjiIvRY&16u z4_{@MfLz{dqJVQ@;eYk)6CyA<6o{+cZxpBZjVMDmKE9Jz^ah7DyTA2p)4 zp^nGGNxhB4$@oBQKvizzz@op?ZehTnR=?ICH~Vm;eg}^OKjNu?AxZ+3@ag#MxIUn_ z@`*@3X(WxrO-u~vMsg&d@!UGQ#iis2OnWR zfGMPdwE+b==4y=TILS~?G59mkFwHK$f&@Ngx4e!NzNG$FY|!LJi#ET*2om=`b*~fQ zMdSmG!$ip=L%R{YgqLYKhR-pMLV*7X@e5EnUd1cai<8I01Xmg{Zs1i~_tPGgd@ zfh~Gkh)N6#hCpyR(_>W`B|mE&?tJvVo8wmWgfKyS$FKRK;x7@HvAbb&*odl#`5)OL`+3If&`L}_!&A|af}k- z?Rk1j6+8x}-Ep*RTF#JDHuO?=l4P4BNTEewLrI@CdTnb$caEFRG)EOjx15SVOE#Zx z_1Ak5aItAkb!&J6X%!nIcoLfgnrb)@Q0Jt(qD2PT^$@KiVQdjdxL>*p)eF`0?qc<0 zcOi2yry+x_DxQwu8Eg}X`cZq-4Q8XkL%p90HOoZgCDya+v3iKrh-?I{*eMXUbjuz# zONN*BehqEdt)e}G4(t(V_7Ml>i;g*0G?@w0Ci8H~SDY1yNLQXWHeu`)$h%*;*WH`d zkK9|;PpcPX92xg}ce(nZdy5m_xy$ZVspOaj?j6e4+~o}IZ+pTGPTXPKmvTXF1`z8x zkc2>|+?6hwwf-8ZPqMmRk`_5>QEPLO2%s~Jmj(9j{?9)ZuLvjuy2;>`UVD<+iWN-D zI5J-vH_F5Mc#)c9!Jg2IBYN4C@~TpCrcG8%s2~@2b9KoBX~~Y&+I(&-Ypm=X)ysOZ zXcPrRKTExARG9FG$^diCJvXe$hdRxgFAYz#h$rbza9S;SN9N#zQ4dLb=tIV-dBbu{ zo%nGdd#x%;+_kb&G0!nPMK4bgx~T?nfuOYEY@H+)9dh)E*#Ujd%YlkxDvqmQAli^U zU!E}fOqs5FnUQvRM#!Saww;Po*5?KcXWE{ugz=t0hLyD7-eg@|ub$7advGMGpX4&) zj0j^~pwIn`=j6J3yL#z=)>%emO7u7>FkHKK7wBMt)hp}w@im*t3ZKLUmi3Y>_10V% z?+fgIl;yuiWT0dh3t?J=i5V5Mvdp=2+aBJarghq$H9Guj$iK1r^a);*JfN4?-ZHC( zev%LC)@0GBY%AFI?EGB!`g&ZWd1T@6**T+z`P#zp@AU4qCv_E~mxVoKItI@|ByaIL z?=9+;icwKv3v6E(Q!T10P6=#zys12LUR>CU{k$CHua4IUA0M^{D0Q$G?1MXRLVW8@ zA7m@1!G90ih;P8>>s3nicny8j93avO0=3XA5xT972I7;0qe?=w4UPsA;*Y_?u7S4Y z{eey;rEI=}-`i43duK2eT!fkn`JH+d(G*onXaa6v1I6TK_UTY~5l=~JyOdNZEn-Jk zI2}r>$|82Z9A6xfm1QtXz{^_L0j) zg;HE5G60##8Eo{%DWP#1Mc!wb&bG~6nTu`I7{L!N{67VU^9X$Mpc~PCs;@;1ZZ5N5h}*`DgNIx`4fXHOhcV-<)!Q- h+d90Bci3-)LTUo6M$umM`6IUVa3pfkU&>ep2~bpx(E5Ka@DB> z0-<^3s$fyT%;t7&glUvY>rq6}ZX*^$2jT+pzrGC_9J0%o?!H%VcCCb#_K3!1qeq~V z6}~!Kb6m%lf#(ZY%ig}jL{YiU=1INm_&c&(W2C3(Rb*{f`bzu1K`S^^4T0|Bzd3WH zanKs-v{IyzUC)uNfT(h7tq9jp=NulYH+cwjYzMM(v>}gw0ixU9iC=M6m8OvRhccs2 ziZOKa;`A~g^wm-J(#ul|>b9wSh`VMwL8;T=PEy8N1?WRRy$A*{$cS#fVVy-?NTr@( z8%1*=ow~w=xtO8qn@-PW9uP^O^XPKx!W7rvZx;sT>+~&qOlX{8-mtd$poo)Jk`u?N zv-D?(rSYd|cM&y(Ay!5(i8L*Jm;y4i^eg2!DNI%)^m<`^B4Wc9AN(Qj=zr%xfl;Om GjQs%X5^C@O literal 0 HcmV?d00001 diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixMultiplication.class b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixMultiplication.class new file mode 100644 index 0000000000000000000000000000000000000000..adc08828003fd4ef1a757f2e4d2ce2696d16db47 GIT binary patch literal 2247 zcmbVNTXz#x6#h;#moy#dg$4;UrP5NG6q|CfVjHSZS_!5tkU$j>nI;3BHkpZ&nO>fJ z;fJ_*;Z=Q5;DI+^T(0Hv7w9kW2e1VE&Lk~GBf6ZG%-QFhefH(s-#+u>iziP3%-~K8 zZHVYl45-iqx>n6~GgC30dzr=MRjcF+Xj$8_{b_;7Nb0(dD21Chb1}rwp~En+2YUs2 z=S|D@^2KJ#>pg;5+_;w{z za-CA(d6wg6W;d-;;JaR3pvSQ`=Il+YTwL)ivwYcgD*~yJTq^&@lLgCLw@cPk5A)q` z;4K_r0$#x226l(jFcKzyHELCK}7#Kr_)G#+p+b>#P)pnZY9UQszF9uRKbez~O zZisHq@h#5_YQ9yT-7Hx(Nt77Iamv7HnRRE)vmL+So29j)XO=7hWyURY=*-)WwGdR7 zEw3ocLq_D?l3BTKdbXT57ZrcSCR_IBTQPEqsBTkIz-SU6mm(A~<^OnEjmg`;6IyGF8 zZGF|i$JonRF@|ek%P$%D1fL2Vc|}3nS$Eg0Og;>OCd|8LiEX+iTYmTKr`-L;@LwF~J2ZxZL;?v>XL7Po5F|J!W1eDm36dxlhPx}7mAm4fYCthSMJ z9Lt-jnDx3<*KteW=-)7Dm7b2H{VdO{7=^e2b|kCAA@(tVBUza`Yi zI84&1y%_oy!;f)X!O}y-Cbfk29Zn{cuNlZ~RN%7NBVpik=w?7VXHj%8=Prhy;P>PR z$5HN`;Fn<%y_lx2E0mXTfEEtXMnA3e;S1i&>qJW?ewXL>Q7?gd&z%0(;Jm-XiA3+I=lrB(`P;PPmto$z0`W&SQqjT^PcNJXZ{$c1ZuutgF z#WVD_Jx5f>L5fF~bc{cvgP8m%HgLx;oa;Q4O+TGbLagJ;1B{2DN@?JD@?>1SHJ0X} zjg7`N&c;^mEQYB58kXW`S?dO5{h_U+3}l!djuDU%(&88^Jj_auhEQCjPB(^-W9ZWN zXCxj!a_6tKjE5nm8#+7gqdV@SJMN=R_Yvf2uMP89;3x@QVDgK&%>NCp#JF-3pW$;P F{sbF+6;}WN literal 0 HcmV?d00001 diff --git a/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixPrinter.class b/emelyanov_artem_lab_5/out/production/emelyanov_artem_lab_5/MatrixPrinter.class new file mode 100644 index 0000000000000000000000000000000000000000..c93b166796d5c801a629526c252ce274d147e529 GIT binary patch literal 1207 zcmZuw(M}UV6g|`3?X+bn7FiXw3JBU3EecYUA}S`vnj&aTjp1p56&KsBDT|`ddY?W!0H^CU7iONH_TcVXcgO z499R>;)IEAoD?{ENJXlDsp^wtBDIf#dR%WQKerER+Re8L{U= zxk9>3M^445IvyXJC{Sj-_F5n`$1q$CWDsK}Rh4{u;l;H5GN>alCNav>iYDL@%Vcng zRPD8r`lNA2+&fJPu8V)zx$P2n>e+uG2T*Av_Q%k$RJKYXHf&U zINv2!U{kjGVwGLO=b!x-mlytB}EASJE~vCHHLqhKL1&cC4J zpGfWUqZ5RgudL=Yn9}GJTbT5*Xm#2(3mb`356R qiENox(IhdxEx3=Hj6y*pI$``lREXb@;urdVp{<=cw|Fvy+kXLWN$eB= literal 0 HcmV?d00001