conway_deathmatch 0.3.0.1 → 0.3.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ea3aea969a6ce5615eaef2ec94e28a208af8320
4
- data.tar.gz: fa83c5b84e0c62ae98ddad57f0ab0dbd684f69bf
3
+ metadata.gz: 74cb09c10b150b79fde2d90b7ec9f19ba734ea45
4
+ data.tar.gz: afab5401c02eacf4f0fdbcba7635248d030e77ac
5
5
  SHA512:
6
- metadata.gz: f910a7e0b36c79ad1265fa382f9d9d2c9ce786577c25f9bd8ce9265fb8a610aaf9aae7dcadb565b0ed8b7cc530f4e6addcdc4ae26b1547b01cf6e272843d46e4
7
- data.tar.gz: e507e5af3bff546ba8652c2c009e41067a6a72d269eac10b3c442f087dc010e0c3e606ce80bc898f8521fa28541746f5e7d4b116393f44340fcc53dc33d6a805
6
+ metadata.gz: 9bd27fa170687568717234356174f09cf3fc57fbb20e2516c46cdad921a81b6db4c78983a976b553afc3f496ca05091d4ccd0264187542a7b70b621ccce4d24f
7
+ data.tar.gz: dafed28ce3008911055047b5ca22aaeb3b049b5735965542f6ee156d4a22c78c03ae194546dcc48f0efcded14af0066bdafe0ded84e88de33e1e861d1bae2ff8
@@ -19,9 +19,8 @@ class ConwayDeathmatch::BoardState
19
19
  attr_accessor :multiplayer
20
20
 
21
21
  def initialize(x_len, y_len)
22
- # ranges, yay! (exclude_end)
23
- @xr = (0...x_len)
24
- @yr = (0...y_len)
22
+ @x_len = x_len
23
+ @y_len = y_len
25
24
  @state = self.class.new_state(x_len, y_len)
26
25
  @multiplayer = false
27
26
  end
@@ -42,26 +41,28 @@ class ConwayDeathmatch::BoardState
42
41
  end
43
42
 
44
43
  def in_bounds?(x, y)
45
- @xr.include?(x) and @yr.include?(y)
44
+ x.between?(0, @x_len - 1) and y.between?(0, @y_len - 1)
46
45
  end
47
46
 
48
47
  def in_bounds!(x, y)
49
- raise(BoundsError, "(#{x}, #{y}) (#{@xr}, #{@yr})") unless in_bounds?(x, y)
48
+ raise(BoundsError, "(#{x}, #{y})") unless in_bounds?(x, y)
50
49
  end
51
50
 
52
51
  # out of bounds considered dead
53
52
  def alive?(x, y)
54
- in_bounds?(x, y) and @state[x][y] != DEAD
53
+ @state[x][y] != DEAD rescue false
55
54
  end
56
55
 
57
56
  # population of each neighbor
58
57
  def neighbor_population(x, y)
58
+ outer_ring = x == 0 or y == 0 or x == @x_len - 1 or y == @y_len - 1
59
59
  neighbors = Hash.new(0)
60
60
  (x-1..x+1).each { |xn|
61
+ next if outer_ring and xn < 0 or xn >= @x_len
61
62
  (y-1..y+1).each { |yn|
62
- if alive?(xn, yn) and !(xn == x and yn == y) # don't count self
63
- neighbors[@state[xn][yn]] += 1
64
- end
63
+ next if outer_ring and yn < 0 or yn >= @y_len
64
+ next if xn == x and yn == y # don't count self
65
+ neighbors[@state[xn][yn]] += 1
65
66
  }
66
67
  }
67
68
  neighbors
@@ -82,14 +83,21 @@ class ConwayDeathmatch::BoardState
82
83
  }
83
84
  [total, birthright]
84
85
  else
85
- [neighbor_population(x, y).values.reduce(:+), ALIVE]
86
+ count = 0
87
+ neighbor_population(x, y).each { |sym, cnt|
88
+ next if sym == DEAD
89
+ count += cnt
90
+ }
91
+ [count, ALIVE]
86
92
  end
87
93
  end
88
94
 
89
95
  # generate the next state table
90
96
  def tick
91
- new_state = self.class.new_state(@xr.last, @yr.last)
92
- @xr.each { |x| @yr.each { |y| new_state[x][y] = next_value(x, y) } }
97
+ new_state = self.class.new_state(@x_len, @y_len)
98
+ @x_len.times { |x|
99
+ @y_len.times { |y| new_state[x][y] = next_value(x, y) }
100
+ }
93
101
  @state = new_state
94
102
  self
95
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conway_deathmatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.1
4
+ version: 0.3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Hull
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-30 00:00:00.000000000 Z
11
+ date: 2014-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: buildar