@@ -22,22 +22,22 @@ def initialize(tiles, width, height)
22
22
@tiles = tiles
23
23
@width = width . to_i
24
24
@height = height . to_i
25
- @grid = [ ]
26
- @height . times { |y | @width . times { |x | @grid << Cell . new ( x , y , @tiles . shuffle ) } }
27
- @uncollapsed_cells_grid = @grid . reject ( &:collapsed )
25
+ @cells = [ ]
26
+ @height . times { |y | @width . times { |x | @cells << Cell . new ( x , y , @tiles . shuffle ) } }
27
+ @uncollapsed_cells = @cells . reject ( &:collapsed )
28
28
@max_entropy = @tiles . length
29
29
end
30
30
31
31
def cell_at ( x , y )
32
- @grid [ @width * y + x ]
32
+ @cells [ @width * y + x ]
33
33
end
34
34
35
35
def complete?
36
- @uncollapsed_cells_grid . empty?
36
+ @uncollapsed_cells . empty?
37
37
end
38
38
39
39
def percent
40
- ( ( @width * @height ) - @uncollapsed_cells_grid . length . to_f ) / ( @width * @height ) * 100
40
+ ( ( @width * @height ) - @uncollapsed_cells . length . to_f ) / ( @width * @height ) * 100
41
41
end
42
42
43
43
def solve
@@ -47,7 +47,7 @@ def solve
47
47
end
48
48
49
49
def iterate
50
- return false if @uncollapsed_cells_grid . empty?
50
+ return false if @uncollapsed_cells . empty?
51
51
52
52
next_cell = find_lowest_entropy
53
53
return false unless next_cell
@@ -57,13 +57,13 @@ def iterate
57
57
end
58
58
59
59
def prepend_empty_row
60
- @grid = @grid . drop ( @width )
61
- @grid . each { |cell | cell . y -= 1 }
60
+ @cells = @cells . drop ( @width )
61
+ @cells . each { |cell | cell . y -= 1 }
62
62
x = 0
63
63
while x < @width
64
64
new_cell = Cell . new ( x , @height - 1 , @tiles )
65
- @grid << new_cell
66
- @uncollapsed_cells_grid << new_cell
65
+ @cells << new_cell
66
+ @uncollapsed_cells << new_cell
67
67
x += 1
68
68
end
69
69
@width . times { |x |
@@ -72,7 +72,7 @@ def prepend_empty_row
72
72
end
73
73
74
74
def random_cell
75
- @uncollapsed_cells_grid . sample
75
+ @uncollapsed_cells . sample
76
76
end
77
77
78
78
def generate_grid
@@ -95,8 +95,8 @@ def generate_grid
95
95
96
96
def process_cell ( cell )
97
97
cell . collapse
98
- @uncollapsed_cells_grid . delete ( cell )
99
- return if @uncollapsed_cells_grid . empty?
98
+ @uncollapsed_cells . delete ( cell )
99
+ return if @uncollapsed_cells . empty?
100
100
101
101
propagate ( cell )
102
102
end
@@ -153,14 +153,14 @@ def evaluate_neighbor(source_cell, evaluation_direction)
153
153
end
154
154
155
155
neighbor_cell . tiles = new_tiles unless new_tiles . empty?
156
- @uncollapsed_cells_grid . delete ( neighbor_cell ) if neighbor_cell . collapsed
156
+ @uncollapsed_cells . delete ( neighbor_cell ) if neighbor_cell . collapsed
157
157
158
158
# if the number of tiles changed, we need to evaluate current cell's neighbors now
159
159
propagate ( neighbor_cell ) if neighbor_cell . tiles . length != original_tile_count
160
160
end
161
161
162
162
def find_lowest_entropy
163
- ucg = @uncollapsed_cells_grid . to_a
163
+ ucg = @uncollapsed_cells
164
164
i = 0
165
165
l = ucg . length
166
166
min_e = ucg [ 0 ] . entropy
0 commit comments