exc1_sum_squares 0.0.1 → 0.0.2

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.
data/.project CHANGED
@@ -5,6 +5,11 @@
5
5
  <projects>
6
6
  </projects>
7
7
  <buildSpec>
8
+ <buildCommand>
9
+ <name>com.aptana.ide.core.unifiedBuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
8
13
  </buildSpec>
9
14
  <natures>
10
15
  <nature>com.aptana.ruby.core.rubynature</nature>
data/bin/exc1_sum_squares CHANGED
@@ -22,7 +22,11 @@ class Exc1SumSquaresRunner < Thor
22
22
 
23
23
  desc "solve", "Solves the min and max square values of a 2D array"
24
24
  def solve(input)
25
- s = Exc1SumSquares.solve(input)
25
+ # first we need to get the string and convert it into an array...
26
+ yaml_array = input.gsub(/(\,)(\S)/, "\\1 \\2")
27
+ array = YAML::load(yaml_array)
28
+
29
+ s = Exc1SumSquares.solve(array)
26
30
 
27
31
  output = "Min: #{s.min}\nMax: #{s.max}"
28
32
  puts output
@@ -1,6 +1,6 @@
1
1
  module Exc1SumSquares
2
2
  class Solver
3
- attr_reader :sums, :min, :max, :matrix
3
+ attr_reader :sums, :min, :max, :matrix, :min_slots, :max_slots
4
4
 
5
5
  def matrix=(val)
6
6
  @matrix = val
@@ -11,12 +11,12 @@ module Exc1SumSquares
11
11
 
12
12
  def min
13
13
  calculate_sums unless @matrix.empty?
14
- @sums.min
14
+ @min
15
15
  end
16
16
 
17
17
  def max
18
18
  calculate_sums unless @matrix.empty?
19
- @sums.max
19
+ @max
20
20
  end
21
21
 
22
22
  def sums
@@ -34,8 +34,36 @@ module Exc1SumSquares
34
34
  validate_matrix
35
35
 
36
36
  @sums = choose_the_top_and_bottom_rows_to_calculate(@matrix)
37
+ @min = @sums.min
38
+ @max = @sums.max
39
+ @min_slots = calculate_min_slots(@matrix)
40
+ @max_slots = calculate_max_slots(@matrix)
37
41
  end
38
42
 
43
+ # Find out which slots of the sums array count as minimum slots
44
+ def calculate_min_slots(matrix)
45
+ output = []
46
+ @sums.each.with_index do |e, i|
47
+ if e == @min
48
+ output << i
49
+ end
50
+ end
51
+ #require 'pry';binding.pry
52
+ output
53
+ end
54
+
55
+ # Find out which slots of the sums array count as maximum slots
56
+ def calculate_max_slots(matrix)
57
+ output = []
58
+ @sums.each.with_index do |e, i|
59
+ if e == @max
60
+ output << i
61
+ end
62
+ end
63
+ output
64
+ end
65
+
66
+
39
67
  def choose_the_top_and_bottom_rows_to_calculate(matrix)
40
68
  sums = []
41
69
  for i in 0...(matrix.length-1) do
@@ -1,3 +1,3 @@
1
1
  module Exc1SumSquares
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -5,10 +5,7 @@ require 'yaml'
5
5
 
6
6
  module Exc1SumSquares
7
7
  def self.solve(input)
8
- yaml_array = input.gsub(/(\,)(\S)/, "\\1 \\2")
9
- array = YAML::load(yaml_array)
10
-
11
- s = Exc1SumSquares::Solver.new array
8
+ s = Exc1SumSquares::Solver.new input
12
9
 
13
10
  return s
14
11
  end
@@ -3,7 +3,7 @@ require 'exc1_sum_squares'
3
3
 
4
4
  describe Exc1SumSquares do
5
5
  it 'should solve a problem' do
6
- output = Exc1SumSquares::solve('[ [1, 2, 3, 4], [5, 6, 7, 8] ]')
6
+ output = Exc1SumSquares::solve([ [1, 2, 3, 4], [5, 6, 7, 8] ])
7
7
  output.min.should be 14
8
8
  output.max.should be 22
9
9
  end
@@ -10,6 +10,7 @@ describe Exc1SumSquares::Solver do
10
10
  [9, 2, 0, 4, 6],
11
11
  [1, 2, 6, 1, 0] ]
12
12
  @solver = Exc1SumSquares::Solver.new @test_array
13
+ @solver.calculate_sums
13
14
  end
14
15
 
15
16
  describe @solver do
@@ -29,7 +30,6 @@ describe Exc1SumSquares::Solver do
29
30
  end
30
31
 
31
32
  its(:sums) {
32
- #require 'pry'; binding.pry
33
33
  @solver.sums.should be_a_kind_of Array
34
34
  }
35
35
 
@@ -49,6 +49,14 @@ describe Exc1SumSquares::Solver do
49
49
  @solver.max.should eq(26)
50
50
  end
51
51
 
52
+ it '.min_slots should contain an array of slots which constitute the minimum of the sums array' do
53
+ @solver.min_slots.should eq [9]
54
+ end
55
+
56
+ it '.max_slots should be the correct answer' do
57
+ @solver.max_slots.should eq [1]
58
+ end
59
+
52
60
  end
53
61
 
54
62
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exc1_sum_squares
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-20 00:00:00.000000000 Z
12
+ date: 2012-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake