maze-solver 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +3 -4
- data/Gemfile +5 -10
- data/README.md +8 -3
- data/Rakefile +4 -1
- data/bin/{maze-solver → maze_solver} +1 -1
- data/lib/maze_solver.rb +2 -2
- data/lib/maze_solver/version.rb +2 -1
- data/maze_solver.gemspec +3 -2
- data/spec/maze_solver_spec.rb +17 -11
- data/spec/spec_helper.rb +2 -2
- metadata +15 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 65b2b4ce587ffb4460108ae78224764f56c4b7e0
|
4
|
+
data.tar.gz: d3e457a32167c377d2ae1cfcbbbed1a61660c0be
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fb92956349f9510af3b887cc6d208a51b427763bda1325a8968d54fd20c65e2ae29613be42cbec309aeabdc16d90323b822e18266e6345a4160c2d86c5b6413f
|
7
|
+
data.tar.gz: 82aca0db7cc21e38cc64f503133226e7f01522ddede93bf607ab1af8a519fad4ab63598222778b9807c8c75c70b747aaa528a2251d5899586caa662d6143f620
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -4,16 +4,11 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
gemspec
|
6
6
|
|
7
|
-
gem 'cane',
|
8
|
-
gem 'churn',
|
7
|
+
gem 'cane', require: false
|
8
|
+
gem 'churn', require: false
|
9
9
|
gem 'coveralls', require: false
|
10
|
-
gem 'json'
|
10
|
+
gem 'json'
|
11
11
|
gem 'rake'
|
12
12
|
gem 'rspec'
|
13
|
-
|
14
|
-
|
15
|
-
gem 'racc'
|
16
|
-
gem 'iconv'
|
17
|
-
gem 'rubinius-coverage'
|
18
|
-
gem 'rubysl', '~> 2.0'
|
19
|
-
end
|
13
|
+
gem 'rspec-its'
|
14
|
+
gem 'rubocop'
|
data/README.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
# Maze Solver
|
1
|
+
# Maze Solver
|
2
|
+
[![Build Status](https://travis-ci.org/johnsyweb/ruby_maze_solver.png)](https://travis-ci.org/johnsyweb/ruby_maze_solver)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/maze-solver.png)](http://badge.fury.io/rb/maze-solver)
|
4
|
+
[![Dependency Status](https://gemnasium.com/johnsyweb/ruby_maze_solver.png)](https://gemnasium.com/johnsyweb/ruby_maze_solver)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/johnsyweb/ruby_maze_solver.png)](https://codeclimate.com/github/johnsyweb/ruby_maze_solver)
|
6
|
+
[![Coverage Status](https://coveralls.io/repos/johnsyweb/ruby_maze_solver/badge.png?branch=master)](https://coveralls.io/r/johnsyweb/ruby_maze_solver?branch=master)
|
2
7
|
|
3
8
|
Written as an exercise in applying Ruby, this project solves mazes:
|
4
9
|
|
5
|
-
|
10
|
+
maze_solver etc/demo.maze 18 0 38 0
|
6
11
|
About to solve your 40x14 maze from (18, 0) to (38,0).
|
7
12
|
GO!
|
8
13
|
Solved!
|
@@ -31,7 +36,7 @@ Maze Solver is available from
|
|
31
36
|
|
32
37
|
## Usage
|
33
38
|
|
34
|
-
$
|
39
|
+
$ maze_solver filename start_x start_y end_x end_y
|
35
40
|
|
36
41
|
## Contributing
|
37
42
|
|
data/Rakefile
CHANGED
@@ -2,9 +2,12 @@
|
|
2
2
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
+
require 'rubocop/rake_task'
|
6
|
+
|
7
|
+
RuboCop::RakeTask.new
|
5
8
|
|
6
9
|
RSpec::Core::RakeTask.new('spec')
|
7
|
-
task default: [:spec]
|
10
|
+
task default: [:spec, :rubocop]
|
8
11
|
|
9
12
|
begin
|
10
13
|
require 'cane/rake_task'
|
@@ -7,7 +7,7 @@ require 'maze_solver'
|
|
7
7
|
|
8
8
|
def main(filename, start_x, start_y, end_x, end_y)
|
9
9
|
maze = MazeSolver::MazeSolver.new(from_file: filename)
|
10
|
-
puts "About to solve your #{maze.width}x#{maze.height} maze from "
|
10
|
+
puts "About to solve your #{maze.width}x#{maze.height} maze from " \
|
11
11
|
"(#{start_x}, #{start_y}) to (#{end_x},#{end_y})."
|
12
12
|
puts 'GO!'
|
13
13
|
if maze.solve start_x.to_i, start_y.to_i, end_x.to_i, end_y.to_i
|
data/lib/maze_solver.rb
CHANGED
@@ -24,7 +24,7 @@ module MazeSolver
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def width
|
27
|
-
grid.map
|
27
|
+
grid.map(&:length).max
|
28
28
|
end
|
29
29
|
|
30
30
|
def visitable?(x, y)
|
@@ -71,7 +71,7 @@ module MazeSolver
|
|
71
71
|
|
72
72
|
def from_file(filename)
|
73
73
|
grid = File.open(filename, 'r').readlines
|
74
|
-
grid.each
|
74
|
+
grid.each(&:strip!)
|
75
75
|
end
|
76
76
|
|
77
77
|
private
|
data/lib/maze_solver/version.rb
CHANGED
data/maze_solver.gemspec
CHANGED
@@ -13,7 +13,8 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.homepage = 'https://github.com/johnsyweb/ruby_maze_solver#readme'
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
|
-
gem.executables = gem.files.grep(
|
17
|
-
gem.test_files = gem.files.grep(
|
16
|
+
gem.executables = gem.files.grep(/^bin\//).map { |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(/^(test|spec|features)\//)
|
18
18
|
gem.require_paths = ['lib']
|
19
|
+
gem.licenses = 'MIT'
|
19
20
|
end
|
data/spec/maze_solver_spec.rb
CHANGED
@@ -4,7 +4,8 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
describe MazeSolver::MazeSolver do
|
6
6
|
context 'a simple 8 x 3 maze' do
|
7
|
-
let(:grid) do
|
7
|
+
let(:grid) do
|
8
|
+
<<-GRID
|
8
9
|
********
|
9
10
|
|
10
11
|
********
|
@@ -13,8 +14,8 @@ GRID
|
|
13
14
|
|
14
15
|
subject(:maze) { described_class.new(from_grid: grid) }
|
15
16
|
|
16
|
-
its(:width) { should
|
17
|
-
its(:height) { should
|
17
|
+
its(:width) { should be 8 }
|
18
|
+
its(:height) { should be 3 }
|
18
19
|
|
19
20
|
it 'is possible to visit an empty space' do
|
20
21
|
expect(maze).to be_visitable(0, 1)
|
@@ -40,16 +41,16 @@ GRID
|
|
40
41
|
end
|
41
42
|
|
42
43
|
it 'is soluble' do
|
43
|
-
expect(maze.solve(0, 1, 7, 1)).to
|
44
|
+
expect(maze.solve(0, 1, 7, 1)).to be true
|
44
45
|
end
|
45
46
|
|
46
47
|
it 'is soluble backwards' do
|
47
|
-
expect(maze.solve(7, 1, 0, 1)).to
|
48
|
+
expect(maze.solve(7, 1, 0, 1)).to be true
|
48
49
|
end
|
49
50
|
|
50
51
|
it 'is printable' do
|
51
|
-
expect(maze.to_s).to eq "********\n"
|
52
|
-
" \n"
|
52
|
+
expect(maze.to_s).to eq "********\n" \
|
53
|
+
" \n" \
|
53
54
|
"********\n"
|
54
55
|
end
|
55
56
|
|
@@ -80,7 +81,7 @@ GRID
|
|
80
81
|
subject(:maze) { described_class.new(from_grid: grid) }
|
81
82
|
|
82
83
|
it 'is soluble' do
|
83
|
-
expect(maze.solve(0, 1, 3, 3)).to
|
84
|
+
expect(maze.solve(0, 1, 3, 3)).to be true
|
84
85
|
end
|
85
86
|
end
|
86
87
|
|
@@ -101,7 +102,7 @@ GRID
|
|
101
102
|
subject(:maze) { described_class.new(from_grid: grid) }
|
102
103
|
|
103
104
|
it 'is insoluble' do
|
104
|
-
expect(maze.solve(0, 1, 3, 3)).to
|
105
|
+
expect(maze.solve(0, 1, 3, 3)).to be false
|
105
106
|
end
|
106
107
|
end
|
107
108
|
|
@@ -119,11 +120,16 @@ GRID
|
|
119
120
|
)
|
120
121
|
end
|
121
122
|
|
122
|
-
before
|
123
|
+
before do
|
124
|
+
expect(File)
|
125
|
+
.to receive(:open)
|
126
|
+
.with('test.maze', 'r')
|
127
|
+
.and_return(test_maze)
|
128
|
+
end
|
123
129
|
|
124
130
|
it 'is creatable' do
|
125
131
|
maze = MazeSolver::MazeSolver.new(from_file: 'test.maze')
|
126
|
-
expect(maze.solve(18, 0, 12, 6)).to
|
132
|
+
expect(maze.solve(18, 0, 12, 6)).to be true
|
127
133
|
end
|
128
134
|
end
|
129
135
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,12 +3,12 @@
|
|
3
3
|
require 'coveralls'
|
4
4
|
Coveralls.wear!
|
5
5
|
|
6
|
-
require 'rubygems'
|
7
6
|
require 'bundler/setup'
|
8
7
|
require 'maze_solver'
|
8
|
+
require 'rspec/its'
|
9
|
+
require 'rubygems'
|
9
10
|
|
10
11
|
RSpec.configure do |config|
|
11
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
12
12
|
config.run_all_when_everything_filtered = true
|
13
13
|
config.order = 'random'
|
14
14
|
end
|
metadata
CHANGED
@@ -1,33 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maze-solver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Pete Johns
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-12-01 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: A gem to solve a 2D maze.
|
15
14
|
email:
|
16
15
|
- paj-github@johnsy.com
|
17
16
|
executables:
|
18
|
-
-
|
17
|
+
- maze_solver
|
19
18
|
extensions: []
|
20
19
|
extra_rdoc_files: []
|
21
20
|
files:
|
22
|
-
- .coveralls.yml
|
23
|
-
- .gitignore
|
24
|
-
- .rspec
|
25
|
-
- .travis.yml
|
21
|
+
- ".coveralls.yml"
|
22
|
+
- ".gitignore"
|
23
|
+
- ".rspec"
|
24
|
+
- ".travis.yml"
|
26
25
|
- Gemfile
|
27
26
|
- LICENSE.txt
|
28
27
|
- README.md
|
29
28
|
- Rakefile
|
30
|
-
- bin/
|
29
|
+
- bin/maze_solver
|
31
30
|
- etc/demo.maze
|
32
31
|
- lib/maze_solver.rb
|
33
32
|
- lib/maze_solver/version.rb
|
@@ -35,30 +34,29 @@ files:
|
|
35
34
|
- spec/maze_solver_spec.rb
|
36
35
|
- spec/spec_helper.rb
|
37
36
|
homepage: https://github.com/johnsyweb/ruby_maze_solver#readme
|
38
|
-
licenses:
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
39
40
|
post_install_message:
|
40
41
|
rdoc_options: []
|
41
42
|
require_paths:
|
42
43
|
- lib
|
43
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
50
|
requirements:
|
52
|
-
- -
|
51
|
+
- - ">="
|
53
52
|
- !ruby/object:Gem::Version
|
54
53
|
version: '0'
|
55
54
|
requirements: []
|
56
55
|
rubyforge_project:
|
57
|
-
rubygems_version:
|
56
|
+
rubygems_version: 2.2.2
|
58
57
|
signing_key:
|
59
|
-
specification_version:
|
58
|
+
specification_version: 4
|
60
59
|
summary: Written as an exercise
|
61
60
|
test_files:
|
62
61
|
- spec/maze_solver_spec.rb
|
63
62
|
- spec/spec_helper.rb
|
64
|
-
has_rdoc:
|