boggle_solver 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.
Binary file
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.summary = "Find all words in a letter matrix"
4
4
  s.description = "File.read(File.join(File.dirname(__FILE__), 'README'))"
5
5
  s.requirements = "[ 'An installed dictionary (most Unix systems have one)']"
6
- s.version = "0.0.1"
6
+ s.version = "0.0.2"
7
7
  s.author = "Casey Robinson"
8
8
  s.email = "kc@rampantmonkey.com"
9
9
  s.homepage = "http://rampantmonkey.com"
@@ -1,6 +1,7 @@
1
1
  module BoggleSolver
2
2
 
3
3
  class AdjacencyMatrix
4
+ attr_reader :visited, :finished
4
5
 
5
6
  def initialize( n = 2 )
6
7
  @m = Array.new(n, 0)
@@ -42,7 +43,6 @@ module BoggleSolver
42
43
 
43
44
  def depth_first_search_visit(u, *)
44
45
  @visited[u] = 1
45
- puts u
46
46
  adjacent(u).each { |v| depth_first_search_visit(v) if @visited[v].nil?}
47
47
  @finished[u] = 1
48
48
  end
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+
3
+ module Anagram
4
+ class Options
5
+
6
+ DEFAULT_DICTIONARY = "/usr/share/dict/words"
@@ -0,0 +1,93 @@
1
+ require 'test/unit'
2
+ require 'shoulda'
3
+ require_relative '../lib/boggle_solver/adjacency_matrix'
4
+
5
+ class TestAdjacencyMatrix < Test::Unit::TestCase
6
+
7
+ context "basics" do
8
+ setup do
9
+ @matrix = BoggleSolver::AdjacencyMatrix.new(4)
10
+ end
11
+
12
+ should "print matrix as square" do
13
+ assert_equal "0 0 0 0 \n0 0 0 0 \n0 0 0 0 \n0 0 0 0 ", @matrix.to_s
14
+ end
15
+ end
16
+
17
+ context "directed edges" do
18
+ setup do
19
+ @matrix = BoggleSolver::AdjacencyMatrix.new(4)
20
+ end
21
+
22
+ should "add one directed edge from v1 to v3" do
23
+ @matrix.add_directed_edge(1,3)
24
+ assert_equal "0 0 0 0 \n0 0 0 1 \n0 0 0 0 \n0 0 0 0 ", @matrix.to_s
25
+ end
26
+
27
+ should "add weighted directed edge from v3 to v1" do
28
+ @matrix.add_directed_edge(3,1, 7)
29
+ assert_equal "0 0 0 0 \n0 0 0 0 \n0 0 0 0 \n0 7 0 0 ", @matrix.to_s
30
+ end
31
+
32
+ should "store multiple directed edges" do
33
+ @matrix.add_directed_edge(2,1)
34
+ @matrix.add_directed_edge(3,1)
35
+ @matrix.add_directed_edge(0,3)
36
+ assert_equal "0 0 0 1 \n0 0 0 0 \n0 1 0 0 \n0 1 0 0 ", @matrix.to_s
37
+ end
38
+ end
39
+
40
+ context "undirected edges" do
41
+ setup do
42
+ @matrix = BoggleSolver::AdjacencyMatrix.new(4)
43
+ end
44
+
45
+ should "add undirected edge between v0 and v2" do
46
+ @matrix.add_edge(0,2)
47
+ assert_equal "0 0 1 0 \n0 0 0 0 \n1 0 0 0 \n0 0 0 0 ", @matrix.to_s
48
+ end
49
+
50
+ should "add weighted undirected edge between v0 and v2" do
51
+ @matrix.add_edge(0,2,8)
52
+ assert_equal "0 0 8 0 \n0 0 0 0 \n8 0 0 0 \n0 0 0 0 ", @matrix.to_s
53
+ end
54
+ end
55
+
56
+ context "adjacent" do
57
+ setup do
58
+ @n = 5
59
+ @matrix = BoggleSolver::AdjacencyMatrix.new(@n)
60
+ end
61
+
62
+ should "return empty array since no edges have been added" do
63
+ (0...@n).each { |i| assert_equal [], @matrix.adjacent(i)}
64
+ end
65
+
66
+ should "add 3 edges" do
67
+ @matrix.add_edge(0,1)
68
+ @matrix.add_edge(0,2)
69
+ @matrix.add_edge(0,4)
70
+ assert_equal [1,2,4], @matrix.adjacent(0)
71
+ assert_equal [0], @matrix.adjacent(1)
72
+ assert_equal [0], @matrix.adjacent(2)
73
+ assert_equal [], @matrix.adjacent(3)
74
+ assert_equal [0], @matrix.adjacent(4)
75
+ end
76
+ end
77
+
78
+ context "depth first search" do
79
+ setup do
80
+ @n = 5
81
+ @matrix = BoggleSolver::AdjacencyMatrix.new(@n)
82
+ @matrix.depth_first_search
83
+ end
84
+
85
+ should "visit all verticies" do
86
+ (0...@n).each { |i| assert_not_nil @matrix.visited[i] }
87
+ end
88
+
89
+ should "finish all verticies" do
90
+ (0...@n).each { |i| assert_not_nil @matrix.finished[i] }
91
+ end
92
+ end
93
+ end
@@ -0,0 +1 @@
1
+
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boggle_solver
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Casey Robinson
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-15 00:00:00.000000000Z
12
+ date: 2012-05-15 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: File.read(File.join(File.dirname(__FILE__), 'README'))
15
15
  email: kc@rampantmonkey.com
@@ -18,37 +18,41 @@ executables:
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - bin/boggle_solver
21
22
  - boggle_solver-0.0.1.gem
22
23
  - boggle_solver.gemspec
23
- - README.markdown
24
- - bin/boggle_solver
25
24
  - lib/boggle_solver/adjacency_matrix.rb
26
25
  - lib/boggle_solver/board.rb
26
+ - lib/boggle_solver/options.rb
27
27
  - lib/boggle_solver/runner.rb
28
+ - README.markdown
29
+ - test/test_adjacency_matrix.rb
30
+ - test/test_board.rb
28
31
  homepage: http://rampantmonkey.com
29
32
  licenses: []
30
- post_install_message:
33
+ post_install_message:
31
34
  rdoc_options: []
32
35
  require_paths:
33
36
  - lib
34
37
  required_ruby_version: !ruby/object:Gem::Requirement
38
+ none: false
35
39
  requirements:
36
40
  - - ! '>='
37
41
  - !ruby/object:Gem::Version
38
42
  version: '1.9'
39
- none: false
40
43
  required_rubygems_version: !ruby/object:Gem::Requirement
44
+ none: false
41
45
  requirements:
42
46
  - - ! '>='
43
47
  - !ruby/object:Gem::Version
44
48
  version: '0'
45
- none: false
46
49
  requirements:
47
50
  - ! '[ ''An installed dictionary (most Unix systems have one)'']'
48
- rubyforge_project:
49
- rubygems_version: 1.8.15
50
- signing_key:
51
+ rubyforge_project:
52
+ rubygems_version: 1.8.22
53
+ signing_key:
51
54
  specification_version: 3
52
55
  summary: Find all words in a letter matrix
53
- test_files: []
54
- ...
56
+ test_files:
57
+ - test/test_adjacency_matrix.rb
58
+ - test/test_board.rb