boggle_solver 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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