binary_matrix 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,88 @@
1
+ describe BinaryMatrix do
2
+ logger = Logger.new('strict_log_one.txt')
3
+ logger.formatter = proc do |severity, datetime, progname, msg|
4
+ "Binary Matrix: #{msg}\n"
5
+ end
6
+ logger.info "\nThis is a info logging file -- Strict - One\n"
7
+
8
+ before :each do
9
+ @binary_matrix = BinaryMatrix.new(14)
10
+ end
11
+
12
+ def part_two
13
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
14
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2], @binary_matrix.bm, @binary_matrix.bmi.mi)
15
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
16
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
17
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
18
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
19
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
20
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4], @binary_matrix.bm, @binary_matrix.bmi.mi)
21
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
22
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2], @binary_matrix.bm, @binary_matrix.bmi.mi)
23
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
24
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1], @binary_matrix.bm, @binary_matrix.bmi.mi)
25
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
26
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
27
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
28
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
29
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5], @binary_matrix.bm, @binary_matrix.bmi.mi)
30
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
31
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
32
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
33
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
34
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
35
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
36
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
37
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6], @binary_matrix.bm, @binary_matrix.bmi.mi)
38
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
39
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
40
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
41
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
42
+ @binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm)
43
+ @binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
44
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
45
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4], @binary_matrix.bm, @binary_matrix.bmi.mi)
46
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
47
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2], @binary_matrix.bm, @binary_matrix.bmi.mi)
48
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
49
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1], @binary_matrix.bm, @binary_matrix.bmi.mi)
50
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
51
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5], @binary_matrix.bm, @binary_matrix.bmi.mi)
52
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
53
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6], @binary_matrix.bm, @binary_matrix.bmi.mi)
54
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
55
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
56
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
57
+ @binary_matrix.enter_cell_content([3], [8], 1, @binary_matrix.bm)
58
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
59
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [8], @binary_matrix.bmi.mi)
60
+ @binary_matrix.enter_cell_content([6], [8], 1, @binary_matrix.bm)
61
+ end
62
+
63
+ describe "#swap_row_column" do
64
+ it "will swap selected rows and columns" do
65
+ part_two
66
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
67
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
68
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
69
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
70
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
71
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
72
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
73
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
74
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
75
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9], @binary_matrix.bm, @binary_matrix.bmi.mi)
76
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
77
+ puts "\nSwap rows and columns 3 and 9"
78
+ puts @binary_matrix.bm.to_a.map(&:inspect)
79
+ puts "Matrix Index .. \n"
80
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
81
+ logger.info "\nSwap rows and columns 3 and 9"
82
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
83
+ logger.info "\n\nMatrix Index"
84
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,2021 @@
1
+ require File.expand_path("../../lib/binary_matrix.rb", __FILE__)
2
+ require "#{File.dirname(__FILE__)}/spec_helper"
3
+ require 'logger'
4
+
5
+ describe BinaryMatrix do
6
+ logger = Logger.new('strict_log_two.txt')
7
+ logger.formatter = proc do |severity, datetime, progname, msg|
8
+ "Binary Matrix: #{msg}\n"
9
+ end
10
+ logger.info "\nThis is a info logging file\n"
11
+ before :each do
12
+ @binary_matrix = BinaryMatrix.new(14)
13
+ end
14
+ describe "#new" do
15
+ it "takes one parameter and returns a BinaryMatrix object" do
16
+ expect(@binary_matrix).to be_a_kind_of(BinaryMatrix)
17
+ end
18
+
19
+ it "has a size of tweleve (14)" do
20
+ expect(@binary_matrix.size).to be == 14
21
+ end
22
+
23
+ it "has tweleve (14) rows in the matrix" do
24
+ expect(@binary_matrix.number_of_rows).to be == 14
25
+ end
26
+
27
+ it "has tweleve (14) columns in the matrix" do
28
+ expect(@binary_matrix.number_of_columns).to be == 14
29
+ end
30
+
31
+ it "has a two dimensional tweleve (14) by tweleve (14) array" do
32
+ expect(@binary_matrix.bm).to be_a_kind_of(Array)
33
+ end
34
+
35
+ it "bm array is filled with zeros" do
36
+ expect(@binary_matrix.add(@binary_matrix.bm)).to be == 0
37
+ end
38
+
39
+ it "has an matrix index" do
40
+ expect(@binary_matrix.bmi).to be_a_kind_of(MatrixIndex)
41
+ end
42
+ end
43
+
44
+ describe "#add" do
45
+ it "will add up all the values in a matrix" do
46
+ temp_matrix = Array.new(4) { Array.new(4, 1)}
47
+ expect(@binary_matrix.add(temp_matrix)).to be == 16
48
+ end
49
+ end
50
+
51
+ describe "#enter_cell_content" do
52
+
53
+ it "will enter a one (1) into a matrix cell" do
54
+ @binary_matrix.enter_cell_content([2], [5])
55
+ expect(@binary_matrix.add).to be == 1
56
+ end
57
+
58
+ it "will enter a zero into the cell if the index numbers are the same" do
59
+ @binary_matrix.enter_cell_content([2], [2], @binary_matrix.bm, @binary_matrix.bmi.mi)
60
+ expect(@binary_matrix.add).to be == 0
61
+ end
62
+
63
+ end
64
+
65
+ #describe "#transpose" do
66
+ # it "will transpose the matrix contents" do
67
+ # temp_matrix = Array.new(5) { Array.new(5, 0) }
68
+ # @binary_matrix.enter_cell_content(1, 2)
69
+ # @binary_matrix.enter_cell_content(3, 1)
70
+ # t_matrix = @binary_matrix.transpose(@binary_matrix.bm)
71
+ # expect(@binary_matrix.transpose(@binary_matrix.bm)).to eq t_matrix
72
+ # end
73
+ # end
74
+
75
+ describe "#boolean_add" do
76
+ it "will add cell contents from two same size matrices" do
77
+ temp_matrix_1 = Array.new(10) { Array.new(10, 1) }
78
+ temp_matrix_2 = Array.new(10) { Array.new(10, 2) }
79
+ temp_matrix_out = Array.new(10) { Array.new(10, 0) }
80
+ temp_matrix_answer = Array.new(10) { Array.new(10, 1) }
81
+ temp_matrix_out = @binary_matrix.boolean_add(temp_matrix_1, temp_matrix_2)
82
+ expect(temp_matrix_out).to eq temp_matrix_answer
83
+ end
84
+ end
85
+
86
+ describe "#boolean_multiply" do
87
+ it "will multipley two square matrices together and return a Boolean matrix" do
88
+ temp_matrix_1 = Array.new(10) { Array.new(10, 0) }
89
+ temp_matrix_2 = Array.new(10) { Array.new(10, 0) }
90
+ temp_matrix_a1 = Array.new(10) { Array.new(10, 0) }
91
+ temp_matrix_a2 = @binary_matrix.id_matrix(10)
92
+ temp_matrix_answer = @binary_matrix.boolean_add(temp_matrix_a1, temp_matrix_a2)
93
+ temp_matrix_out = @binary_matrix.boolean_multiply(temp_matrix_1, temp_matrix_2)
94
+ expect(temp_matrix_out).to eq temp_matrix_answer
95
+ end
96
+ end
97
+
98
+ describe "#expand_end" do
99
+ it "will expand the matrix by one row and column at the end" do
100
+ temp_matrix_answer = Array.new(15) { Array.new(15, 0) }
101
+ expect(@binary_matrix.expand_end(@binary_matrix.bm)).to eq temp_matrix_answer
102
+ end
103
+ end
104
+
105
+ describe "#expand" do
106
+ it "will expand the matrix inserting a row and column at the given index " do
107
+ temp_matrix_answer = Array.new(15) { Array.new(15, 0) }
108
+ expect(@binary_matrix.expand(@binary_matrix.bm, 4)).to eq temp_matrix_answer
109
+ end
110
+ end
111
+
112
+ describe "#compress" do
113
+ it "will compress two rows and columns into one" do
114
+ temp_matrix_answer = Array.new(13) { Array.new(13, 0) }
115
+ expect(@binary_matrix.compress([2], [6])).to eq temp_matrix_answer
116
+ end
117
+ end
118
+
119
+ describe "#square_print_with_comment" do
120
+ it "will print the matrix in a square format with a commnet" do
121
+ expect { print "test one" }.to output("test one").to_stdout
122
+ end
123
+ it "will print the matrix in a square format with a commnet" do
124
+ expect { @binary_matrix.square_print_with_comment("testOne", \
125
+ @binary_matrix.bm)}.to output(" \ntestOne
126
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
127
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
128
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
129
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
130
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
131
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
132
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
133
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
134
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
135
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
136
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
137
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
138
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
139
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
140
+ \n").to_stdout
141
+ end
142
+ end
143
+ describe "#write_log" do
144
+ it "will log the matrix in a square format with a comment to a local file" do
145
+ puts "\n Binary Matrix .. Strict Ordering\n"
146
+ puts @binary_matrix.bm.to_a.map(&:inspect)
147
+ puts "Matrix Index .. \n"
148
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
149
+ logger.info "\n Enter base binary matrix.. Strict ordering\n"
150
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
151
+ logger.info "\n\nMatrix Index"
152
+ "#{@binary_matrix.bmi.mi.to_a{ logger.info inspect } }"
153
+ end
154
+ end
155
+
156
+ describe "#enter_cell_content" do
157
+ it "will add a one to the matrix cell" do
158
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
159
+ puts "Enter 2 is north of 1\n"
160
+ puts @binary_matrix.bm.to_a.map(&:inspect)
161
+ puts "Matrix Index .. \n"
162
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
163
+ logger.info "\nEnter 2 is north of 1\n"
164
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
165
+ logger.info "\n\nMatrix Index"
166
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
167
+ end
168
+ end
169
+
170
+ describe "#swap_row_column" do
171
+ it "will swap rows and columns to create proper alignment" do
172
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
173
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
174
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
175
+ puts "Swap rows and columns 1 and 2\n"
176
+ puts @binary_matrix.bm.to_a.map(&:inspect)
177
+ puts "Matrix Index .. \n"
178
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
179
+ logger.info "\nSwap rows and columns 1 and 2\n"
180
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
181
+ logger.info "\n\nMatrix Index"
182
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
183
+ end
184
+ end
185
+
186
+ describe "#enter_cell_content" do
187
+ it "will add a one to the matrix cell" do
188
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
189
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
190
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
191
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
192
+ puts "Enter 1 is north of 3\n"
193
+ puts @binary_matrix.bm.to_a.map(&:inspect)
194
+ puts "Matrix Index .. \n"
195
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
196
+ logger.info "\nEnter 1 is north of 3\n"
197
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
198
+ logger.info "\n\nMatrix Index"
199
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
200
+ end
201
+ end
202
+
203
+ describe "#reachability_matrix" do
204
+ it "will create reachability matrix and infer information" do
205
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
206
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
207
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
208
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
209
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
210
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
211
+ puts "Infer information\n"
212
+ puts @binary_matrix.bm.to_a.map(&:inspect)
213
+ puts "Matrix Index .. \n"
214
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
215
+ logger.info "\nInfer information\n"
216
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
217
+ logger.info "\n\nMatrix Index"
218
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
219
+ end
220
+ end
221
+
222
+
223
+ describe "#enter_cell_content" do
224
+ it "will enter a 1 into the specific cell" do
225
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
226
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
227
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
228
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
229
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
230
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
231
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
232
+ puts "Enter 4 is north of 2\n"
233
+ puts @binary_matrix.bm.to_a.map(&:inspect)
234
+ puts "Matrix Index .. \n"
235
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
236
+ logger.info "\nEnter 4 is north of 2\n"
237
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
238
+ logger.info "\n\nMatrix Index"
239
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
240
+ end
241
+ end
242
+
243
+ describe "#swap_row_column" do
244
+ it "will swap selected row and column" do
245
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
246
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
247
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
248
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
249
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
250
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
251
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
252
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
253
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
254
+ puts "Swap row and column 2 and 4\n"
255
+ puts @binary_matrix.bm.to_a.map(&:inspect)
256
+ puts "Matrix Index .. \n"
257
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
258
+ logger.info "\nSwap row and column 2 and 4\n"
259
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
260
+ logger.info "\n\nMatrix Index"
261
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
262
+ end
263
+ end
264
+
265
+ describe "#swap_row_column" do
266
+ it "will swap selected row and column" do
267
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
268
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
269
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
270
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
271
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
272
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
273
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
274
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
275
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
276
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
277
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
278
+ puts "Swap row and column 1 and 2\n"
279
+ puts @binary_matrix.bm.to_a.map(&:inspect)
280
+ puts "Matrix Index .. \n"
281
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
282
+ logger.info "\nSwap row and column 1 and 2\n"
283
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
284
+ logger.info "\n\nMatrix Index"
285
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
286
+ end
287
+ end
288
+
289
+ describe "#swap_row_column" do
290
+ it "will swap selected row and column" do
291
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
292
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
293
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
294
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
295
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
296
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
297
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
298
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
299
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
300
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
301
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
302
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
303
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
304
+ puts "Swap row and column 3 and 1\n"
305
+ puts @binary_matrix.bm.to_a.map(&:inspect)
306
+ puts "Matrix Index .. \n"
307
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
308
+ logger.info "\nSwap row and column 3 and 1\n"
309
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
310
+ logger.info "\n\nMatrix Index"
311
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
312
+ end
313
+ end
314
+
315
+ describe "#reachability_matrix" do
316
+ it "will create reachability_matrix and infer information" do
317
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
318
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
319
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
320
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
321
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
322
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
323
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
324
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
325
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
326
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
327
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
328
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
329
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
330
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
331
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
332
+ puts "Infer information\n"
333
+ puts @binary_matrix.bm.to_a.map(&:inspect)
334
+ puts "Matrix Index .. \n"
335
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
336
+ logger.info "\nInfer information\n"
337
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
338
+ logger.info "\n\nMatrix Index"
339
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
340
+ end
341
+ end
342
+
343
+
344
+ describe "#enter_cell_content" do
345
+ it "will enter a 1 into the proper matrix cell" do
346
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
347
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
348
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
349
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
350
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
351
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
352
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
353
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
354
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
355
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
356
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
357
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
358
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
359
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
360
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
361
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
362
+ puts "Enter 5 no 3\n"
363
+ puts @binary_matrix.bm.to_a.map(&:inspect)
364
+ puts "Matrix Index .. \n"
365
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
366
+ logger.info "\nEnter 5 no 3\n"
367
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
368
+ logger.info "\n\nMatrix Index"
369
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
370
+ end
371
+ end
372
+
373
+ describe "#swap_row_column" do
374
+ it "will swap the selected rows and columns" do
375
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
376
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
377
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
378
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
379
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
380
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
381
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
382
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
383
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
384
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
385
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
386
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
387
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
388
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
389
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
390
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
391
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
392
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
393
+
394
+ puts "Swap row column 3 and 5\n"
395
+ puts @binary_matrix.bm.to_a.map(&:inspect)
396
+ puts "Matrix Index .. \n"
397
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
398
+ logger.info "\nSwap row column 3 and 5\n"
399
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
400
+ logger.info "\n\nMatrix Index"
401
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
402
+ end
403
+ end
404
+
405
+
406
+ describe "#reachability_matrix" do
407
+ it "will create reachability matrix and infer information" do
408
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
409
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
410
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
411
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
412
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
413
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
414
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
415
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
416
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
417
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
418
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
419
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
420
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
421
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
422
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
423
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
424
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
425
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
426
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
427
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
428
+ puts "Infer information\n"
429
+ puts @binary_matrix.bm.to_a.map(&:inspect)
430
+ puts "Matrix Index .. \n"
431
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
432
+ logger.info "\nInfer information"
433
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
434
+ logger.info "\n\nMatrix Index"
435
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
436
+ end
437
+ end
438
+
439
+ describe "#enter_cell_content" do
440
+ it "will enter a 1 into the selected cell" do
441
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
442
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
443
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
444
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
445
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
446
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
447
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
448
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
449
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
450
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
451
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
452
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
453
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
454
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
455
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
456
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
457
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
458
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
459
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
460
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
461
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
462
+ puts "Enter 1 is north of 5\n"
463
+ puts @binary_matrix.bm.to_a.map(&:inspect)
464
+ puts "Matrix Index .. \n"
465
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
466
+ logger.info "\nEnter 1 is north of 5"
467
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
468
+ logger.info "\n\nMatrix Index"
469
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
470
+ end
471
+ end
472
+
473
+ describe "#reachability_matrix" do
474
+ it "will calculate reachability_matrix and infer information" do
475
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
476
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
477
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
478
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
479
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
480
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
481
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
482
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
483
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
484
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
485
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
486
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
487
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
488
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
489
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
490
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
491
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
492
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
493
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
494
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
495
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
496
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
497
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
498
+ puts "Infer information\n"
499
+ puts @binary_matrix.bm.to_a.map(&:inspect)
500
+ puts "Matrix Index .. \n"
501
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
502
+ logger.info "\nInfer information"
503
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
504
+ logger.info "\n\nMatrix Index"
505
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
506
+ end
507
+ end
508
+
509
+ describe "#enter_cell_content" do
510
+ it "will enter a 1 into the proper cell" do
511
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
512
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
513
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
514
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
515
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
516
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
517
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
518
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
519
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
520
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
521
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
522
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
523
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
524
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
525
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
526
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
527
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
528
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
529
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
530
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
531
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
532
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
533
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
534
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
535
+ puts "Enter 6 is north of 3\n"
536
+ puts @binary_matrix.bm.to_a.map(&:inspect)
537
+ puts "Matrix Index .. \n"
538
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
539
+ logger.info "\nEnter 6 is north of 3"
540
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
541
+ logger.info "\n\nMatrix Index"
542
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
543
+ end
544
+ end
545
+
546
+ describe "#swap_row_column" do
547
+ it "will swap the selected rows and columns" do
548
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
549
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
550
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
551
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
552
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
553
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
554
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
555
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
556
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
557
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
558
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
559
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
560
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
561
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
562
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
563
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
564
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
565
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
566
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
567
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
568
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
569
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
570
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
571
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
572
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
573
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
574
+ puts "Swap row and column 3 and 6\n"
575
+ puts @binary_matrix.bm.to_a.map(&:inspect)
576
+ puts "Matrix Index .. \n"
577
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
578
+ logger.info "\nSwap row and column 3 an d6"
579
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
580
+ logger.info "\n\nMatrix Index"
581
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
582
+ end
583
+ end
584
+
585
+ describe "#enter_cell_content" do
586
+ it "will enter a 1 in the selected cell" do
587
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
588
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
589
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
590
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
591
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
592
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
593
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
594
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
595
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
596
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
597
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
598
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
599
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
600
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
601
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
602
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
603
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
604
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
605
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
606
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
607
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
608
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
609
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
610
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
611
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
612
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
613
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
614
+ puts "Enter 5 is north of 6\n"
615
+ puts @binary_matrix.bm.to_a.map(&:inspect)
616
+ puts "Matrix Index .. \n"
617
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
618
+ logger.info "\nEnter 5 is north of 6"
619
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
620
+ logger.info "\n\nMatrix Index"
621
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
622
+ end
623
+ end
624
+
625
+ describe "#reachability_matrix" do
626
+ it "will calculate reachability matrix and infer information" do
627
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
628
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
629
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
630
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
631
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
632
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
633
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
634
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
635
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
636
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
637
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
638
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
639
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
640
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
641
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
642
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
643
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
644
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
645
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
646
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
647
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
648
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
649
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
650
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
651
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
652
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
653
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
654
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
655
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
656
+ puts "Infer information\n"
657
+ puts @binary_matrix.bm.to_a.map(&:inspect)
658
+ puts "Matrix Index .. \n"
659
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
660
+ logger.info "\nInfer information"
661
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
662
+ logger.info "\n\nMatrix Index"
663
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
664
+ end
665
+ end
666
+
667
+ describe "#enter_cell_content" do
668
+ it "will enter a 1 in the selecte matrix cell" do
669
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
670
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
671
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
672
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
673
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
674
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
675
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
676
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
677
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
678
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
679
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
680
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
681
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
682
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
683
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
684
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
685
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
686
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
687
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
688
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
689
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
690
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
691
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
692
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
693
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
694
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
695
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
696
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
697
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
698
+ @binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm)
699
+ puts "\nEnter 7 is north of 4"
700
+ puts @binary_matrix.bm.to_a.map(&:inspect)
701
+ puts "Matrix Index .. \n"
702
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
703
+ logger.info "\nEnter 7 is north of 4"
704
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
705
+ logger.info "\n\nMatrix Index"
706
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
707
+ end
708
+ end
709
+
710
+ describe "#swap_row_column" do
711
+ it "will swap the selected row and column" do
712
+ @binary_matrix.enter_cell_content([1], [2], 1, @binary_matrix.bm)
713
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
714
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
715
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
716
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
717
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
718
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
719
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
720
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
721
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
722
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
723
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
724
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
725
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
726
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
727
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
728
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
729
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
730
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
731
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
732
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
733
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
734
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
735
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
736
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
737
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
738
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
739
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
740
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
741
+ @binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm)
742
+ @binary_matrix.bm = @binary_matrix.swap_row_column([4], [7],@binary_matrix.bm, @binary_matrix.bmi.mi)
743
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
744
+ puts "\nSwap row column 4 and 7"
745
+ puts @binary_matrix.bm.to_a.map(&:inspect)
746
+ puts "Matrix Index .. \n"
747
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
748
+ logger.info "\nSwap row column 4 and 7"
749
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
750
+ logger.info "\n\nMatrix Index"
751
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
752
+ end
753
+ end
754
+
755
+ def part_one
756
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
757
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
758
+ @binary_matrix.enter_cell_content([3], [1], 1, @binary_matrix.bm)
759
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
760
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
761
+ @binary_matrix.enter_cell_content([2], [4], 1, @binary_matrix.bm)
762
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
763
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
764
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
765
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
766
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
767
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [1], @binary_matrix.bmi.mi)
768
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
769
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
770
+ @binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm)
771
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
772
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
773
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
774
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
775
+ @binary_matrix.enter_cell_content([5], [1], 1, @binary_matrix.bm)
776
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
777
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
778
+ @binary_matrix.enter_cell_content([3], [6], 1, @binary_matrix.bm)
779
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
780
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
781
+ @binary_matrix.enter_cell_content([6], [5], 1, @binary_matrix.bm)
782
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
783
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
784
+ @binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm)
785
+ @binary_matrix.bm = @binary_matrix.swap_row_column([4], [7],@binary_matrix.bm, @binary_matrix.bmi.mi)
786
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
787
+ end
788
+
789
+ describe "#swap_row_column" do
790
+ it "will swap the selected row and column" do
791
+ part_one
792
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
793
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
794
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
795
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
796
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
797
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
798
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
799
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
800
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
801
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
802
+ puts "\nSwap row column 2 and 4, 1 and 2, 5 and 1, 6 and 5, 3 and 6"
803
+ puts @binary_matrix.bm.to_a.map(&:inspect)
804
+ puts "Matrix Index .. \n"
805
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
806
+ logger.info "\nSwap row column 2 and 4, 1 and 2, 5 and 1, 6 and 5, 3 and 6"
807
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
808
+ logger.info "\n\nMatrix Index"
809
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
810
+ end
811
+ end
812
+
813
+ describe "#reachability_matrix" do
814
+ it "will calculate the reachability matrix and infer information" do
815
+ part_one
816
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
817
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
818
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
819
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
820
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
821
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
822
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
823
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
824
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
825
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
826
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
827
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
828
+ puts "\nInfer information"
829
+ puts @binary_matrix.bm.to_a.map(&:inspect)
830
+ puts "Matrix Index .. \n"
831
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
832
+ logger.info "\nInfer information"
833
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
834
+ logger.info "\n\nMatrix Index"
835
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
836
+ end
837
+ end
838
+
839
+ describe "#enter_cell_content" do
840
+ it "will enter a 1 in the selected cell" do
841
+ part_one
842
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
843
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
844
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
845
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
846
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
847
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
848
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
849
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
850
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
851
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
852
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
853
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
854
+ @binary_matrix.enter_cell_content([3], [8], 1, @binary_matrix.bm)
855
+ puts "\nEnter 8 is north of 3"
856
+ puts @binary_matrix.bm.to_a.map(&:inspect)
857
+ puts "Matrix Index .. \n"
858
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
859
+ logger.info "\nEnter 8 is north of 3"
860
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
861
+ logger.info "\n\nMatrix Index"
862
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
863
+ end
864
+ end
865
+
866
+ describe "#swap_row_column" do
867
+ it "will swap the selected rows and columns" do
868
+ part_one
869
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
870
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
871
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
872
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
873
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
874
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
875
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
876
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
877
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
878
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
879
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
880
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
881
+ @binary_matrix.enter_cell_content([3], [8], 1, @binary_matrix.bm)
882
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
883
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [8], @binary_matrix.bmi.mi)
884
+ puts "\nSwap row column 3 and 8"
885
+ puts @binary_matrix.bm.to_a.map(&:inspect)
886
+ puts "Matrix Index .. \n"
887
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
888
+ logger.info "\nSwap row column 3 and 8"
889
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
890
+ logger.info "\n\nMatrix Index"
891
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
892
+ end
893
+ end
894
+
895
+ describe "#enter_cell_content" do
896
+ it "will enter a 1 in the selected matrix cell" do
897
+ part_one
898
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
899
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
900
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
901
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
902
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
903
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
904
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
905
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
906
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
907
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
908
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
909
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
910
+ @binary_matrix.enter_cell_content([3], [8], 1, @binary_matrix.bm)
911
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
912
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [8], @binary_matrix.bmi.mi)
913
+ @binary_matrix.enter_cell_content([6], [8], 1, @binary_matrix.bm)
914
+ puts "\nEnter 8 is north if 6"
915
+ puts @binary_matrix.bm.to_a.map(&:inspect)
916
+ puts "Matrix Index .. \n"
917
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
918
+ logger.info "\nEnter 8 is north of 6"
919
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
920
+ logger.info "\n\nMatrix Index"
921
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
922
+ end
923
+ end
924
+ def part_two
925
+ part_one
926
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [4],@binary_matrix.bm, @binary_matrix.bmi.mi)
927
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [4], @binary_matrix.bmi.mi)
928
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
929
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
930
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
931
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [1], @binary_matrix.bmi.mi)
932
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
933
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
934
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [6],@binary_matrix.bm, @binary_matrix.bmi.mi)
935
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [6], @binary_matrix.bmi.mi)
936
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
937
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
938
+ @binary_matrix.enter_cell_content([3], [8], 1, @binary_matrix.bm)
939
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
940
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [8], @binary_matrix.bmi.mi)
941
+ @binary_matrix.enter_cell_content([6], [8], 1, @binary_matrix.bm)
942
+ end
943
+
944
+ describe "#swap_row_column" do
945
+ it "will swap the selected rows and columns" do
946
+ part_two
947
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
948
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
949
+ puts "\nSwap rows and columns 6 and 8"
950
+ puts @binary_matrix.bm.to_a.map(&:inspect)
951
+ puts "Matrix Index .. \n"
952
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
953
+ logger.info "\nSwap rows and columns 6 and 8"
954
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
955
+ logger.info "\n\nMatrix Index"
956
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
957
+ end
958
+ end
959
+
960
+ describe "#enter_cell_content" do
961
+ it "will enter a 1 in the selected matrix cell" do
962
+ part_two
963
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
964
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
965
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
966
+ puts "\nEnter 8 is north of 5"
967
+ puts @binary_matrix.bm.to_a.map(&:inspect)
968
+ puts "Matrix Index .. \n"
969
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
970
+ logger.info "\nEnter 8 is north of 5"
971
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
972
+ logger.info "\n\nMatrix Index"
973
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
974
+ end
975
+ end
976
+
977
+ describe "#swap_row_column" do
978
+ it "will swap the selected rows and columns" do
979
+ part_two
980
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
981
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
982
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
983
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
984
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
985
+ puts "\nSwap rows and columns 5 and 8"
986
+ puts @binary_matrix.bm.to_a.map(&:inspect)
987
+ puts "Matrix Index .. \n"
988
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
989
+ logger.info "\nSwap rows and columns 5 and 8"
990
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
991
+ logger.info "\n\nMatrix Index"
992
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
993
+ end
994
+ end
995
+
996
+ describe "#enter_cell_content" do
997
+ it "will enter a 1 into the selected matrix cell" do
998
+ part_two
999
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1000
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1001
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1002
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1003
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1004
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1005
+ puts "\nEnter 1 is north of 8"
1006
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1007
+ puts "Matrix Index .. \n"
1008
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1009
+ logger.info "\nEnter 1 is north of 8"
1010
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1011
+ logger.info "\n\nMatrix Index"
1012
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1013
+ end
1014
+ end
1015
+
1016
+ describe "#reachability_matrix" do
1017
+ it "will calculate the reachability_matrix and infer information" do
1018
+ part_two
1019
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1020
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1021
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1022
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1023
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1024
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1025
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1026
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1027
+ puts "\nInfer information"
1028
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1029
+ puts "Matrix Index .. \n"
1030
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1031
+ logger.info "\nInfer information"
1032
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1033
+ logger.info "\n\nMatrix Index"
1034
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1035
+ end
1036
+ end
1037
+
1038
+ describe "#enter_cell_content" do
1039
+ it "will enter a 1 in the selected matrix cell" do
1040
+ part_two
1041
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1042
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1043
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1044
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1045
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1046
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1047
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1048
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1049
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1050
+ puts "\nEnter 9 is north of 3"
1051
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1052
+ puts "Matrix Index .. \n"
1053
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1054
+ logger.info "\nEnter 9 is north of 3"
1055
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1056
+ logger.info "\n\nMatrix Index"
1057
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1058
+ end
1059
+ end
1060
+
1061
+ describe "#swap_row_column" do
1062
+ it "will swap selected rows and columns" do
1063
+ part_two
1064
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1065
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1066
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1067
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1068
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1069
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1070
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1071
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1072
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1073
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1074
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
1075
+ puts "\nSwap rows and columns 3 and 9"
1076
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1077
+ puts "Matrix Index .. \n"
1078
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1079
+ logger.info "\nSwap rows and columns 3 and 9"
1080
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1081
+ logger.info "\n\nMatrix Index"
1082
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1083
+ end
1084
+ end
1085
+
1086
+ describe "#enter_cell_content" do
1087
+ it "will enter a 1 in the selected matrix cell" do
1088
+ part_two
1089
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1090
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1091
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1092
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1093
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1094
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1095
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1096
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1097
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1098
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1099
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
1100
+ @binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm)
1101
+ puts "\nEnter 9 is north of 6"
1102
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1103
+ puts "Matrix Index .. \n"
1104
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1105
+ logger.info "\nEnter 9 is north of 6"
1106
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1107
+ logger.info "\n\nMatrix Index"
1108
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1109
+ end
1110
+ end
1111
+
1112
+ describe "#swap_row_column" do
1113
+ it "will swap the selected rows and columns" do
1114
+ part_two
1115
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1116
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1117
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1118
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1119
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1120
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1121
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1122
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1123
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1124
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1125
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
1126
+ @binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm)
1127
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1128
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1129
+ puts "\nSwap rows and columns 6 and 9"
1130
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1131
+ puts "Matrix Index .. \n"
1132
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1133
+ logger.info "\nSwap rows and columns 6 and 9"
1134
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1135
+ logger.info "\n\nMatrix Index"
1136
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1137
+ end
1138
+ end
1139
+
1140
+ describe "#enter_cell_content" do
1141
+ it "will enter a 1 in the selected matrix cell" do
1142
+ part_two
1143
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1144
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1145
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1146
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1147
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1148
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1149
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1150
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1151
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1152
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1153
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
1154
+ @binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm)
1155
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1156
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1157
+ @binary_matrix.enter_cell_content([9], [5], 1, @binary_matrix.bm)
1158
+ puts "\nEnter 5 is north of 9"
1159
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1160
+ puts "Matrix Index .. \n"
1161
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1162
+ logger.info "\nEnter 5 is north of 9"
1163
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1164
+ logger.info "\n\nMatrix Index"
1165
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1166
+ end
1167
+ end
1168
+
1169
+ def part_three
1170
+ part_two
1171
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1172
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [8], @binary_matrix.bmi.mi)
1173
+ @binary_matrix.enter_cell_content([5], [8], 1, @binary_matrix.bm)
1174
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1175
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1176
+ @binary_matrix.enter_cell_content([8], [1], 1, @binary_matrix.bm)
1177
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1178
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1179
+ @binary_matrix.enter_cell_content([3], [9], 1, @binary_matrix.bm)
1180
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1181
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [9], @binary_matrix.bmi.mi)
1182
+ @binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm)
1183
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1184
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1185
+ @binary_matrix.enter_cell_content([9], [5], 1, @binary_matrix.bm)
1186
+ end
1187
+
1188
+ describe "#reachability_matrix" do
1189
+ it "will calculate reachability_matrix and infer information" do
1190
+ part_three
1191
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1192
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1193
+ puts "\nInfer information"
1194
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1195
+ puts "Matrix Index .. \n"
1196
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1197
+ logger.info "\nInfer information"
1198
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1199
+ logger.info "\n\nMatrix Index"
1200
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1201
+ end
1202
+ end
1203
+
1204
+ describe "#enter_cell_content" do
1205
+ it "will enter a 1 in the matrix cell" do
1206
+ part_three
1207
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1208
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1209
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1210
+ puts "\nEnter 11 is north of 10"
1211
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1212
+ puts "Matrix Index .. \n"
1213
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1214
+ logger.info "\nEnter 11 in north of 10"
1215
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1216
+ logger.info "\n\nMatrix Index"
1217
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1218
+ end
1219
+ end
1220
+
1221
+ describe "#swap_row_column" do
1222
+ it "will swap_row_column that are selected" do
1223
+ part_three
1224
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1225
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1226
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1227
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1228
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1229
+ puts "\nSwap swap_row_column 10 and 11"
1230
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1231
+ puts "Matrix Index .. \n"
1232
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1233
+ logger.info "\nSwap swap_row_column 10 and 11"
1234
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1235
+ logger.info "\n\nMatrix Index"
1236
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1237
+ end
1238
+ end
1239
+
1240
+ describe "#enter_cell_content" do
1241
+ it "will enter a 1 in the selected matrix cell" do
1242
+ part_three
1243
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1244
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1245
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1246
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1247
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1248
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1249
+ puts "\nEnter 12 is north of 3"
1250
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1251
+ puts "Matrix Index .. \n"
1252
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1253
+ logger.info "\nEnter 12 is north of 3"
1254
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1255
+ logger.info "\n\nMatrix Index"
1256
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1257
+ end
1258
+ end
1259
+
1260
+
1261
+ describe "#swap_row_column" do
1262
+ it "will swap the selected rows and columns" do
1263
+ part_three
1264
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1265
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1266
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1267
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1268
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1269
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1270
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1271
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1272
+ puts "\nSwap rows and columns 3 and 12"
1273
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1274
+ puts "Matrix Index .. \n"
1275
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1276
+ logger.info "\nSwap rows and columns 3 and 12"
1277
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1278
+ logger.info "\n\nMatrix Index"
1279
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1280
+ end
1281
+ end
1282
+
1283
+
1284
+ describe "#enter_cell_content" do
1285
+ it "will enter a 1 into the selected matrix cell" do
1286
+ part_three
1287
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1288
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1289
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1290
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1291
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1292
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1293
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1294
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1295
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1296
+ puts "\nEnter 11 is north of 2"
1297
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1298
+ puts "Matrix Index .. \n"
1299
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1300
+ logger.info "\nEnter 11 is north of 2"
1301
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1302
+ logger.info "\n\nMatrix Index"
1303
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1304
+ end
1305
+ end
1306
+
1307
+ describe "#swap_row_column" do
1308
+ it "will swap the selected rows and columns" do
1309
+ part_three
1310
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1311
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1312
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1313
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1314
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1315
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1316
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1317
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1318
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1319
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1320
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1321
+ puts "\nSwap rows columns 2 and 11"
1322
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1323
+ puts "Matrix Index .. \n"
1324
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1325
+ logger.info "\nSwap rows columns 2 and 11"
1326
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1327
+ logger.info "\n\nMatrix Index"
1328
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1329
+ end
1330
+ end
1331
+
1332
+ describe "#enter_cell_content" do
1333
+ it "will enter a 1 into the selected matrix cell" do
1334
+ part_three
1335
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1336
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1337
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1338
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1339
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1340
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1341
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1342
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1343
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1344
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1345
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1346
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1347
+ puts "\nEnter 4 is north of 11"
1348
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1349
+ puts "Matrix Index .. \n"
1350
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1351
+ logger.info "\nEnter 4 is north of 11"
1352
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1353
+ logger.info "\n\nMatrix Index"
1354
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1355
+ end
1356
+ end
1357
+
1358
+ describe "#swap_row_column" do
1359
+ it "will swap the selected rows and columns" do
1360
+ part_three
1361
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1362
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1363
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1364
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1365
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1366
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1367
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1368
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1369
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1370
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1371
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1372
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1373
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1374
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1375
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1376
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1377
+ puts "\nSwap rows and columns 2 and 1"
1378
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1379
+ puts "Matrix Index .. \n"
1380
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1381
+ logger.info "\nSwap rows and columns 2 and 1"
1382
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1383
+ logger.info "\n\nMatrix Index"
1384
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1385
+ end
1386
+ end
1387
+
1388
+ describe "#swap_row_column" do
1389
+ it "will swap the selected rows and columns" do
1390
+ part_three
1391
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1392
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1393
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1394
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1395
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1396
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1397
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1398
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1399
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1400
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1401
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1402
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1403
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1404
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1405
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1406
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1407
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1408
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1409
+ puts "\nSwap rows and columns 10 and 11"
1410
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1411
+ puts "Matrix Index .. \n"
1412
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1413
+ logger.info "\nSwap rows and columns 10 and 11"
1414
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1415
+ logger.info "\n\nMatrix Index"
1416
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1417
+ end
1418
+ end
1419
+
1420
+ describe "#swap_row_column" do
1421
+ it "will swap the selected rows and columns" do
1422
+ part_three
1423
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1424
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1425
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1426
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1427
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1428
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1429
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1430
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1431
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1432
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1433
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1434
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1435
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1436
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1437
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1438
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1439
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1440
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1441
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1442
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1443
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1444
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1445
+ puts "\nSwap rows and columns 5 and 8"
1446
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1447
+ puts "Matrix Index .. \n"
1448
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1449
+ logger.info "\nSwap rows and columns 5 and 8"
1450
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1451
+ logger.info "\n\nMatrix Index"
1452
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1453
+ end
1454
+ end
1455
+
1456
+ describe "#swap_row_column" do
1457
+ it "will swap the selected rows and columns" do
1458
+ part_three
1459
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1460
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1461
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1462
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1463
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1464
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1465
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1466
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1467
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1468
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1469
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1470
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1471
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1472
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1473
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1474
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1475
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1476
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1477
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1478
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1479
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1480
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1481
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1482
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
1483
+ puts "\nSwap rows and columns 6 and 5"
1484
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1485
+ puts "Matrix Index .. \n"
1486
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1487
+ logger.info "\nSwap rows and columns 6 and 5"
1488
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1489
+ logger.info "\n\nMatrix Index"
1490
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1491
+ end
1492
+ end
1493
+
1494
+ describe "#swap_row_column" do
1495
+ it "will swap the selected rows and columns" do
1496
+ part_three
1497
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1498
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1499
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1500
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1501
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1502
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1503
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1504
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1505
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1506
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1507
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1508
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1509
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1510
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1511
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1512
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1513
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1514
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1515
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1516
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1517
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1518
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1519
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1520
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
1521
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1522
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1523
+ puts "\nSwap rows and columns 9 and 5"
1524
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1525
+ puts "Matrix Index .. \n"
1526
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1527
+ logger.info "\nSwap rows and columns 9 and 5"
1528
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1529
+ logger.info "\n\nMatrix Index"
1530
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1531
+ end
1532
+ end
1533
+
1534
+ describe "#reachability_matrix" do
1535
+ it "will calculate the reachability_matrix and infer information" do
1536
+ part_three
1537
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1538
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1539
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1540
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1541
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1542
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1543
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1544
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1545
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1546
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1547
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1548
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1549
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1550
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1551
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1552
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1553
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1554
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1555
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1556
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1557
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1558
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1559
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1560
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
1561
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1562
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1563
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1564
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1565
+ puts "\nInfer information"
1566
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1567
+ puts "Matrix Index .. \n"
1568
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1569
+ logger.info "\nInfer information"
1570
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1571
+ logger.info "\n\nMatrix Index"
1572
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1573
+ end
1574
+ end
1575
+
1576
+ def part_four
1577
+ part_three
1578
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1579
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1580
+ @binary_matrix.enter_cell_content([10], [11], 1, @binary_matrix.bm)
1581
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1582
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1583
+ @binary_matrix.enter_cell_content([3], [12], 1, @binary_matrix.bm)
1584
+ @binary_matrix.bm = @binary_matrix.swap_row_column([3], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1585
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [12], @binary_matrix.bmi.mi)
1586
+ @binary_matrix.enter_cell_content([2], [11], 1, @binary_matrix.bm)
1587
+ @binary_matrix.bm = @binary_matrix.swap_row_column([2], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1588
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([2], [11], @binary_matrix.bmi.mi)
1589
+ @binary_matrix.enter_cell_content([11], [4], 1, @binary_matrix.bm)
1590
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1591
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1592
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [2],@binary_matrix.bm, @binary_matrix.bmi.mi)
1593
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [2], @binary_matrix.bmi.mi)
1594
+ @binary_matrix.bm = @binary_matrix.swap_row_column([10], [11],@binary_matrix.bm, @binary_matrix.bmi.mi)
1595
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([10], [11], @binary_matrix.bmi.mi)
1596
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1597
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1598
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1599
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1600
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1601
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [5], @binary_matrix.bmi.mi)
1602
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1603
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1604
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1605
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1606
+ end
1607
+
1608
+ describe "#enter_cell_content" do
1609
+ it "will enter a 1 into the selected matrix cell" do
1610
+ part_four
1611
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1612
+ puts "\nEnter 10 is north of 1"
1613
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1614
+ puts "Matrix Index .. \n"
1615
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1616
+ logger.info "\nEnter 10 is north of 1"
1617
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1618
+ logger.info "\n\nMatrix Index"
1619
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1620
+ end
1621
+ end
1622
+
1623
+ describe "#swap_row_column" do
1624
+ it "will swap the selected rows and columns" do
1625
+ part_four
1626
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1627
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1628
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1629
+ puts "\nSwap rows and columns 1 and 10"
1630
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1631
+ puts "Matrix Index .. \n"
1632
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1633
+ logger.info "\nSwap rows and columns 1 and 10"
1634
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1635
+ logger.info "\n\nMatrix Index"
1636
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1637
+ end
1638
+ end
1639
+
1640
+ describe "#swap_row_column" do
1641
+ it "will swap the selected rows and columns" do
1642
+ part_four
1643
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1644
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1645
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1646
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1647
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1648
+ puts "\nSwap rows and columns 8 and 1"
1649
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1650
+ puts "Matrix Index .. \n"
1651
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1652
+ logger.info "\nSwap rows and columns 8 and 1"
1653
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1654
+ logger.info "\n\nMatrix Index"
1655
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1656
+ end
1657
+ end
1658
+
1659
+ describe "#swap_row_column" do
1660
+ it "will swap the selected rows and columns" do
1661
+ part_four
1662
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1663
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1664
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1665
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1666
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1667
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1668
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1669
+ puts "\nSwap rows and columns 5 and 8"
1670
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1671
+ puts "Matrix Index .. \n"
1672
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1673
+ logger.info "\nSwap rows and columns 5 and 8"
1674
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1675
+ logger.info "\n\nMatrix Index"
1676
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1677
+ end
1678
+ end
1679
+
1680
+ describe "#swap_row_column" do
1681
+ it "will swap the selected rows and columns" do
1682
+ part_four
1683
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1684
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1685
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1686
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1687
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1688
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1689
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1690
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1691
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1692
+ puts "\nSwap rows and columns 9 and 5"
1693
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1694
+ puts "Matrix Index .. \n"
1695
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1696
+ logger.info "\nSwap rows and columns 9 and 5"
1697
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1698
+ logger.info "\n\nMatrix Index"
1699
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1700
+ end
1701
+ end
1702
+
1703
+ describe "#swap_row_column" do
1704
+ it "will swap the selected rows and columns" do
1705
+ part_four
1706
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1707
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1708
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1709
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1710
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1711
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1712
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1713
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1714
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1715
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1716
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1717
+ puts "\nSwap rows and columns 6 and 9"
1718
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1719
+ puts "Matrix Index .. \n"
1720
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1721
+ logger.info "\nSwap rows and columns 6 and 9"
1722
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1723
+ logger.info "\n\nMatrix Index"
1724
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1725
+ end
1726
+ end
1727
+
1728
+
1729
+ describe "#reachability_matrix" do
1730
+ it "will calculate reachability_matrix and infer information" do
1731
+ part_four
1732
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1733
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1734
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1735
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1736
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1737
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1738
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1739
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1740
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1741
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1742
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1743
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1744
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1745
+ puts "\nInfer information"
1746
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1747
+ puts "Matrix Index .. \n"
1748
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1749
+ logger.info "\nInfer information"
1750
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1751
+ logger.info "\n\nMatrix Index"
1752
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1753
+ end
1754
+ end
1755
+
1756
+ describe "#enter_cell_content" do
1757
+ it "will enter a 1 into the matrix cell" do
1758
+ part_four
1759
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1760
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1761
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1762
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1763
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1764
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1765
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1766
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1767
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1768
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1769
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1770
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1771
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1772
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1773
+ puts "\nEnter 12 is north of 1"
1774
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1775
+ puts "Matrix Index .. \n"
1776
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1777
+ logger.info "\nEnter 12 is north of 1"
1778
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1779
+ logger.info "\n\nMatrix Index"
1780
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1781
+ end
1782
+ end
1783
+
1784
+ describe "#swap_row_column" do
1785
+ it "will swap selected rows and columns" do
1786
+ part_four
1787
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1788
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1789
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1790
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1791
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1792
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1793
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1794
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1795
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1796
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1797
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1798
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1799
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1800
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1801
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1802
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1803
+ puts "\nSwap rows and columns 12 and 1"
1804
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1805
+ puts "Matrix Index .. \n"
1806
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1807
+ logger.info "\nSwap rows and columns 12 and 1"
1808
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1809
+ logger.info "\n\nMatrix Index"
1810
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1811
+ end
1812
+ end
1813
+
1814
+ describe "#swap_row_column" do
1815
+ it "will swap selected rows and columns" do
1816
+ part_four
1817
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1818
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1819
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1820
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1821
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1822
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1823
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1824
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1825
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1826
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1827
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1828
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1829
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1830
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1831
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1832
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1833
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1834
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1835
+ puts "\nSwap rows and columns 1 and 8"
1836
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1837
+ puts "Matrix Index .. \n"
1838
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1839
+ logger.info "\nSwap rows and columns 1 and 8"
1840
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1841
+ logger.info "\n\nMatrix Index"
1842
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1843
+ end
1844
+ end
1845
+
1846
+ describe "#swap_row_column" do
1847
+ it "will swap selected rows and columns" do
1848
+ part_four
1849
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1850
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1851
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1852
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1853
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1854
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1855
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1856
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1857
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1858
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1859
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1860
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1861
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1862
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1863
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1864
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1865
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1866
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1867
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1868
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1869
+ puts "\nSwap rows and columns 1 and 8"
1870
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1871
+ puts "Matrix Index .. \n"
1872
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1873
+ logger.info "\nSwap rows and columns 1 and 8"
1874
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1875
+ logger.info "\n\nMatrix Index"
1876
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1877
+ end
1878
+ end
1879
+
1880
+ describe "#reachability_matrix" do
1881
+ it "will calculate the reachability_matrix and infer information" do
1882
+ part_four
1883
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1884
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1885
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1886
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1887
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1888
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1889
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1890
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1891
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1892
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1893
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1894
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1895
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1896
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1897
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1898
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1899
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1900
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1901
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1902
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1903
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1904
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1905
+ puts "\nInfer information"
1906
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1907
+ puts "Matrix Index .. \n"
1908
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1909
+ logger.info "\nInfer information"
1910
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1911
+ logger.info "\n\nMatrix Index"
1912
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1913
+ end
1914
+
1915
+ end
1916
+
1917
+ describe "#enter_cell_content" do
1918
+ it "will enter a 1 in the selected matrix cell" do
1919
+ part_four
1920
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1921
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1922
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1923
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1924
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1925
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1926
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1927
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1928
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1929
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1930
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1931
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1932
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1933
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1934
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1935
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1936
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1937
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1938
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1939
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1940
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1941
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1942
+ @binary_matrix.enter_cell_content([12], [10], 1, @binary_matrix.bm)
1943
+ puts "\nEnter 10 is north of 12"
1944
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1945
+ puts "Matrix Index .. \n"
1946
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1947
+ logger.info "\nEnter 10 is north of 12"
1948
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1949
+ logger.info "\n\nMatrix Index"
1950
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1951
+ end
1952
+ end
1953
+
1954
+
1955
+ describe "#reachability_matrix" do
1956
+ it "will calculate the reachability_matrix and infer information" do
1957
+ part_four
1958
+ @binary_matrix.enter_cell_content([1], [10], 1, @binary_matrix.bm)
1959
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [10],@binary_matrix.bm, @binary_matrix.bmi.mi)
1960
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [10], @binary_matrix.bmi.mi)
1961
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1962
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1963
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1964
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1965
+ @binary_matrix.bm = @binary_matrix.swap_row_column([9], [5],@binary_matrix.bm, @binary_matrix.bmi.mi)
1966
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [5], @binary_matrix.bmi.mi)
1967
+ @binary_matrix.bm = @binary_matrix.swap_row_column([6], [9],@binary_matrix.bm, @binary_matrix.bmi.mi)
1968
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
1969
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1970
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1971
+ @binary_matrix.enter_cell_content([1], [12], 1, @binary_matrix.bm)
1972
+ @binary_matrix.bm = @binary_matrix.swap_row_column([1], [12],@binary_matrix.bm, @binary_matrix.bmi.mi)
1973
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([1], [12], @binary_matrix.bmi.mi)
1974
+ @binary_matrix.bm = @binary_matrix.swap_row_column([8], [1],@binary_matrix.bm, @binary_matrix.bmi.mi)
1975
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([8], [1], @binary_matrix.bmi.mi)
1976
+ @binary_matrix.bm = @binary_matrix.swap_row_column([5], [8],@binary_matrix.bm, @binary_matrix.bmi.mi)
1977
+ @binary_matrix.bmi.mi = @binary_matrix.swap_index([5], [8], @binary_matrix.bmi.mi)
1978
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1979
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1980
+ @binary_matrix.enter_cell_content([12], [10], 1, @binary_matrix.bm)
1981
+ @binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm)
1982
+ @binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
1983
+ puts "\nInfer information"
1984
+ puts @binary_matrix.bm.to_a.map(&:inspect)
1985
+ puts "Matrix Index .. \n"
1986
+ p @binary_matrix.bmi.mi.to_a.map(&:inspect)
1987
+ logger.info "\nInfer information"
1988
+ "#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
1989
+ logger.info "\n\nMatrix Index"
1990
+ logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
1991
+ end
1992
+ end
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+ end
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+