1
1
package com .thealgorithms .maths ;
2
2
3
3
import java .math .BigDecimal ;
4
- import java .util .Arrays ;
5
- import java .util .Objects ;
6
4
import java .util .Optional ;
7
5
import java .util .function .BiFunction ;
8
6
import java .util .stream .IntStream ;
@@ -15,19 +13,19 @@ public final class MatrixUtil {
15
13
private MatrixUtil () {
16
14
}
17
15
18
- public static boolean isValid (final BigDecimal [][] matrix ) {
16
+ private static boolean isValid (final BigDecimal [][] matrix ) {
19
17
return matrix != null && matrix .length > 0 && matrix [0 ].length > 0 ;
20
18
}
21
19
22
- public static boolean hasEqualSizes (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 ) {
20
+ private static boolean hasEqualSizes (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 ) {
23
21
return (isValid (matrix1 ) && isValid (matrix2 ) && matrix1 .length == matrix2 .length && matrix1 [0 ].length == matrix2 [0 ].length );
24
22
}
25
23
26
- public static boolean canMultiply (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 ) {
24
+ private static boolean canMultiply (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 ) {
27
25
return (isValid (matrix1 ) && isValid (matrix2 ) && matrix1 [0 ].length == matrix2 .length );
28
26
}
29
27
30
- public static Optional <BigDecimal [][]> operate (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 , final BiFunction <BigDecimal , BigDecimal , BigDecimal > operation ) {
28
+ private static Optional <BigDecimal [][]> operate (final BigDecimal [][] matrix1 , final BigDecimal [][] matrix2 , final BiFunction <BigDecimal , BigDecimal , BigDecimal > operation ) {
31
29
if (!hasEqualSizes (matrix1 , matrix2 )) {
32
30
return Optional .empty ();
33
31
}
@@ -82,78 +80,4 @@ public static Optional<BigDecimal[][]> multiply(final BigDecimal[][] matrix1, fi
82
80
83
81
return Optional .of (result );
84
82
}
85
-
86
- public static void assertThat (final BigDecimal [][] actual , final BigDecimal [][] expected ) {
87
- if (!Objects .deepEquals (actual , expected )) {
88
- throw new AssertionError (String .format ("expected=%s but was actual=%s" , Arrays .deepToString (expected ), Arrays .deepToString (actual )));
89
- }
90
- }
91
-
92
- public static void main (final String [] args ) {
93
- {
94
- final BigDecimal [][] matrix1 = {
95
- {new BigDecimal (3 ), new BigDecimal (2 )},
96
- {new BigDecimal (0 ), new BigDecimal (1 )},
97
- };
98
-
99
- final BigDecimal [][] matrix2 = {
100
- {new BigDecimal (1 ), new BigDecimal (3 )},
101
- {new BigDecimal (2 ), new BigDecimal (0 )},
102
- };
103
-
104
- final BigDecimal [][] actual = add (matrix1 , matrix2 ).orElseThrow (() -> new AssertionError ("Could not compute matrix!" ));
105
-
106
- final BigDecimal [][] expected = {
107
- {new BigDecimal (4 ), new BigDecimal (5 )},
108
- {new BigDecimal (2 ), new BigDecimal (1 )},
109
- };
110
-
111
- assertThat (actual , expected );
112
- }
113
-
114
- {
115
- final BigDecimal [][] matrix1 = {
116
- {new BigDecimal (1 ), new BigDecimal (4 )},
117
- {new BigDecimal (5 ), new BigDecimal (6 )},
118
- };
119
-
120
- final BigDecimal [][] matrix2 = {
121
- {new BigDecimal (2 ), new BigDecimal (0 )},
122
- {new BigDecimal (-2 ), new BigDecimal (-3 )},
123
- };
124
-
125
- final BigDecimal [][] actual = subtract (matrix1 , matrix2 ).orElseThrow (() -> new AssertionError ("Could not compute matrix!" ));
126
-
127
- final BigDecimal [][] expected = {
128
- {new BigDecimal (-1 ), new BigDecimal (4 )},
129
- {new BigDecimal (7 ), new BigDecimal (9 )},
130
- };
131
-
132
- assertThat (actual , expected );
133
- }
134
-
135
- {
136
- final BigDecimal [][] matrix1 = {
137
- {new BigDecimal (1 ), new BigDecimal (2 ), new BigDecimal (3 )},
138
- {new BigDecimal (4 ), new BigDecimal (5 ), new BigDecimal (6 )},
139
- {new BigDecimal (7 ), new BigDecimal (8 ), new BigDecimal (9 )},
140
- };
141
-
142
- final BigDecimal [][] matrix2 = {
143
- {new BigDecimal (1 ), new BigDecimal (2 )},
144
- {new BigDecimal (3 ), new BigDecimal (4 )},
145
- {new BigDecimal (5 ), new BigDecimal (6 )},
146
- };
147
-
148
- final BigDecimal [][] actual = multiply (matrix1 , matrix2 ).orElseThrow (() -> new AssertionError ("Could not compute matrix!" ));
149
-
150
- final BigDecimal [][] expected = {
151
- {new BigDecimal (22 ), new BigDecimal (28 )},
152
- {new BigDecimal (49 ), new BigDecimal (64 )},
153
- {new BigDecimal (76 ), new BigDecimal (100 )},
154
- };
155
-
156
- assertThat (actual , expected );
157
- }
158
- }
159
83
}
0 commit comments