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.
- checksums.yaml +7 -0
- data/.gitignore +87 -0
- data/.travis.yml +13 -0
- data/Gemfile +4 -0
- data/LICENSE.md +639 -0
- data/README.md +42 -0
- data/Rakefile +8 -0
- data/binary_matrix.gemspec +24 -0
- data/lib/binary_matrix.rb +100 -0
- data/lib/binary_matrix/version.rb +3 -0
- data/lib/binary_matrix_utilities.rb +93 -0
- data/lib/log_and_print.rb +18 -0
- data/lib/matrix_index.rb +20 -0
- data/spec/binary_matrix_general_spec.rb +895 -0
- data/spec/binary_matrix_one_spec.rb +88 -0
- data/spec/binary_matrix_spec.rb +2021 -0
- data/spec/spec_helper.rb +1 -0
- metadata +107 -0
data/README.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# BinaryMatrix
|
2
|
+
[](https://travis-ci.org/jjs0sbw/BinaryMatrix)
|
3
|
+
|
4
|
+
An implementation of a binary matrix with Boolean operators. This program is used to perform
|
5
|
+
Warfield Augumented Boolean Logic (WABL) operations. WABL operations are a primary component
|
6
|
+
system structural modeling. More information is available at:
|
7
|
+
|
8
|
+
Systems Concepts web site: http://systemsconcept.org/
|
9
|
+
|
10
|
+
Github: https://github.com/jjs0sbw/bsmp
|
11
|
+
|
12
|
+
Github: https://github.com/jjs0sbw/smp
|
13
|
+
|
14
|
+
Wikipedia: http://en.wikipedia.org/wiki/Logical_matrix
|
15
|
+
|
16
|
+
## Installation
|
17
|
+
|
18
|
+
Add this line to your application's Gemfile:
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
gem 'binary_matrix'
|
22
|
+
```
|
23
|
+
|
24
|
+
And then execute:
|
25
|
+
|
26
|
+
$ bundle
|
27
|
+
|
28
|
+
Or install it yourself as:
|
29
|
+
|
30
|
+
$ gem install binary_matrix
|
31
|
+
|
32
|
+
## Usage
|
33
|
+
|
34
|
+
Usage instructions are located at the above referenced web sites.
|
35
|
+
|
36
|
+
## Contributing
|
37
|
+
|
38
|
+
1. Fork it ( https://github.com/[my-github-username]/binary_matrix/fork )
|
39
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
40
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
41
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
42
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'binary_matrix/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "binary_matrix"
|
8
|
+
spec.version = BinaryMatrix::VERSION
|
9
|
+
spec.authors = ["Joseph Simpson"]
|
10
|
+
spec.email = ["jjs0sbw@gmail.com"]
|
11
|
+
spec.summary = %q{Binary matrix with Boolean operators.}
|
12
|
+
spec.description = %q{Binary matrix with Boolean operators that implements Warfield augumented Boolean logic.}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "GPL3"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/binary_matrix/version"
|
2
|
+
require "#{File.dirname(__FILE__)}/matrix_index"
|
3
|
+
require "#{File.dirname(__FILE__)}/binary_matrix_utilities"
|
4
|
+
require "#{File.dirname(__FILE__)}/log_and_print"
|
5
|
+
|
6
|
+
# Binary matrix class for Warfield Augumented Boolean Logic
|
7
|
+
class BinaryMatrix
|
8
|
+
include Utilities
|
9
|
+
include LogAndPrint
|
10
|
+
attr_accessor :size, :number_of_rows, :number_of_columns, :bm, :bmi
|
11
|
+
|
12
|
+
def initialize(size)
|
13
|
+
@size = size
|
14
|
+
@number_of_rows = size
|
15
|
+
@number_of_columns = size
|
16
|
+
@bm = Array.new(size) { Array.new(size, 0) }
|
17
|
+
@bmi = MatrixIndex.new(size)
|
18
|
+
end
|
19
|
+
|
20
|
+
def add(matrix = bm)
|
21
|
+
sum = 0
|
22
|
+
matrix.each { |x| x.each { |y| sum += y } }
|
23
|
+
sum
|
24
|
+
end
|
25
|
+
|
26
|
+
def enter_cell_content(index_1, index_2, number = 1, matrix = bm, matrix_in = bmi.mi)
|
27
|
+
number = 0 if index_1 == index_2
|
28
|
+
r_1 = matrix_in.index(index_1)
|
29
|
+
r_2 = matrix_in.index(index_2)
|
30
|
+
matrix[r_1][r_2] = number
|
31
|
+
matrix
|
32
|
+
end
|
33
|
+
|
34
|
+
def boolean_add(matrix_one, matrix_two)
|
35
|
+
temp_matrix_one = matrix_one.dup
|
36
|
+
temp_matrix_two = matrix_two.dup
|
37
|
+
sz = (temp_matrix_two[0].length - 1)
|
38
|
+
temp_matrix_out = Array.new(sz + 1) { Array.new(sz + 1, 0) }
|
39
|
+
(0..sz).map do | x|
|
40
|
+
(0..sz).map do |y|
|
41
|
+
temp_matrix_out[x][y] = (temp_matrix_one[x][y] + temp_matrix_two[x][y])
|
42
|
+
end
|
43
|
+
end
|
44
|
+
boolean_map(temp_matrix_out)
|
45
|
+
temp_matrix_out
|
46
|
+
end
|
47
|
+
|
48
|
+
def boolean_subtract(matrix_one, matrix_two)
|
49
|
+
temp_matrix_one = matrix_one.dup
|
50
|
+
temp_matrix_two = matrix_two.dup
|
51
|
+
sz = (temp_matrix_two[0].length - 1)
|
52
|
+
temp_matrix_out = Array.new(size) { Array.new(size, 0) }
|
53
|
+
(0..sz).map do | x|
|
54
|
+
(0..sz).map do |y|
|
55
|
+
temp_matrix_out[x][y] = (temp_matrix_one[x][y] - temp_matrix_two[x][y])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
boolean_map(temp_matrix_out)
|
59
|
+
temp_matrix_out
|
60
|
+
end
|
61
|
+
|
62
|
+
def boolean_multiply(matrix_one, matrix_two)
|
63
|
+
sz = (matrix_one[0].length - 1)
|
64
|
+
id_1 = id_matrix(size).dup
|
65
|
+
id_2 = id_matrix(size).dup
|
66
|
+
m_1 = boolean_add(id_1, matrix_one.dup)
|
67
|
+
m_2 = boolean_add(id_2, matrix_two.dup)
|
68
|
+
m_2_t = m_2.transpose
|
69
|
+
b_m_out = (0..sz).map do |j|
|
70
|
+
(0..sz).map { |i| m_1[j].zip(m_2_t[i]).map { |x, y| x * y }.inject(:+) }
|
71
|
+
end
|
72
|
+
boolean_map(b_m_out)
|
73
|
+
b_m_out
|
74
|
+
end
|
75
|
+
|
76
|
+
def expand(matrix, index_1)
|
77
|
+
new_matrix = expand_end(matrix)
|
78
|
+
last_index = new_matrix[0].length - 1
|
79
|
+
matrix_out = swap_row_column([index_1], [last_index], new_matrix)
|
80
|
+
matrix_out
|
81
|
+
end
|
82
|
+
|
83
|
+
def compress(index_1, index_2, matrix = bm, matrix_index = bmi.mi)
|
84
|
+
new_matrix = matrix.dup
|
85
|
+
i_1 = matrix_index.index(index_1)
|
86
|
+
i_2 = matrix_index.index(index_2)
|
87
|
+
a_1 = new_matrix[i_1]
|
88
|
+
a_2 = new_matrix[i_2]
|
89
|
+
a_c_1_2 = compress_array(a_1, a_2, i_1)
|
90
|
+
new_matrix[i_1] = a_c_1_2
|
91
|
+
new_matrix.delete_at(i_2)
|
92
|
+
new_matrix_t = new_matrix.transpose.dup
|
93
|
+
a_1_t = new_matrix_t[i_1]
|
94
|
+
a_2_t = new_matrix_t[i_2]
|
95
|
+
a_c_1_2_t = compress_array(a_1_t, a_2_t, i_1)
|
96
|
+
new_matrix_t[i_1] = a_c_1_2_t
|
97
|
+
new_matrix_t.delete_at(i_2)
|
98
|
+
new_matrix_t.transpose.dup
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
#
|
3
|
+
# binary_matrix_utilities.rb
|
4
|
+
# Utilities that support different output forms for a BinaryMatrix instance
|
5
|
+
#
|
6
|
+
# Copyright GPL 3 -- Joseph J. Simpson -- 2014 11-23-2014
|
7
|
+
module Utilities
|
8
|
+
def boolean_map(matrix)
|
9
|
+
m_size = (matrix[0].length - 1)
|
10
|
+
(0..m_size).map do
|
11
|
+
|x| (0..m_size).map do
|
12
|
+
|y| matrix[x][y] > 1 ? matrix[x][y] = 1 : matrix[x][y]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def id_matrix(size)
|
18
|
+
id = Array.new(size) { Array.new(size, 0) }
|
19
|
+
id[0][0] = 1
|
20
|
+
(0..size - 1).map { |x| id[x][x] = 1 }
|
21
|
+
id
|
22
|
+
end
|
23
|
+
|
24
|
+
def compress_array(array_1, array_2, index_1)
|
25
|
+
sz = array_1.length - 1
|
26
|
+
a_1 = array_1.dup
|
27
|
+
a_2 = array_2.dup
|
28
|
+
a_out = []
|
29
|
+
(0..sz).each { |x| a_out[x] = a_1[x] + a_2[x] }
|
30
|
+
(0..sz).each { |x| a_out[x] > 1 ? a_out[x] = 1 : a_out[x] }
|
31
|
+
a_out[index_1] = 0 # change to index_1 may need to add index_2
|
32
|
+
a_out
|
33
|
+
end
|
34
|
+
|
35
|
+
def expand_end(matrix)
|
36
|
+
new_size = matrix[0].length
|
37
|
+
new_row = Array.new(new_size, 0)
|
38
|
+
new_matrix = matrix.dup
|
39
|
+
new_matrix << new_row
|
40
|
+
new_column = Array.new(new_size + 1, 0)
|
41
|
+
new_matrix_t = new_matrix.transpose.dup
|
42
|
+
new_matrix_t << new_column
|
43
|
+
matrix_out = new_matrix_t.transpose.dup
|
44
|
+
matrix_out
|
45
|
+
end
|
46
|
+
|
47
|
+
def swap_row_column(index_1, index_2, matrix = bm, matrix_index = bmi.mi)
|
48
|
+
tm = matrix.dup
|
49
|
+
i1 = matrix_index.index(index_1)
|
50
|
+
i2 = matrix_index.index(index_2)
|
51
|
+
ta1 = tm[i1]
|
52
|
+
ta2 = tm[i2]
|
53
|
+
tm[i1] = ta2
|
54
|
+
tm[i2] = ta1
|
55
|
+
tmt = tm.transpose
|
56
|
+
tat1 = tmt[i1]
|
57
|
+
tat2 = tmt[i2]
|
58
|
+
tmt[i1] = tat2
|
59
|
+
tmt[i2] = tat1
|
60
|
+
tout = tmt.transpose.dup
|
61
|
+
tout
|
62
|
+
end
|
63
|
+
|
64
|
+
def swap_index(index_1, index_2, matrix_index)
|
65
|
+
tm = matrix_index.dup
|
66
|
+
i1 = bmi.mi.index(index_1)
|
67
|
+
i2 = bmi.mi.index(index_2)
|
68
|
+
ta1 = tm[i1]
|
69
|
+
ta2 = tm[i2]
|
70
|
+
tm[i1] = ta2
|
71
|
+
tm[i2] = ta1
|
72
|
+
tm.dup
|
73
|
+
end
|
74
|
+
|
75
|
+
def reachability_matrix(matrix)
|
76
|
+
tmp_matrix = matrix.dup
|
77
|
+
guard_num = 0
|
78
|
+
check_matrix_1 = boolean_multiply(tmp_matrix, tmp_matrix)
|
79
|
+
check_matrix_2 = boolean_multiply(check_matrix_1, check_matrix_1)
|
80
|
+
until boolean_subtract(check_matrix_1, check_matrix_2) == 0 || guard_num > 10
|
81
|
+
guard_num += 1
|
82
|
+
check_matrix_1 = boolean_multiply(check_matrix_2, check_matrix_2)
|
83
|
+
check_matrix_2 = boolean_multiply(check_matrix_1, check_matrix_1)
|
84
|
+
end
|
85
|
+
check_matrix_2
|
86
|
+
end
|
87
|
+
|
88
|
+
def subtract_id_matrix(matrix)
|
89
|
+
sz = (matrix[0].length - 1)
|
90
|
+
(0..sz).map { |x| matrix[x][x] = 0 }
|
91
|
+
matrix
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
#
|
3
|
+
# Utilities that support logging and printing
|
4
|
+
#
|
5
|
+
# Copyright GPL 3 -- Joseph J. Simpson -- 2014 11-27-2014
|
6
|
+
# code to create log file
|
7
|
+
module LogAndPrint
|
8
|
+
def square_print_with_comment(comment, matrix = bm)
|
9
|
+
puts ' '
|
10
|
+
puts comment
|
11
|
+
puts matrix.to_a.map(&:inspect)
|
12
|
+
puts ' '
|
13
|
+
end
|
14
|
+
|
15
|
+
def write_log(log_name, data)
|
16
|
+
File.open(log_name, 'a+') { |f| f.write(data) }
|
17
|
+
end
|
18
|
+
end
|
data/lib/matrix_index.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
#
|
3
|
+
# An index of a binary matrix
|
4
|
+
# Copyright GPL 3 -- Joseph J. Simpson -- 2014 11-22-2014
|
5
|
+
class MatrixIndex
|
6
|
+
attr_accessor :mi
|
7
|
+
def initialize(size)
|
8
|
+
@mi = Array.new(size) { |i| Array.new(1, i + 1) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def compress_index(index_1, index_2)
|
12
|
+
temp_mi = mi.dup
|
13
|
+
i1 = temp_mi.index([index_1])
|
14
|
+
i2 = temp_mi.index([index_2])
|
15
|
+
temp_mi[i1].push(temp_mi[i2])
|
16
|
+
temp_mi.delete_at(i2)
|
17
|
+
mi = temp_mi
|
18
|
+
mi
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,895 @@
|
|
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('general_log_one.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 for the general subordination matrix\n"
|
11
|
+
before :each do
|
12
|
+
@binary_matrix = BinaryMatrix.new(12)
|
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 (12)" do
|
20
|
+
expect(@binary_matrix.size).to be == 12
|
21
|
+
end
|
22
|
+
|
23
|
+
it "has tweleve (12) rows in the matrix" do
|
24
|
+
expect(@binary_matrix.number_of_rows).to be == 12
|
25
|
+
end
|
26
|
+
|
27
|
+
it "has tweleve (12) columns in the matrix" do
|
28
|
+
expect(@binary_matrix.number_of_columns).to be == 12
|
29
|
+
end
|
30
|
+
|
31
|
+
it "has a two dimensional tweleve (12) by tweleve (12) 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])
|
60
|
+
expect(@binary_matrix.add).to be == 0
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#boolean_add" do
|
66
|
+
it "will add cell contents from two same size matrices" do
|
67
|
+
temp_matrix_1 = Array.new(10) { Array.new(10, 1) }
|
68
|
+
temp_matrix_2 = Array.new(10) { Array.new(10, 2) }
|
69
|
+
temp_matrix_out = Array.new(10) { Array.new(10, 0) }
|
70
|
+
temp_matrix_answer = Array.new(10) { Array.new(10, 1) }
|
71
|
+
temp_matrix_out = @binary_matrix.boolean_add(temp_matrix_1, temp_matrix_2)
|
72
|
+
expect(temp_matrix_out).to eq temp_matrix_answer
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#boolean_multiply" do
|
77
|
+
it "will multipley two square matrices together and return a Boolean matrix" do
|
78
|
+
temp_matrix_1 = Array.new(10) { Array.new(10, 0) }
|
79
|
+
temp_matrix_2 = Array.new(10) { Array.new(10, 0) }
|
80
|
+
temp_matrix_a1 = Array.new(10) { Array.new(10, 0) }
|
81
|
+
temp_matrix_a2 = @binary_matrix.id_matrix(10)
|
82
|
+
temp_matrix_answer = @binary_matrix.boolean_add(temp_matrix_a1, temp_matrix_a2)
|
83
|
+
temp_matrix_out = @binary_matrix.boolean_multiply(temp_matrix_1, temp_matrix_2)
|
84
|
+
expect(temp_matrix_out).to eq temp_matrix_answer
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#expand_end" do
|
89
|
+
it "will expand the matrix by one row and column at the end" do
|
90
|
+
temp_matrix_answer = Array.new(13) { Array.new(13, 0) }
|
91
|
+
expect(@binary_matrix.expand_end(@binary_matrix.bm)).to eq temp_matrix_answer
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#expand" do
|
96
|
+
it "will expand the matrix inserting a row and column at the given index " do
|
97
|
+
temp_matrix_answer = Array.new(13) { Array.new(13, 0) }
|
98
|
+
expect(@binary_matrix.expand(@binary_matrix.bm, 4)).to eq temp_matrix_answer
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#compress" do
|
103
|
+
it "will compress two rows and columns into one" do
|
104
|
+
temp_matrix_answer = Array.new(11) { Array.new(11, 0) }
|
105
|
+
expect(@binary_matrix.compress([2], [6])).to eq temp_matrix_answer # added brackets
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "#square_print_with_comment" do
|
110
|
+
it "will print the matrix in a square format with a commnet" do
|
111
|
+
expect { print "test one" }.to output("test one").to_stdout
|
112
|
+
end
|
113
|
+
it "will print the matrix in a square format with a commnet" do
|
114
|
+
expect { @binary_matrix.square_print_with_comment("testOne", \
|
115
|
+
@binary_matrix.bm)}.to output(" \ntestOne
|
116
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
117
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
118
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
119
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
120
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
121
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
122
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
123
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
124
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
125
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
126
|
+
[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]
|
128
|
+
\n").to_stdout
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "#write_log" do
|
133
|
+
it "will log the matrix in a square format with a comment to a local file" do
|
134
|
+
puts "\n Binary Matrix .. General\n"
|
135
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
136
|
+
puts "Matrix Index .. \n"
|
137
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
138
|
+
logger.info "\n Enter base binary matrix.. General\n"
|
139
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
140
|
+
logger.info "\n\nMatrix Index"
|
141
|
+
"#{@binary_matrix.bmi.mi.to_a{ logger.info inspect } }"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# 1 and 10 were randomly selected to as the first set to compare
|
146
|
+
# City 1 and city 10 are at the same level, so the rows and columns must be merged
|
147
|
+
describe "#compress" do
|
148
|
+
it "will compress two rows and columns into one" do
|
149
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
150
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
151
|
+
puts "Compress rows columns 1 and 10\n"
|
152
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
153
|
+
puts "Matrix Index .. \n"
|
154
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
155
|
+
logger.info "\nCompress rows and columns 1 and 10\n"
|
156
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
157
|
+
logger.info "\n\nMatrix Index"
|
158
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "#enter_cell_content" do
|
163
|
+
it "will enter a 1 into the selected matrix cell" do
|
164
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
165
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
166
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm)
|
167
|
+
puts "Enter 8 is north of 1\n"
|
168
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
169
|
+
puts "Matrix Index .. \n"
|
170
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
171
|
+
logger.info "\nEnter 8 is north of 1\n"
|
172
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
173
|
+
logger.info "\n\nMatrix Index"
|
174
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe "#swap_row_column" do
|
179
|
+
it "will swap selected rows and columns to create proper alignment" do
|
180
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
181
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
182
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm)
|
183
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
184
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
185
|
+
puts "Swap rows and columns 1 and 8"
|
186
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
187
|
+
puts "Matrix Index .. \n"
|
188
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
189
|
+
logger.info "\nSwap rows and columns 1 and 8\n"
|
190
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
191
|
+
logger.info "\n\nMatrix Index"
|
192
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
describe "#enter_cell_content" do
|
197
|
+
it "will enter a 1 into the selected matrix cell" do
|
198
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
199
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
200
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
201
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
202
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
203
|
+
@binary_matrix.enter_cell_content([12], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
204
|
+
puts "Enter 8 is north of 12"
|
205
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
206
|
+
puts "Matrix Index .. \n"
|
207
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
208
|
+
logger.info "\nEnter 8 is north of 12\n"
|
209
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
210
|
+
logger.info "\n\nMatrix Index"
|
211
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe "#enter_cell_content" do
|
216
|
+
it "will enter a 1 into the selected matrix cell" do
|
217
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
218
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
219
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
220
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
221
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
222
|
+
@binary_matrix.enter_cell_content([12], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
223
|
+
@binary_matrix.enter_cell_content([12], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
224
|
+
puts "Enter 5 is north of 12"
|
225
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
226
|
+
puts "Matrix Index .. \n"
|
227
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
228
|
+
logger.info "\nEnter 5 is north of 12\n"
|
229
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
230
|
+
logger.info "\n\nMatrix Index"
|
231
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe "#enter_cell_content" do
|
236
|
+
it "will enter a 1 into the selected matrix cell" do
|
237
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
238
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
239
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
240
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
241
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
242
|
+
@binary_matrix.enter_cell_content([12], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
243
|
+
@binary_matrix.enter_cell_content([12], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
244
|
+
@binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
245
|
+
puts "Enter 5 is north of 3"
|
246
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
247
|
+
puts "Matrix Index .. \n"
|
248
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
249
|
+
logger.info "\nEnter 5 is north of 3\n"
|
250
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
251
|
+
logger.info "\n\nMatrix Index"
|
252
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
describe "#swap_row_column" do
|
257
|
+
it "will swap the selected rows and columns" do
|
258
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
259
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
260
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
261
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
262
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
263
|
+
@binary_matrix.enter_cell_content([12], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
264
|
+
@binary_matrix.enter_cell_content([12], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
265
|
+
@binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
266
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([3], [5], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
267
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
|
268
|
+
puts "Swap row column 3 and 5"
|
269
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
270
|
+
puts "Matrix Index .. \n"
|
271
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
272
|
+
logger.info "\nSwap row column 3 and 5\n"
|
273
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
274
|
+
logger.info "\n\nMatrix Index"
|
275
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
def part_one
|
280
|
+
@binary_matrix.bm = @binary_matrix.compress([1], [10])
|
281
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(1, 10)
|
282
|
+
@binary_matrix.enter_cell_content([1, [10]], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
283
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [8], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
284
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [8], @binary_matrix.bmi.mi)
|
285
|
+
@binary_matrix.enter_cell_content([12], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
286
|
+
@binary_matrix.enter_cell_content([12], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
287
|
+
@binary_matrix.enter_cell_content([3], [5], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
288
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([3], [5], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
289
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([3], [5], @binary_matrix.bmi.mi)
|
290
|
+
end
|
291
|
+
|
292
|
+
|
293
|
+
describe "#enter_cell_content" do
|
294
|
+
it "will place a one in the selected matrix cell" do
|
295
|
+
part_one
|
296
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
297
|
+
puts "Enter 3 is north of 4"
|
298
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
299
|
+
puts "Matrix Index .. \n"
|
300
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
301
|
+
logger.info "\nEnter 3 is north of 4\n"
|
302
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
303
|
+
logger.info "\n\nMatrix Index"
|
304
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
|
309
|
+
describe "#swap_row_column" do
|
310
|
+
it "will swap the selected row and column" do
|
311
|
+
part_one
|
312
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
313
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
314
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
315
|
+
puts "Swap row column 4 and 3"
|
316
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
317
|
+
puts "Matrix Index .. \n"
|
318
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
319
|
+
logger.info "\nSwap row column 4 and 3\n"
|
320
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
321
|
+
logger.info "\n\nMatrix Index"
|
322
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
|
327
|
+
describe "#enter_cell_content" do
|
328
|
+
it "will enter a 1 into the selected matrix cell" do
|
329
|
+
part_one
|
330
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
331
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
332
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
333
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
334
|
+
puts "Enter 7 is north of 4"
|
335
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
336
|
+
puts "Matrix Index .. \n"
|
337
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
338
|
+
logger.info "\nEnter 7 is north of 4\n"
|
339
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
340
|
+
logger.info "\n\nMatrix Index"
|
341
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
345
|
+
describe "#swap_row_column" do
|
346
|
+
it "will swap the selected rows and columns" do
|
347
|
+
part_one
|
348
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
349
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
350
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
351
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
352
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
353
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
354
|
+
puts "Swap rows and columns 4 and 7"
|
355
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
356
|
+
puts "Matrix Index .. \n"
|
357
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
358
|
+
logger.info "\nSwap rows and columns 4 and 7\n"
|
359
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
360
|
+
logger.info "\n\nMatrix Index"
|
361
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
|
366
|
+
describe "#enter_cell_content" do
|
367
|
+
it "will enter a 1 in the selected matrix cell" do
|
368
|
+
part_one
|
369
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
370
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
371
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
372
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
373
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
374
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
375
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
376
|
+
puts "Enter 11 is north of 7"
|
377
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
378
|
+
puts "Matrix Index .. \n"
|
379
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
380
|
+
logger.info "\nEnter 11 is north of 7\n"
|
381
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
382
|
+
logger.info "\n\nMatrix Index"
|
383
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
describe "#swap_row_column" do
|
388
|
+
it "will swap the selected matrix cell" do
|
389
|
+
part_one
|
390
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
391
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
392
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
393
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
394
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
395
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
396
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
397
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
398
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
399
|
+
puts "Swap rows columns 11 and 7"
|
400
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
401
|
+
puts "Matrix Index .. \n"
|
402
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
403
|
+
logger.info "\nSwap rows columns 11 and 7\n"
|
404
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
405
|
+
logger.info "\n\nMatrix Index"
|
406
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
describe "#swap_row_column" do
|
411
|
+
it "will swap the selected matrix cell" do
|
412
|
+
part_one
|
413
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
414
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
415
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
416
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
417
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
418
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
419
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
420
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
421
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
422
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
423
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [11], @binary_matrix.bmi.mi)
|
424
|
+
puts "Swap rows columns 11 and 4"
|
425
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
426
|
+
puts "Matrix Index .. \n"
|
427
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
428
|
+
logger.info "\nSwap rows columns 11 and 4\n"
|
429
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
430
|
+
logger.info "\n\nMatrix Index"
|
431
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
432
|
+
end
|
433
|
+
end
|
434
|
+
|
435
|
+
describe "#swap_row_column" do
|
436
|
+
it "will swap the selected matrix cell" do
|
437
|
+
part_one
|
438
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
439
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
440
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
441
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
442
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
443
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
444
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
445
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
446
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
447
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
448
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [11], @binary_matrix.bmi.mi)
|
449
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
450
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
451
|
+
puts "Swap rows columns 7 and 4"
|
452
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
453
|
+
puts "Matrix Index .. \n"
|
454
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
455
|
+
logger.info "\nSwap rows columns 7 and 4\n"
|
456
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
457
|
+
logger.info "\n\nMatrix Index"
|
458
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
459
|
+
end
|
460
|
+
end
|
461
|
+
|
462
|
+
describe "#swap_row_column" do
|
463
|
+
it "will swap the selected matrix cell" do
|
464
|
+
part_one
|
465
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
466
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
467
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
468
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
469
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
470
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
471
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
472
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
473
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
474
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
475
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [11], @binary_matrix.bmi.mi)
|
476
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
477
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
478
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
479
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
480
|
+
puts "Swap rows columns 11 and 7"
|
481
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
482
|
+
puts "Matrix Index .. \n"
|
483
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
484
|
+
logger.info "\nSwap rows columns 11 and 7\n"
|
485
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
486
|
+
logger.info "\n\nMatrix Index"
|
487
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
def part_two
|
492
|
+
part_one
|
493
|
+
@binary_matrix.enter_cell_content([4], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
494
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [3], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
495
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [3], @binary_matrix.bmi.mi)
|
496
|
+
@binary_matrix.enter_cell_content([4], [7], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
497
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
498
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
499
|
+
@binary_matrix.enter_cell_content([7], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
500
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
501
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
502
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
503
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [11], @binary_matrix.bmi.mi)
|
504
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([4], [7], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
505
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([4], [7], @binary_matrix.bmi.mi)
|
506
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [11], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
507
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [11], @binary_matrix.bmi.mi)
|
508
|
+
end
|
509
|
+
|
510
|
+
|
511
|
+
describe "#enter_cell_content" do
|
512
|
+
it "will enter a 1 in the selected matrix cell" do
|
513
|
+
part_two
|
514
|
+
@binary_matrix.enter_cell_content([6], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
515
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
516
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
517
|
+
puts "Enter 11 is north of 6"
|
518
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
519
|
+
puts "Matrix Index .. \n"
|
520
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
521
|
+
logger.info "\nEnter 11 is north of 6\n"
|
522
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
523
|
+
logger.info "\n\nMatrix Index"
|
524
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
525
|
+
end
|
526
|
+
end
|
527
|
+
|
528
|
+
describe "#enter_cell_content" do
|
529
|
+
it "will enter a 1 in the selected matrix cell" do
|
530
|
+
part_two
|
531
|
+
@binary_matrix.enter_cell_content([6], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
532
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
533
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
534
|
+
@binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
535
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([6], [9], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
536
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
|
537
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
538
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
539
|
+
puts "Enter 9 is north of 6"
|
540
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
541
|
+
puts "Matrix Index .. \n"
|
542
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
543
|
+
logger.info "\nEnter 9 is north of 6\n"
|
544
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
545
|
+
logger.info "\n\nMatrix Index"
|
546
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
547
|
+
end
|
548
|
+
end
|
549
|
+
|
550
|
+
describe "#enter_cell_content" do
|
551
|
+
it "will enter a 1 in the selected matrix cell" do
|
552
|
+
part_two
|
553
|
+
@binary_matrix.enter_cell_content([6], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
554
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
555
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
556
|
+
@binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
557
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([6], [9], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
558
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
|
559
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
560
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
561
|
+
@binary_matrix.enter_cell_content([9], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
562
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
563
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
564
|
+
puts "Enter 2 is north of 9"
|
565
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
566
|
+
puts "Matrix Index .. \n"
|
567
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
568
|
+
logger.info "\nEnter 2 is north of 9\n"
|
569
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
570
|
+
logger.info "\n\nMatrix Index"
|
571
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
572
|
+
end
|
573
|
+
end
|
574
|
+
|
575
|
+
def part_three
|
576
|
+
part_two
|
577
|
+
@binary_matrix.enter_cell_content([6], [11], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
578
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
579
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
580
|
+
@binary_matrix.enter_cell_content([6], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
581
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([6], [9], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
582
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([6], [9], @binary_matrix.bmi.mi)
|
583
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
584
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
585
|
+
@binary_matrix.enter_cell_content([9], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
586
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
587
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
588
|
+
end
|
589
|
+
|
590
|
+
describe "#enter_cell_content" do
|
591
|
+
it "will enter a 1 in the selected matrix cell" do
|
592
|
+
part_three
|
593
|
+
@binary_matrix.enter_cell_content([2], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
594
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
595
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
596
|
+
puts "Enter 2 is north of 8"
|
597
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
598
|
+
puts "Matrix Index .. \n"
|
599
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
600
|
+
logger.info "\nEnter 2 is north of 8\n"
|
601
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
602
|
+
logger.info "\n\nMatrix Index"
|
603
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
604
|
+
end
|
605
|
+
end
|
606
|
+
|
607
|
+
describe "#enter_cell_content" do
|
608
|
+
it "will enter a 1 in the selected matrix cell" do
|
609
|
+
part_three
|
610
|
+
@binary_matrix.enter_cell_content([2], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
611
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
612
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
613
|
+
@binary_matrix.enter_cell_content([5], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
614
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
615
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
616
|
+
puts "Enter 2 is north of 5"
|
617
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
618
|
+
puts "Matrix Index .. \n"
|
619
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
620
|
+
logger.info "\nEnter 2 is north of 5\n"
|
621
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
622
|
+
logger.info "\n\nMatrix Index"
|
623
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
624
|
+
end
|
625
|
+
end
|
626
|
+
|
627
|
+
describe "#compress" do
|
628
|
+
it "will compress row columns 5 and 11 into row columns 5" do
|
629
|
+
part_three
|
630
|
+
@binary_matrix.enter_cell_content([2], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
631
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
632
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
633
|
+
@binary_matrix.enter_cell_content([5], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
634
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
635
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
636
|
+
@binary_matrix.bm = @binary_matrix.compress([5], [11])
|
637
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(5, 11)
|
638
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
639
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
640
|
+
puts "Compress 5 and 11 into 5"
|
641
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
642
|
+
puts "Matrix Index .. \n"
|
643
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
644
|
+
logger.info "\nCompress 5 and 11 into 5\n"
|
645
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
646
|
+
logger.info "\n\nMatrix Index"
|
647
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
describe "#enter_cell_content" do
|
652
|
+
it "will enter a 1 into the selected matrix cell" do
|
653
|
+
part_three
|
654
|
+
@binary_matrix.enter_cell_content([2], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
655
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
656
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
657
|
+
@binary_matrix.enter_cell_content([5], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
658
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
659
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
660
|
+
@binary_matrix.bm = @binary_matrix.compress([5], [11])
|
661
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(5, 11)
|
662
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
663
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
664
|
+
@binary_matrix.enter_cell_content([1, [10]], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
665
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
666
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
667
|
+
puts "Enter 2 is north of 1-10"
|
668
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
669
|
+
puts "Matrix Index .. \n"
|
670
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
671
|
+
logger.info "\nEnter 2 is north of 1-10\n"
|
672
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
673
|
+
logger.info "\n\nMatrix Index"
|
674
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
def part_four
|
679
|
+
part_three
|
680
|
+
@binary_matrix.enter_cell_content([2], [8], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
681
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
682
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
683
|
+
@binary_matrix.enter_cell_content([5], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
684
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
685
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
686
|
+
@binary_matrix.bm = @binary_matrix.compress([5], [11])
|
687
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(5, 11)
|
688
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
689
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
690
|
+
@binary_matrix.enter_cell_content([1, [10]], [2], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
691
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
692
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
693
|
+
end
|
694
|
+
|
695
|
+
describe "#enter_cell_content" do
|
696
|
+
it "will enter a 1 into the selected matrix cell" do
|
697
|
+
part_four
|
698
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
699
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
700
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
701
|
+
puts "Enter 3 is north of 9"
|
702
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
703
|
+
puts "Matrix Index .. \n"
|
704
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
705
|
+
logger.info "\nEnter 3 is north of 9\n"
|
706
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
707
|
+
logger.info "\n\nMatrix Index"
|
708
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
709
|
+
end
|
710
|
+
end
|
711
|
+
|
712
|
+
describe "#enter_cell_content" do
|
713
|
+
it "will enter a 1 into the selected matrix cell" do
|
714
|
+
part_four
|
715
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
716
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
717
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
718
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
719
|
+
puts "Enter 3 is north of 7"
|
720
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
721
|
+
puts "Matrix Index .. \n"
|
722
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
723
|
+
logger.info "\nEnter 3 is north of 7\n"
|
724
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
725
|
+
logger.info "\n\nMatrix Index"
|
726
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
727
|
+
end
|
728
|
+
end
|
729
|
+
|
730
|
+
describe "#enter_cell_content" do
|
731
|
+
it "will enter a 1 into the selected matrix cell" do
|
732
|
+
part_four
|
733
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
734
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
735
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
736
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
737
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
738
|
+
puts "Enter 9 is north of 7"
|
739
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
740
|
+
puts "Matrix Index .. \n"
|
741
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
742
|
+
logger.info "\nEnter 9 is north of 7\n"
|
743
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
744
|
+
logger.info "\n\nMatrix Index"
|
745
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
746
|
+
end
|
747
|
+
end
|
748
|
+
|
749
|
+
describe "#compress" do
|
750
|
+
it "will compress row columns 3 and 6 into 3" do
|
751
|
+
part_four
|
752
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
753
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
754
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
755
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
756
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
757
|
+
@binary_matrix.bm = @binary_matrix.compress([3], [6])
|
758
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(3, 6)
|
759
|
+
puts "Compress 3 and 6 into 3"
|
760
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
761
|
+
puts "Matrix Index .. \n"
|
762
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
763
|
+
logger.info "\nCompress 3 and 6b into 3\n"
|
764
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
765
|
+
logger.info "\n\nMatrix Index"
|
766
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
767
|
+
end
|
768
|
+
end
|
769
|
+
|
770
|
+
describe "#swap_row_column" do
|
771
|
+
it "will swap_row_column 1-10 and 3-6 " do
|
772
|
+
part_four
|
773
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
774
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
775
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
776
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
777
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
778
|
+
@binary_matrix.bm = @binary_matrix.compress([3], [6])
|
779
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(3, 6)
|
780
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
781
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [3, [6]], @binary_matrix.bmi.mi)
|
782
|
+
puts "Swap rows columns 1-10 and 3-6"
|
783
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
784
|
+
puts "Matrix Index .. \n"
|
785
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
786
|
+
logger.info "\nCompress 3 and 6b into 3\n"
|
787
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
788
|
+
logger.info "\n\nMatrix Index"
|
789
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
790
|
+
end
|
791
|
+
end
|
792
|
+
|
793
|
+
describe "#enter_cell_content" do
|
794
|
+
it "will enter a 1 in the selected matrix cell" do
|
795
|
+
part_four
|
796
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
797
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
798
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
799
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
800
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
801
|
+
@binary_matrix.bm = @binary_matrix.compress([3], [6])
|
802
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(3, 6)
|
803
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
804
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [3, [6]], @binary_matrix.bmi.mi)
|
805
|
+
@binary_matrix.enter_cell_content([9], [3, [6]], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
806
|
+
puts "Enter 3-6 is north of 9"
|
807
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
808
|
+
puts "Matrix Index .. \n"
|
809
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
810
|
+
logger.info "\nEnter 3-6 is north of 9\n"
|
811
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
812
|
+
logger.info "\n\nMatrix Index"
|
813
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
814
|
+
end
|
815
|
+
end
|
816
|
+
|
817
|
+
describe "#swap_row_column" do
|
818
|
+
it "will swap rows and column 3-6 and 9" do
|
819
|
+
part_four
|
820
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
821
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
822
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
823
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
824
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
825
|
+
@binary_matrix.bm = @binary_matrix.compress([3], [6])
|
826
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(3, 6)
|
827
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
828
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [3, [6]], @binary_matrix.bmi.mi)
|
829
|
+
@binary_matrix.enter_cell_content([9], [3, [6]], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
830
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([9], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
831
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [3, [6]], @binary_matrix.bmi.mi)
|
832
|
+
puts "Enter 3-6 is north of 9"
|
833
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
834
|
+
puts "Matrix Index .. \n"
|
835
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
836
|
+
logger.info "\nEnter 3-6 is north of 9\n"
|
837
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
838
|
+
logger.info "\n\nMatrix Index"
|
839
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
840
|
+
end
|
841
|
+
end
|
842
|
+
|
843
|
+
def part_five
|
844
|
+
part_four
|
845
|
+
@binary_matrix.enter_cell_content([9], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
846
|
+
@binary_matrix.bm = @binary_matrix.reachability_matrix(@binary_matrix.bm) # infer data
|
847
|
+
@binary_matrix.bm = @binary_matrix.subtract_id_matrix(@binary_matrix.bm)
|
848
|
+
@binary_matrix.enter_cell_content([7], [3], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
849
|
+
@binary_matrix.enter_cell_content([7], [9], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
850
|
+
@binary_matrix.bm = @binary_matrix.compress([3], [6])
|
851
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(3, 6)
|
852
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([1, [10]], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
853
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([1, [10]], [3, [6]], @binary_matrix.bmi.mi)
|
854
|
+
@binary_matrix.enter_cell_content([9], [3, [6]], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
855
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([9], [3, [6]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
856
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([9], [3, [6]], @binary_matrix.bmi.mi)
|
857
|
+
end
|
858
|
+
|
859
|
+
describe "#compress" do
|
860
|
+
it "will compress rows and columns 9 and 12" do
|
861
|
+
part_five
|
862
|
+
@binary_matrix.bm = @binary_matrix.compress([9], [12])
|
863
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(9, 12)
|
864
|
+
puts "Compress row and columns 9 and 12"
|
865
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
866
|
+
puts "Matrix Index .. \n"
|
867
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
868
|
+
logger.info "\nCompress rows and columns 9 and 12\n"
|
869
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
870
|
+
logger.info "\n\nMatrix Index"
|
871
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
872
|
+
end
|
873
|
+
end
|
874
|
+
|
875
|
+
describe "#enter_cell_content" do
|
876
|
+
it "will enter a 1 in the selected matrix cell" do
|
877
|
+
part_five
|
878
|
+
@binary_matrix.bm = @binary_matrix.compress([9], [12])
|
879
|
+
@binary_matrix.bmi.mi = @binary_matrix.bmi.compress_index(9, 12)
|
880
|
+
@binary_matrix.enter_cell_content([7], [9, [12]], 1, @binary_matrix.bm, @binary_matrix.bmi.mi)
|
881
|
+
@binary_matrix.bm = @binary_matrix.swap_row_column([7], [9, [12]], @binary_matrix.bm, @binary_matrix.bmi.mi)
|
882
|
+
@binary_matrix.bmi.mi = @binary_matrix.swap_index([7], [9, [12]], @binary_matrix.bmi.mi)
|
883
|
+
puts "Enter 9-12 north of 7"
|
884
|
+
puts @binary_matrix.bm.to_a.map(&:inspect)
|
885
|
+
puts "Matrix Index .. \n"
|
886
|
+
p @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
887
|
+
logger.info "\nEnter 9-12 north of 7\n"
|
888
|
+
"#{@binary_matrix.bm.to_a.each{ |r| logger.info r.inspect } }"
|
889
|
+
logger.info "\n\nMatrix Index"
|
890
|
+
logger.info @binary_matrix.bmi.mi.to_a.map(&:inspect)
|
891
|
+
end
|
892
|
+
end
|
893
|
+
|
894
|
+
|
895
|
+
end
|