golr 0.5.2 → 0.5.3
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/lib/golr.rb +2 -1
- data/lib/golr/game.rb +9 -13
- data/lib/golr/game_printer.rb +2 -7
- data/lib/golr/version.rb +1 -1
- metadata +7 -7
data/lib/golr.rb
CHANGED
data/lib/golr/game.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
|
-
require 'golr/key'
|
2
|
-
require 'golr/rules'
|
3
|
-
|
4
1
|
module Golr
|
5
2
|
class Game
|
6
3
|
|
7
|
-
attr_reader :grid, :columns, :rows
|
4
|
+
attr_reader :grid, :columns, :rows
|
8
5
|
|
9
6
|
def initialize(columns, rows, living_cells = [])
|
10
7
|
@columns = columns
|
@@ -15,15 +12,14 @@ module Golr
|
|
15
12
|
|
16
13
|
def init_grid(living_cells = [])
|
17
14
|
new_grid = {}
|
18
|
-
|
19
|
-
|
15
|
+
(1..@columns).map do |x|
|
16
|
+
(1..@rows).map do |y|
|
20
17
|
key = Key.key(x, y)
|
21
18
|
new_grid[key] = living_cells.include?(key) ? true : false
|
22
19
|
end
|
23
20
|
end
|
24
21
|
new_grid
|
25
22
|
end
|
26
|
-
|
27
23
|
|
28
24
|
def evolve
|
29
25
|
next_grid = init_grid
|
@@ -39,8 +35,8 @@ module Golr
|
|
39
35
|
end
|
40
36
|
|
41
37
|
def living_neighbors(key)
|
42
|
-
living_neighbors = neighboring_keys(key).
|
43
|
-
result += 1 if alive?(
|
38
|
+
living_neighbors = neighboring_keys(key).reduce(0) do |result, _key|
|
39
|
+
result += 1 if alive?(wrap_key_around_grid_edges(_key))
|
44
40
|
result
|
45
41
|
end
|
46
42
|
end
|
@@ -48,15 +44,15 @@ module Golr
|
|
48
44
|
def neighboring_keys(key)
|
49
45
|
neighbor_keys = []
|
50
46
|
x,y = Key.coordinates(key)
|
51
|
-
((x-1)..(x+1)).
|
52
|
-
((y-1)..(y+1)).
|
47
|
+
((x-1)..(x+1)).map do |_x|
|
48
|
+
((y-1)..(y+1)).map do |_y|
|
53
49
|
neighbor_keys << Key.key(_x,_y) unless x == _x && y == _y
|
54
50
|
end
|
55
51
|
end
|
56
52
|
neighbor_keys
|
57
53
|
end
|
58
54
|
|
59
|
-
def
|
55
|
+
def wrap_key_around_grid_edges(key)
|
60
56
|
x,y = Key.coordinates(key)
|
61
57
|
Key.key(wrap_coordinate(x, @columns), wrap_coordinate(y, @rows))
|
62
58
|
end
|
@@ -66,7 +62,7 @@ module Golr
|
|
66
62
|
wrapped = wrapped > limit ? 1 : wrapped
|
67
63
|
end
|
68
64
|
|
69
|
-
private :init_grid, :living_neighbors, :neighboring_keys, :
|
65
|
+
private :init_grid, :living_neighbors, :neighboring_keys, :wrap_key_around_grid_edges, :wrap_coordinate
|
70
66
|
|
71
67
|
end
|
72
68
|
end
|
data/lib/golr/game_printer.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module Golr
|
2
|
-
|
3
2
|
class GamePrinter
|
4
3
|
|
5
4
|
def self.print(game, io = STDOUT)
|
@@ -8,24 +7,20 @@ module Golr
|
|
8
7
|
line_feed(io)
|
9
8
|
end
|
10
9
|
|
11
|
-
|
12
10
|
private
|
13
|
-
|
14
11
|
def self.line_feed(io)
|
15
12
|
printf(io, "\n")
|
16
13
|
end
|
17
14
|
|
18
15
|
def self.print_game_state(game, io)
|
19
|
-
|
16
|
+
(1..game.rows).to_a.each do |y|
|
20
17
|
printf(io, '|')
|
21
|
-
|
18
|
+
(1..game.columns).to_a.each do |x|
|
22
19
|
printf(io, game.grid[Key.key(x,y)] == true ? 'o' : ' ')
|
23
20
|
end
|
24
21
|
printf(io, '|')
|
25
22
|
line_feed(io)
|
26
23
|
end
|
27
24
|
end
|
28
|
-
|
29
25
|
end
|
30
|
-
|
31
26
|
end
|
data/lib/golr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: golr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
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: 2013-
|
12
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.
|
37
|
+
version: 1.3.1
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.3.1
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: simplecov
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,11 +68,11 @@ executables:
|
|
68
68
|
extensions: []
|
69
69
|
extra_rdoc_files: []
|
70
70
|
files:
|
71
|
-
- lib/golr/game.rb
|
72
|
-
- lib/golr/game_printer.rb
|
73
|
-
- lib/golr/game_reader.rb
|
74
71
|
- lib/golr/key.rb
|
72
|
+
- lib/golr/game_printer.rb
|
75
73
|
- lib/golr/rules.rb
|
74
|
+
- lib/golr/game.rb
|
75
|
+
- lib/golr/game_reader.rb
|
76
76
|
- lib/golr/version.rb
|
77
77
|
- lib/golr.rb
|
78
78
|
- bin/golr
|