linotype 0.0.5 → 0.0.6
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/linotype/dictionary/words.txt +264749 -172063
- data/lib/linotype/game.rb +9 -1
- data/lib/linotype/move.rb +9 -1
- data/lib/linotype/strategy.rb +3 -3
- data/lib/linotype/version.rb +1 -1
- metadata +2 -2
data/lib/linotype/game.rb
CHANGED
@@ -61,7 +61,7 @@ module Linotype
|
|
61
61
|
|
62
62
|
def test_potential_plays
|
63
63
|
potential_moves = []
|
64
|
-
|
64
|
+
remaining_plays.each do |word_to_test|
|
65
65
|
every_play_for_word(word_to_test).each do |tiles|
|
66
66
|
move = Move.new(self, @current_player, tiles)
|
67
67
|
potential_moves << move
|
@@ -71,6 +71,14 @@ module Linotype
|
|
71
71
|
potential_moves
|
72
72
|
end
|
73
73
|
|
74
|
+
def previously_played_words
|
75
|
+
moves.collect(&:word)
|
76
|
+
end
|
77
|
+
|
78
|
+
def remaining_plays
|
79
|
+
potential_plays - previously_played_words
|
80
|
+
end
|
81
|
+
|
74
82
|
def valid_potential_plays
|
75
83
|
test_potential_plays.select { |potential_play| potential_play.valid? }
|
76
84
|
end
|
data/lib/linotype/move.rb
CHANGED
@@ -132,6 +132,14 @@ module Linotype
|
|
132
132
|
def prefix_of_previous_word?
|
133
133
|
game.valid_moves.find { |move| move.word =~ /\A#{word}/ }
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
|
+
def winning_move?
|
137
|
+
score[:remaining_uncovered_after] == 0 && score[:covered_after] >= game.all_tiles.count
|
138
|
+
end
|
139
|
+
|
140
|
+
def first_covered_corner?
|
141
|
+
score[:corners_defended_before] == 0 && score[:corners_defended_after] > 0
|
142
|
+
end
|
143
|
+
|
136
144
|
end
|
137
145
|
end
|
data/lib/linotype/strategy.rb
CHANGED
@@ -3,14 +3,14 @@ module Linotype
|
|
3
3
|
|
4
4
|
EDGE_AND_CORNER = ->(move) do
|
5
5
|
score = move.score[:covered] + move.score[:defended] + move.score[:edges] + move.score[:corners]
|
6
|
-
score += 100000 if move.
|
6
|
+
score += 100000 if move.winning_move?
|
7
7
|
score
|
8
8
|
end
|
9
9
|
|
10
10
|
CORNER_LOVER = ->(move) do
|
11
11
|
score = move.score[:covered] + move.score[:defended] + move.score[:edges] + move.score[:corners]
|
12
|
-
score += 10 if
|
13
|
-
score += 100000 if move.
|
12
|
+
score += 10 if move.first_covered_corner?
|
13
|
+
score += 100000 if move.winning_move?
|
14
14
|
score
|
15
15
|
end
|
16
16
|
|
data/lib/linotype/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linotype
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
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: 2012-
|
12
|
+
date: 2012-11-02 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! ' linotype implements that game mechanic of Letterpress for iOS by
|
15
15
|
atebits software. The program was written to support the automation of letterpress
|