rypto 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73ab84dfc3fcc054fd8ef7a809e50f74a43e1010
4
- data.tar.gz: 0d3b8997e7d6439faac3cc6154a92130ca0caafd
3
+ metadata.gz: 17aee71b202861ea002b2b164d79a3e211054767
4
+ data.tar.gz: 622cf81b278aff0bd98f587358731509a4848183
5
5
  SHA512:
6
- metadata.gz: 3dd48356a1d13ac6067b59244b0b8f66f6397a4fe05510b6818fc5c86877c3186b60b1c15938f8924c1b0dd1197700f3a8b3d310f70b5232c446d45df6eeb185
7
- data.tar.gz: 2e407aad9f741690abf0430ac8a5e68e4193e0615ef19044d684002e665f5621a4d4f8e095d1e7d436801b5d79ec2b4b0301688df9ee64c67918e868f2087b48
6
+ metadata.gz: 75d1eac08399599ad3c99b3e5e17ff6c41136c4cb378258e9242243ff78f32781649836a2892219ea87ef0b6e3f406c7b1e8694f2c91a35f72cec5243719f93f
7
+ data.tar.gz: 19de5a124d5bd48ee9192e361b334dca6320fc83ab4a19fbe69a6e9aee7d8f3dd6d35a8eae04d598482a8f1dba074958650b394e86872457b7ed8d05d0e6e253
data/README.md CHANGED
@@ -53,14 +53,14 @@ This will output:
53
53
  ```
54
54
  (19 + 4 - 23) * 14 + 8 = 8
55
55
  (19 + 4 - 23) / 14 + 8 = 8
56
- (19 - 23 - 4) * 14 + 8 = 8
57
- (19 - 23 - 4) / 14 + 8 = 8
58
- (19 - 23 - 14 + 8) * 4 = 8
59
- (19 - 23 - 14 - 8) * 4 = 8
60
- (19 - 23 - 14 - 8) * 4 = 8
61
- 19 - 23 - 14 - 8 / 4 = 8
62
- 19 - 23 - 14 + 8 / 4 = 8
63
- 19 - 23 - 14 - 8 / 4 = 8
56
+ (19 - (23 - 4)) * 14 + 8 = 8
57
+ (19 - (23 - 4)) / 14 + 8 = 8
58
+ (19 - (23 - 14 + 8)) * 4 = 8
59
+ (19 - (23 - 14) - 8) * 4 = 8
60
+ (19 - (23 - (14 - 8))) * 4 = 8
61
+ 19 - (23 - 14) - 8 / 4 = 8
62
+ 19 - (23 - 14 + 8 / 4) = 8
63
+ 19 - (23 - (14 - 8 / 4)) = 8
64
64
  ...results truncated...
65
65
  ```
66
66
 
@@ -25,15 +25,20 @@ module Rypto
25
25
 
26
26
  solution.each do |s|
27
27
  if s.is_a? Fixnum
28
- stack.push s
28
+ stack.push expr: s, precedence: 3
29
29
  else
30
30
  b = stack.pop
31
31
  a = stack.pop
32
- stack.push left: a, op: s, right: b
32
+ p = {'-' => 1, '+' => 1, '*' => 2, '/' => 2}[s]
33
+
34
+ a[:expr] = "(#{a[:expr]})" if a[:precedence] < p
35
+ b[:expr] = "(#{b[:expr]})" if b[:precedence] <= p
36
+
37
+ stack.push expr: '%s %s %s' % [a[:expr], s, b[:expr]], precedence: p
33
38
  end
34
39
  end
35
40
 
36
- '%s = %d' % [expr_tree_to_infix(stack.pop), @target]
41
+ '%s = %d' % [stack.pop[:expr], @target]
37
42
  end
38
43
  end
39
44
 
@@ -42,27 +47,5 @@ module Rypto
42
47
  def push(solution)
43
48
  @solutions << solution
44
49
  end
45
-
46
- private
47
-
48
- def expr_tree_to_infix(node, parent_node = nil)
49
- return node.to_s if node.is_a? Fixnum
50
- use_parens = parent_node && op_precedence(parent_node[:op]) > op_precedence(node[:op])
51
- '%s%s %s %s%s' % [
52
- use_parens ? '(' : nil,
53
- expr_tree_to_infix(node[:left], node),
54
- node[:op],
55
- expr_tree_to_infix(node[:right], node),
56
- use_parens ? ')' : nil
57
- ]
58
- end
59
-
60
- def op_precedence(op)
61
- case op
62
- when '/', '*' then 2
63
- else
64
- 1
65
- end
66
- end
67
50
  end
68
51
  end
data/lib/rypto/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Rypto
2
2
  # Rypto library version
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
@@ -0,0 +1,524 @@
1
+ require_relative "test_helper"
2
+
3
+ class TestHand < Minitest::Test
4
+ def test_infix_0
5
+ compare_solutions(8, [
6
+ %w{19 23 14 - - 8 - 4 *}
7
+ ], [
8
+ '(19 - (23 - 14) - 8) * 4 = 8'
9
+ ])
10
+ end
11
+
12
+ def test_infix_1
13
+ compare_solutions(7, [
14
+ %w{20 19 + 10 + 8 1 - /},
15
+ %w{20 19 10 + + 8 1 - /},
16
+ %w{20 10 * 8 / 19 - 1 +},
17
+ %w{20 10 * 8 / 19 1 - -},
18
+ %w{20 10 * 8 / 1 + 19 -},
19
+ %w{20 10 + 19 + 8 1 - /},
20
+ %w{20 10 19 + + 8 1 - /},
21
+ %w{19 20 + 10 + 8 1 - /},
22
+ %w{19 20 10 + + 8 1 - /},
23
+ %w{19 10 + 20 + 8 1 - /},
24
+ %w{19 10 20 + + 8 1 - /},
25
+ %w{10 20 * 8 / 19 - 1 +},
26
+ %w{10 20 * 8 / 19 1 - -},
27
+ %w{10 20 * 8 / 1 + 19 -},
28
+ %w{10 20 + 19 + 8 1 - /},
29
+ %w{10 20 19 + + 8 1 - /},
30
+ %w{10 19 + 20 + 8 1 - /},
31
+ %w{10 19 20 + + 8 1 - /},
32
+ %w{1 20 10 * 8 / + 19 -},
33
+ %w{1 20 10 * 8 / 19 - +},
34
+ %w{1 10 20 * 8 / + 19 -},
35
+ %w{1 10 20 * 8 / 19 - +}
36
+ ], [
37
+ '(20 + 19 + 10) / (8 - 1) = 7',
38
+ '(20 + (19 + 10)) / (8 - 1) = 7',
39
+ '20 * 10 / 8 - 19 + 1 = 7',
40
+ '20 * 10 / 8 - (19 - 1) = 7',
41
+ '20 * 10 / 8 + 1 - 19 = 7',
42
+ '(20 + 10 + 19) / (8 - 1) = 7',
43
+ '(20 + (10 + 19)) / (8 - 1) = 7',
44
+ '(19 + 20 + 10) / (8 - 1) = 7',
45
+ '(19 + (20 + 10)) / (8 - 1) = 7',
46
+ '(19 + 10 + 20) / (8 - 1) = 7',
47
+ '(19 + (10 + 20)) / (8 - 1) = 7',
48
+ '10 * 20 / 8 - 19 + 1 = 7',
49
+ '10 * 20 / 8 - (19 - 1) = 7',
50
+ '10 * 20 / 8 + 1 - 19 = 7',
51
+ '(10 + 20 + 19) / (8 - 1) = 7',
52
+ '(10 + (20 + 19)) / (8 - 1) = 7',
53
+ '(10 + 19 + 20) / (8 - 1) = 7',
54
+ '(10 + (19 + 20)) / (8 - 1) = 7',
55
+ '1 + 20 * 10 / 8 - 19 = 7',
56
+ '1 + (20 * 10 / 8 - 19) = 7',
57
+ '1 + 10 * 20 / 8 - 19 = 7',
58
+ '1 + (10 * 20 / 8 - 19) = 7'
59
+ ])
60
+ end
61
+
62
+ def test_infix_2
63
+ compare_solutions(15, [
64
+ %w{10 7 21 + 25 - * 15 -},
65
+ %w{10 7 25 21 - - * 15 -},
66
+ %w{10 15 7 21 + 25 - / +},
67
+ %w{10 15 7 25 21 - - / +},
68
+ %w{10 15 21 7 + 25 - / +},
69
+ %w{10 15 21 25 7 - - / +},
70
+ %w{10 15 + 25 / 21 + 7 -},
71
+ %w{10 15 + 25 / 21 7 - +},
72
+ %w{10 21 7 + 25 - * 15 -},
73
+ %w{10 21 7 / 25 * 15 / +},
74
+ %w{10 21 25 7 - - * 15 -},
75
+ %w{10 21 25 * 7 15 * / +},
76
+ %w{10 21 25 * 7 / 15 / +},
77
+ %w{10 21 25 * 15 7 * / +},
78
+ %w{10 21 25 * 15 / 7 / +},
79
+ %w{10 25 7 15 * 21 / / +},
80
+ %w{10 25 15 7 * 21 / / +},
81
+ %w{10 25 15 - / 21 + 7 -},
82
+ %w{10 25 15 - / 21 7 - +},
83
+ %w{10 25 15 21 7 / / / +},
84
+ %w{10 25 21 * 7 15 * / +},
85
+ %w{10 25 21 * 7 / 15 / +},
86
+ %w{10 25 21 7 / * 15 / +},
87
+ %w{10 25 21 * 15 7 * / +},
88
+ %w{10 25 21 * 15 / 7 / +},
89
+ %w{7 10 21 + 25 - - 15 *},
90
+ %w{7 10 25 21 - - - 15 *},
91
+ %w{7 15 + 21 - 25 10 - *},
92
+ %w{7 15 + 21 - 25 * 10 -},
93
+ %w{7 21 10 + 25 - - 15 *},
94
+ %w{7 21 15 - - 25 10 - *},
95
+ %w{7 21 15 - - 25 * 10 -},
96
+ %w{7 21 + 25 - 10 * 15 -},
97
+ %w{7 21 25 10 - - - 15 *},
98
+ %w{7 21 + 25 - 15 10 - *},
99
+ %w{7 25 + 10 21 + - 15 *},
100
+ %w{7 25 + 10 - 21 - 15 *},
101
+ %w{7 25 10 - + 21 - 15 *},
102
+ %w{7 25 + 21 10 + - 15 *},
103
+ %w{7 25 + 21 - 10 - 15 *},
104
+ %w{7 25 21 - + 10 - 15 *},
105
+ %w{7 25 21 - - 10 * 15 -},
106
+ %w{7 25 21 - - 15 10 - *},
107
+ %w{15 10 - 7 21 + 25 - *},
108
+ %w{15 10 - 7 25 21 - - *},
109
+ %w{15 10 - 21 7 + 25 - *},
110
+ %w{15 10 - 21 25 7 - - *},
111
+ %w{15 10 + 25 / 21 + 7 -},
112
+ %w{15 10 + 25 / 21 7 - +},
113
+ %w{15 7 10 21 + 25 - - *},
114
+ %w{15 7 10 21 + 25 - - /},
115
+ %w{15 7 10 25 21 - - - *},
116
+ %w{15 7 10 25 21 - - - /},
117
+ %w{15 7 21 10 + 25 - - *},
118
+ %w{15 7 21 10 + 25 - - /},
119
+ %w{15 7 + 21 - 25 10 - *},
120
+ %w{15 7 + 21 - 25 * 10 -},
121
+ %w{15 7 21 + 25 - / 10 +},
122
+ %w{15 7 21 25 10 - - - *},
123
+ %w{15 7 21 25 10 - - - /},
124
+ %w{15 7 25 + 10 21 + - *},
125
+ %w{15 7 25 + 10 21 + - /},
126
+ %w{15 7 25 + 10 - 21 - *},
127
+ %w{15 7 25 + 10 - 21 - /},
128
+ %w{15 7 25 10 - + 21 - *},
129
+ %w{15 7 25 10 - + 21 - /},
130
+ %w{15 7 25 + 21 10 + - *},
131
+ %w{15 7 25 + 21 10 + - /},
132
+ %w{15 7 25 + 21 - 10 - *},
133
+ %w{15 7 25 + 21 - 10 - /},
134
+ %w{15 7 25 21 - + 10 - *},
135
+ %w{15 7 25 21 - + 10 - /},
136
+ %w{15 7 25 21 - - / 10 +},
137
+ %w{15 21 7 + 25 - / 10 +},
138
+ %w{15 21 7 - - 25 10 - *},
139
+ %w{15 21 7 - - 25 * 10 -},
140
+ %w{15 21 25 7 - - / 10 +},
141
+ %w{15 25 10 7 - 21 + - *},
142
+ %w{15 25 10 - 7 + 21 - *},
143
+ %w{15 25 10 7 - 21 + - /},
144
+ %w{15 25 10 - 7 + 21 - /},
145
+ %w{15 25 10 7 - - 21 - *},
146
+ %w{15 25 10 7 - - 21 - /},
147
+ %w{15 25 10 21 + 7 - - *},
148
+ %w{15 25 10 21 + 7 - - /},
149
+ %w{15 25 10 21 7 - + - *},
150
+ %w{15 25 10 21 7 - + - /},
151
+ %w{15 25 10 - 21 7 - - *},
152
+ %w{15 25 10 - 21 7 - - /},
153
+ %w{15 25 10 - / 21 + 7 -},
154
+ %w{15 25 10 - / 21 7 - +},
155
+ %w{15 25 7 + 10 21 + - *},
156
+ %w{15 25 7 + 10 21 + - /},
157
+ %w{15 25 7 + 10 - 21 - *},
158
+ %w{15 25 7 + 10 - 21 - /},
159
+ %w{15 25 7 + 21 10 + - *},
160
+ %w{15 25 7 + 21 10 + - /},
161
+ %w{15 25 7 + 21 - 10 - *},
162
+ %w{15 25 7 + 21 - 10 - /},
163
+ %w{15 25 21 10 + 7 - - *},
164
+ %w{15 25 21 10 + 7 - - /},
165
+ %w{15 25 21 10 7 - + - *},
166
+ %w{15 25 21 10 7 - + - /},
167
+ %w{15 25 21 - 10 7 - - *},
168
+ %w{15 25 21 - 10 7 - - /},
169
+ %w{15 25 21 7 - 10 + - *},
170
+ %w{15 25 21 - 7 + 10 - *},
171
+ %w{15 25 21 7 - 10 + - /},
172
+ %w{15 25 21 - 7 + 10 - /},
173
+ %w{15 25 21 7 - - 10 - *},
174
+ %w{15 25 21 7 - - 10 - /},
175
+ %w{21 10 15 + 25 / + 7 -},
176
+ %w{21 10 25 15 - / + 7 -},
177
+ %w{21 7 10 15 + 25 / - -},
178
+ %w{21 7 - 10 15 + 25 / +},
179
+ %w{21 7 - 10 25 15 - / +},
180
+ %w{21 7 10 25 15 - / - -},
181
+ %w{21 7 15 10 + 25 / - -},
182
+ %w{21 7 - 15 10 + 25 / +},
183
+ %w{21 7 - 15 25 10 - / +},
184
+ %w{21 7 15 25 10 - / - -},
185
+ %w{21 7 + 25 - 10 * 15 -},
186
+ %w{21 7 25 10 15 + / - -},
187
+ %w{21 7 - 25 10 15 + / +},
188
+ %w{21 7 - 25 10 - 15 / +},
189
+ %w{21 7 25 10 - 15 / - -},
190
+ %w{21 7 + 25 - 15 10 - *},
191
+ %w{21 7 25 15 10 + / - -},
192
+ %w{21 7 - 25 15 10 + / +},
193
+ %w{21 7 - 25 15 - 10 / +},
194
+ %w{21 7 25 15 - 10 / - -},
195
+ %w{21 7 / 25 15 10 - / *},
196
+ %w{21 7 / 25 * 15 10 - /},
197
+ %w{21 7 / 25 * 15 / 10 +},
198
+ %w{21 15 10 + 25 / + 7 -},
199
+ %w{21 15 25 10 - / + 7 -},
200
+ %w{21 25 10 15 + / + 7 -},
201
+ %w{21 25 10 - 15 / + 7 -},
202
+ %w{21 25 7 - - 10 * 15 -},
203
+ %w{21 25 7 - - 15 10 - *},
204
+ %w{21 25 * 7 15 10 - * /},
205
+ %w{21 25 * 7 15 * / 10 +},
206
+ %w{21 25 * 7 / 15 10 - /},
207
+ %w{21 25 * 7 / 15 / 10 +},
208
+ %w{21 25 15 10 + / + 7 -},
209
+ %w{21 25 15 - 10 / + 7 -},
210
+ %w{21 25 15 10 - / * 7 /},
211
+ %w{21 25 * 15 10 - 7 * /},
212
+ %w{21 25 * 15 10 - / 7 /},
213
+ %w{21 25 * 15 7 * / 10 +},
214
+ %w{21 25 * 15 / 7 / 10 +},
215
+ %w{25 10 7 15 + 21 - * -},
216
+ %w{25 10 7 15 + 21 - / -},
217
+ %w{25 10 - 7 15 + 21 - *},
218
+ %w{25 10 - 7 15 + 21 - /},
219
+ %w{25 10 - 7 + 21 - 15 *},
220
+ %w{25 10 7 - 21 + - 15 *},
221
+ %w{25 10 7 - - 21 - 15 *},
222
+ %w{25 10 - 7 21 15 - - *},
223
+ %w{25 10 - 7 21 15 - - /},
224
+ %w{25 10 7 21 15 - - * -},
225
+ %w{25 10 7 21 15 - - / -},
226
+ %w{25 10 15 7 + 21 - * -},
227
+ %w{25 10 15 7 + 21 - / -},
228
+ %w{25 10 - 15 7 + 21 - *},
229
+ %w{25 10 - 15 7 + 21 - /},
230
+ %w{25 10 15 + / 21 + 7 -},
231
+ %w{25 10 15 + / 21 7 - +},
232
+ %w{25 10 - 15 21 7 - - *},
233
+ %w{25 10 - 15 21 7 - - /},
234
+ %w{25 10 15 21 7 - - * -},
235
+ %w{25 10 15 21 7 - - / -},
236
+ %w{25 10 - 15 / 21 + 7 -},
237
+ %w{25 10 - 15 / 21 7 - +},
238
+ %w{25 10 21 + 7 - - 15 *},
239
+ %w{25 10 21 7 - + - 15 *},
240
+ %w{25 10 - 21 7 - - 15 *},
241
+ %w{25 7 + 10 21 + - 15 *},
242
+ %w{25 7 + 10 - 21 - 15 *},
243
+ %w{25 7 15 + 21 - * 10 -},
244
+ %w{25 7 15 + 21 - 10 * -},
245
+ %w{25 7 15 + 21 - / 10 -},
246
+ %w{25 7 15 * 21 / / 10 +},
247
+ %w{25 7 + 21 10 + - 15 *},
248
+ %w{25 7 + 21 - 10 - 15 *},
249
+ %w{25 7 21 15 - - 10 * -},
250
+ %w{25 7 21 15 - - * 10 -},
251
+ %w{25 7 21 15 - - / 10 -},
252
+ %w{25 15 10 + / 21 + 7 -},
253
+ %w{25 15 10 + / 21 7 - +},
254
+ %w{25 15 - 10 / 21 + 7 -},
255
+ %w{25 15 - 10 / 21 7 - +},
256
+ %w{25 15 10 - / 21 * 7 /},
257
+ %w{25 15 10 - / 21 7 / *},
258
+ %w{25 15 7 + 21 - * 10 -},
259
+ %w{25 15 7 + 21 - 10 * -},
260
+ %w{25 15 7 + 21 - / 10 -},
261
+ %w{25 15 7 * 21 / / 10 +},
262
+ %w{25 15 21 7 - - 10 * -},
263
+ %w{25 15 21 7 - - * 10 -},
264
+ %w{25 15 21 7 - - / 10 -},
265
+ %w{25 15 21 7 / / / 10 +},
266
+ %w{25 21 10 + 7 - - 15 *},
267
+ %w{25 21 10 7 - + - 15 *},
268
+ %w{25 21 - 10 7 - - 15 *},
269
+ %w{25 21 - 7 + 10 - 15 *},
270
+ %w{25 21 7 - 10 + - 15 *},
271
+ %w{25 21 7 - - 10 - 15 *},
272
+ %w{25 21 * 7 15 10 - * /},
273
+ %w{25 21 * 7 15 * / 10 +},
274
+ %w{25 21 * 7 / 15 10 - /},
275
+ %w{25 21 * 7 / 15 / 10 +},
276
+ %w{25 21 7 / * 15 10 - /},
277
+ %w{25 21 7 / * 15 / 10 +},
278
+ %w{25 21 * 15 10 - 7 * /},
279
+ %w{25 21 * 15 10 - / 7 /},
280
+ %w{25 21 * 15 7 * / 10 +},
281
+ %w{25 21 * 15 / 7 / 10 +}
282
+ ], [
283
+ "10 * (7 + 21 - 25) - 15 = 15",
284
+ "10 * (7 - (25 - 21)) - 15 = 15",
285
+ "10 + 15 / (7 + 21 - 25) = 15",
286
+ "10 + 15 / (7 - (25 - 21)) = 15",
287
+ "10 + 15 / (21 + 7 - 25) = 15",
288
+ "10 + 15 / (21 - (25 - 7)) = 15",
289
+ "(10 + 15) / 25 + 21 - 7 = 15",
290
+ "(10 + 15) / 25 + (21 - 7) = 15",
291
+ "10 * (21 + 7 - 25) - 15 = 15",
292
+ "10 + 21 / 7 * 25 / 15 = 15",
293
+ "10 * (21 - (25 - 7)) - 15 = 15",
294
+ "10 + 21 * 25 / (7 * 15) = 15",
295
+ "10 + 21 * 25 / 7 / 15 = 15",
296
+ "10 + 21 * 25 / (15 * 7) = 15",
297
+ "10 + 21 * 25 / 15 / 7 = 15",
298
+ "10 + 25 / (7 * 15 / 21) = 15",
299
+ "10 + 25 / (15 * 7 / 21) = 15",
300
+ "10 / (25 - 15) + 21 - 7 = 15",
301
+ "10 / (25 - 15) + (21 - 7) = 15",
302
+ "10 + 25 / (15 / (21 / 7)) = 15",
303
+ "10 + 25 * 21 / (7 * 15) = 15",
304
+ "10 + 25 * 21 / 7 / 15 = 15",
305
+ "10 + 25 * (21 / 7) / 15 = 15",
306
+ "10 + 25 * 21 / (15 * 7) = 15",
307
+ "10 + 25 * 21 / 15 / 7 = 15",
308
+ "(7 - (10 + 21 - 25)) * 15 = 15",
309
+ "(7 - (10 - (25 - 21))) * 15 = 15",
310
+ "(7 + 15 - 21) * (25 - 10) = 15",
311
+ "(7 + 15 - 21) * 25 - 10 = 15",
312
+ "(7 - (21 + 10 - 25)) * 15 = 15",
313
+ "(7 - (21 - 15)) * (25 - 10) = 15",
314
+ "(7 - (21 - 15)) * 25 - 10 = 15",
315
+ "(7 + 21 - 25) * 10 - 15 = 15",
316
+ "(7 - (21 - (25 - 10))) * 15 = 15",
317
+ "(7 + 21 - 25) * (15 - 10) = 15",
318
+ "(7 + 25 - (10 + 21)) * 15 = 15",
319
+ "(7 + 25 - 10 - 21) * 15 = 15",
320
+ "(7 + (25 - 10) - 21) * 15 = 15",
321
+ "(7 + 25 - (21 + 10)) * 15 = 15",
322
+ "(7 + 25 - 21 - 10) * 15 = 15",
323
+ "(7 + (25 - 21) - 10) * 15 = 15",
324
+ "(7 - (25 - 21)) * 10 - 15 = 15",
325
+ "(7 - (25 - 21)) * (15 - 10) = 15",
326
+ "(15 - 10) * (7 + 21 - 25) = 15",
327
+ "(15 - 10) * (7 - (25 - 21)) = 15",
328
+ "(15 - 10) * (21 + 7 - 25) = 15",
329
+ "(15 - 10) * (21 - (25 - 7)) = 15",
330
+ "(15 + 10) / 25 + 21 - 7 = 15",
331
+ "(15 + 10) / 25 + (21 - 7) = 15",
332
+ "15 * (7 - (10 + 21 - 25)) = 15",
333
+ "15 / (7 - (10 + 21 - 25)) = 15",
334
+ "15 * (7 - (10 - (25 - 21))) = 15",
335
+ "15 / (7 - (10 - (25 - 21))) = 15",
336
+ "15 * (7 - (21 + 10 - 25)) = 15",
337
+ "15 / (7 - (21 + 10 - 25)) = 15",
338
+ "(15 + 7 - 21) * (25 - 10) = 15",
339
+ "(15 + 7 - 21) * 25 - 10 = 15",
340
+ "15 / (7 + 21 - 25) + 10 = 15",
341
+ "15 * (7 - (21 - (25 - 10))) = 15",
342
+ "15 / (7 - (21 - (25 - 10))) = 15",
343
+ "15 * (7 + 25 - (10 + 21)) = 15",
344
+ "15 / (7 + 25 - (10 + 21)) = 15",
345
+ "15 * (7 + 25 - 10 - 21) = 15",
346
+ "15 / (7 + 25 - 10 - 21) = 15",
347
+ "15 * (7 + (25 - 10) - 21) = 15",
348
+ "15 / (7 + (25 - 10) - 21) = 15",
349
+ "15 * (7 + 25 - (21 + 10)) = 15",
350
+ "15 / (7 + 25 - (21 + 10)) = 15",
351
+ "15 * (7 + 25 - 21 - 10) = 15",
352
+ "15 / (7 + 25 - 21 - 10) = 15",
353
+ "15 * (7 + (25 - 21) - 10) = 15",
354
+ "15 / (7 + (25 - 21) - 10) = 15",
355
+ "15 / (7 - (25 - 21)) + 10 = 15",
356
+ "15 / (21 + 7 - 25) + 10 = 15",
357
+ "(15 - (21 - 7)) * (25 - 10) = 15",
358
+ "(15 - (21 - 7)) * 25 - 10 = 15",
359
+ "15 / (21 - (25 - 7)) + 10 = 15",
360
+ "15 * (25 - (10 - 7 + 21)) = 15",
361
+ "15 * (25 - 10 + 7 - 21) = 15",
362
+ "15 / (25 - (10 - 7 + 21)) = 15",
363
+ "15 / (25 - 10 + 7 - 21) = 15",
364
+ "15 * (25 - (10 - 7) - 21) = 15",
365
+ "15 / (25 - (10 - 7) - 21) = 15",
366
+ "15 * (25 - (10 + 21 - 7)) = 15",
367
+ "15 / (25 - (10 + 21 - 7)) = 15",
368
+ "15 * (25 - (10 + (21 - 7))) = 15",
369
+ "15 / (25 - (10 + (21 - 7))) = 15",
370
+ "15 * (25 - 10 - (21 - 7)) = 15",
371
+ "15 / (25 - 10 - (21 - 7)) = 15",
372
+ "15 / (25 - 10) + 21 - 7 = 15",
373
+ "15 / (25 - 10) + (21 - 7) = 15",
374
+ "15 * (25 + 7 - (10 + 21)) = 15",
375
+ "15 / (25 + 7 - (10 + 21)) = 15",
376
+ "15 * (25 + 7 - 10 - 21) = 15",
377
+ "15 / (25 + 7 - 10 - 21) = 15",
378
+ "15 * (25 + 7 - (21 + 10)) = 15",
379
+ "15 / (25 + 7 - (21 + 10)) = 15",
380
+ "15 * (25 + 7 - 21 - 10) = 15",
381
+ "15 / (25 + 7 - 21 - 10) = 15",
382
+ "15 * (25 - (21 + 10 - 7)) = 15",
383
+ "15 / (25 - (21 + 10 - 7)) = 15",
384
+ "15 * (25 - (21 + (10 - 7))) = 15",
385
+ "15 / (25 - (21 + (10 - 7))) = 15",
386
+ "15 * (25 - 21 - (10 - 7)) = 15",
387
+ "15 / (25 - 21 - (10 - 7)) = 15",
388
+ "15 * (25 - (21 - 7 + 10)) = 15",
389
+ "15 * (25 - 21 + 7 - 10) = 15",
390
+ "15 / (25 - (21 - 7 + 10)) = 15",
391
+ "15 / (25 - 21 + 7 - 10) = 15",
392
+ "15 * (25 - (21 - 7) - 10) = 15",
393
+ "15 / (25 - (21 - 7) - 10) = 15",
394
+ "21 + (10 + 15) / 25 - 7 = 15",
395
+ "21 + 10 / (25 - 15) - 7 = 15",
396
+ "21 - (7 - (10 + 15) / 25) = 15",
397
+ "21 - 7 + (10 + 15) / 25 = 15",
398
+ "21 - 7 + 10 / (25 - 15) = 15",
399
+ "21 - (7 - 10 / (25 - 15)) = 15",
400
+ "21 - (7 - (15 + 10) / 25) = 15",
401
+ "21 - 7 + (15 + 10) / 25 = 15",
402
+ "21 - 7 + 15 / (25 - 10) = 15",
403
+ "21 - (7 - 15 / (25 - 10)) = 15",
404
+ "(21 + 7 - 25) * 10 - 15 = 15",
405
+ "21 - (7 - 25 / (10 + 15)) = 15",
406
+ "21 - 7 + 25 / (10 + 15) = 15",
407
+ "21 - 7 + (25 - 10) / 15 = 15",
408
+ "21 - (7 - (25 - 10) / 15) = 15",
409
+ "(21 + 7 - 25) * (15 - 10) = 15",
410
+ "21 - (7 - 25 / (15 + 10)) = 15",
411
+ "21 - 7 + 25 / (15 + 10) = 15",
412
+ "21 - 7 + (25 - 15) / 10 = 15",
413
+ "21 - (7 - (25 - 15) / 10) = 15",
414
+ "21 / 7 * (25 / (15 - 10)) = 15",
415
+ "21 / 7 * 25 / (15 - 10) = 15",
416
+ "21 / 7 * 25 / 15 + 10 = 15",
417
+ "21 + (15 + 10) / 25 - 7 = 15",
418
+ "21 + 15 / (25 - 10) - 7 = 15",
419
+ "21 + 25 / (10 + 15) - 7 = 15",
420
+ "21 + (25 - 10) / 15 - 7 = 15",
421
+ "(21 - (25 - 7)) * 10 - 15 = 15",
422
+ "(21 - (25 - 7)) * (15 - 10) = 15",
423
+ "21 * 25 / (7 * (15 - 10)) = 15",
424
+ "21 * 25 / (7 * 15) + 10 = 15",
425
+ "21 * 25 / 7 / (15 - 10) = 15",
426
+ "21 * 25 / 7 / 15 + 10 = 15",
427
+ "21 + 25 / (15 + 10) - 7 = 15",
428
+ "21 + (25 - 15) / 10 - 7 = 15",
429
+ "21 * (25 / (15 - 10)) / 7 = 15",
430
+ "21 * 25 / ((15 - 10) * 7) = 15",
431
+ "21 * 25 / (15 - 10) / 7 = 15",
432
+ "21 * 25 / (15 * 7) + 10 = 15",
433
+ "21 * 25 / 15 / 7 + 10 = 15",
434
+ "25 - 10 * (7 + 15 - 21) = 15",
435
+ "25 - 10 / (7 + 15 - 21) = 15",
436
+ "(25 - 10) * (7 + 15 - 21) = 15",
437
+ "(25 - 10) / (7 + 15 - 21) = 15",
438
+ "(25 - 10 + 7 - 21) * 15 = 15",
439
+ "(25 - (10 - 7 + 21)) * 15 = 15",
440
+ "(25 - (10 - 7) - 21) * 15 = 15",
441
+ "(25 - 10) * (7 - (21 - 15)) = 15",
442
+ "(25 - 10) / (7 - (21 - 15)) = 15",
443
+ "25 - 10 * (7 - (21 - 15)) = 15",
444
+ "25 - 10 / (7 - (21 - 15)) = 15",
445
+ "25 - 10 * (15 + 7 - 21) = 15",
446
+ "25 - 10 / (15 + 7 - 21) = 15",
447
+ "(25 - 10) * (15 + 7 - 21) = 15",
448
+ "(25 - 10) / (15 + 7 - 21) = 15",
449
+ "25 / (10 + 15) + 21 - 7 = 15",
450
+ "25 / (10 + 15) + (21 - 7) = 15",
451
+ "(25 - 10) * (15 - (21 - 7)) = 15",
452
+ "(25 - 10) / (15 - (21 - 7)) = 15",
453
+ "25 - 10 * (15 - (21 - 7)) = 15",
454
+ "25 - 10 / (15 - (21 - 7)) = 15",
455
+ "(25 - 10) / 15 + 21 - 7 = 15",
456
+ "(25 - 10) / 15 + (21 - 7) = 15",
457
+ "(25 - (10 + 21 - 7)) * 15 = 15",
458
+ "(25 - (10 + (21 - 7))) * 15 = 15",
459
+ "(25 - 10 - (21 - 7)) * 15 = 15",
460
+ "(25 + 7 - (10 + 21)) * 15 = 15",
461
+ "(25 + 7 - 10 - 21) * 15 = 15",
462
+ "25 * (7 + 15 - 21) - 10 = 15",
463
+ "25 - (7 + 15 - 21) * 10 = 15",
464
+ "25 / (7 + 15 - 21) - 10 = 15",
465
+ "25 / (7 * 15 / 21) + 10 = 15",
466
+ "(25 + 7 - (21 + 10)) * 15 = 15",
467
+ "(25 + 7 - 21 - 10) * 15 = 15",
468
+ "25 - (7 - (21 - 15)) * 10 = 15",
469
+ "25 * (7 - (21 - 15)) - 10 = 15",
470
+ "25 / (7 - (21 - 15)) - 10 = 15",
471
+ "25 / (15 + 10) + 21 - 7 = 15",
472
+ "25 / (15 + 10) + (21 - 7) = 15",
473
+ "(25 - 15) / 10 + 21 - 7 = 15",
474
+ "(25 - 15) / 10 + (21 - 7) = 15",
475
+ "25 / (15 - 10) * 21 / 7 = 15",
476
+ "25 / (15 - 10) * (21 / 7) = 15",
477
+ "25 * (15 + 7 - 21) - 10 = 15",
478
+ "25 - (15 + 7 - 21) * 10 = 15",
479
+ "25 / (15 + 7 - 21) - 10 = 15",
480
+ "25 / (15 * 7 / 21) + 10 = 15",
481
+ "25 - (15 - (21 - 7)) * 10 = 15",
482
+ "25 * (15 - (21 - 7)) - 10 = 15",
483
+ "25 / (15 - (21 - 7)) - 10 = 15",
484
+ "25 / (15 / (21 / 7)) + 10 = 15",
485
+ "(25 - (21 + 10 - 7)) * 15 = 15",
486
+ "(25 - (21 + (10 - 7))) * 15 = 15",
487
+ "(25 - 21 - (10 - 7)) * 15 = 15",
488
+ "(25 - 21 + 7 - 10) * 15 = 15",
489
+ "(25 - (21 - 7 + 10)) * 15 = 15",
490
+ "(25 - (21 - 7) - 10) * 15 = 15",
491
+ "25 * 21 / (7 * (15 - 10)) = 15",
492
+ "25 * 21 / (7 * 15) + 10 = 15",
493
+ "25 * 21 / 7 / (15 - 10) = 15",
494
+ "25 * 21 / 7 / 15 + 10 = 15",
495
+ "25 * (21 / 7) / (15 - 10) = 15",
496
+ "25 * (21 / 7) / 15 + 10 = 15",
497
+ "25 * 21 / ((15 - 10) * 7) = 15",
498
+ "25 * 21 / (15 - 10) / 7 = 15",
499
+ "25 * 21 / (15 * 7) + 10 = 15",
500
+ "25 * 21 / 15 / 7 + 10 = 15"
501
+ ])
502
+ end
503
+
504
+ private
505
+
506
+ def compare_solutions(target, actual_exprs, expected_exprs)
507
+ solution = make_solution(target, actual_exprs)
508
+
509
+ expected_exprs.zip(solution.infix).each_with_index do |(expected, expr), index|
510
+ assert_equal expected, expr, "Wrong value in index #{index}"
511
+ end
512
+ end
513
+
514
+ def make_solution(target, postfixes)
515
+ solution = Rypto::Solution.new target
516
+
517
+ postfixes.each do |postfix|
518
+ expr = postfix.map {|e| e.to_i > 0 ? e.to_i : e}
519
+ solution.push expr
520
+ end
521
+
522
+ solution
523
+ end
524
+ end
data/test/test_solver.rb CHANGED
@@ -458,10 +458,10 @@ class TestHand < Minitest::Test
458
458
  "(20 + 4 * 22) / 9 - 4 = 8",
459
459
  "(20 - 4) * 9 / (22 - 4) = 8",
460
460
  "(20 - 4) * 9 / (22 - 4) = 8",
461
- "(20 - 4) / (22 - 4) / 9 = 8",
462
- "(20 - 4) / (22 - 4) / 9 = 8",
463
- "(20 - 9) * 4 * 4 / 22 = 8",
464
- "(20 - 9) * 4 * 4 / 22 = 8",
461
+ "(20 - 4) / ((22 - 4) / 9) = 8",
462
+ "(20 - 4) / ((22 - 4) / 9) = 8",
463
+ "(20 - 9) * (4 * 4) / 22 = 8",
464
+ "(20 - 9) * (4 * 4) / 22 = 8",
465
465
  "(20 - 9) * 4 * 4 / 22 = 8",
466
466
  "(20 - 9) * 4 * 4 / 22 = 8",
467
467
  "(20 - 9) * 4 / 22 * 4 = 8",
@@ -470,10 +470,10 @@ class TestHand < Minitest::Test
470
470
  "(22 * 4 + 20) / 9 - 4 = 8",
471
471
  "(22 * 4 + 4 - 20) / 9 = 8",
472
472
  "(22 * 4 + 4 - 20) / 9 = 8",
473
+ "(22 * 4 - (20 - 4)) / 9 = 8",
474
+ "(22 * 4 - (20 - 4)) / 9 = 8",
473
475
  "(22 * 4 - 20 + 4) / 9 = 8",
474
476
  "(22 * 4 - 20 + 4) / 9 = 8",
475
- "(22 * 4 - 20 - 4) / 9 = 8",
476
- "(22 * 4 - 20 - 4) / 9 = 8",
477
477
  "(22 * 4 - 20) / 4 - 9 = 8",
478
478
  "(22 * 4 - 20) / 4 - 9 = 8",
479
479
  "(4 * (22 - 9) - 20) / 4 = 8",
@@ -482,46 +482,46 @@ class TestHand < Minitest::Test
482
482
  "(4 * 22 + 20) / 9 - 4 = 8",
483
483
  "(4 * 22 + 4 - 20) / 9 = 8",
484
484
  "(4 * 22 + 4 - 20) / 9 = 8",
485
+ "(4 * 22 - (20 - 4)) / 9 = 8",
486
+ "(4 * 22 - (20 - 4)) / 9 = 8",
485
487
  "(4 * 22 - 20 + 4) / 9 = 8",
486
488
  "(4 * 22 - 20 + 4) / 9 = 8",
487
- "(4 * 22 - 20 - 4) / 9 = 8",
488
- "(4 * 22 - 20 - 4) / 9 = 8",
489
489
  "(4 * 22 - 20) / 4 - 9 = 8",
490
490
  "(4 * 22 - 20) / 4 - 9 = 8",
491
- "(4 + 22 * 4 - 20) / 9 = 8",
492
- "(4 + 22 * 4 - 20) / 9 = 8",
491
+ "(4 + (22 * 4 - 20)) / 9 = 8",
492
+ "(4 + (22 * 4 - 20)) / 9 = 8",
493
+ "(4 + (4 * 22 - 20)) / 9 = 8",
494
+ "(4 + (4 * 22 - 20)) / 9 = 8",
493
495
  "(4 + 22 * 4 - 20) / 9 = 8",
494
496
  "(4 + 22 * 4 - 20) / 9 = 8",
495
497
  "(4 + 4 * 22 - 20) / 9 = 8",
496
498
  "(4 + 4 * 22 - 20) / 9 = 8",
497
- "(4 + 4 * 22 - 20) / 9 = 8",
498
- "(4 + 4 * 22 - 20) / 9 = 8",
499
499
  "(4 - 22 / (20 - 9)) * 4 = 8",
500
500
  "(4 - 22 / (20 - 9)) * 4 = 8",
501
+ "20 + (4 / 4 + 9) - 22 = 8",
502
+ "20 + (4 / 4 + 9) - 22 = 8",
503
+ "20 + (9 + 4 / 4) - 22 = 8",
504
+ "20 + (9 + 4 / 4) - 22 = 8",
501
505
  "20 + 4 / 4 + 9 - 22 = 8",
502
506
  "20 + 4 / 4 + 9 - 22 = 8",
503
- "20 + 4 / 4 + 9 - 22 = 8",
504
- "20 + 4 / 4 + 9 - 22 = 8",
505
- "20 + 4 / 4 - 22 - 9 = 8",
506
- "20 + 4 / 4 - 22 - 9 = 8",
507
- "20 + 9 + 4 / 4 - 22 = 8",
508
- "20 + 9 + 4 / 4 - 22 = 8",
507
+ "20 + 4 / 4 - (22 - 9) = 8",
508
+ "20 + 4 / 4 - (22 - 9) = 8",
509
509
  "20 + 9 + 4 / 4 - 22 = 8",
510
510
  "20 + 9 + 4 / 4 - 22 = 8",
511
+ "20 + 9 - (22 - 4 / 4) = 8",
512
+ "20 + 9 - (22 - 4 / 4) = 8",
511
513
  "20 + 9 - 22 + 4 / 4 = 8",
512
514
  "20 + 9 - 22 + 4 / 4 = 8",
513
- "20 + 9 - 22 - 4 / 4 = 8",
514
- "20 + 9 - 22 - 4 / 4 = 8",
515
- "20 - 22 - 4 / 4 + 9 = 8",
516
- "20 - 22 - 4 / 4 + 9 = 8",
517
- "20 - 22 - 4 / 4 - 9 = 8",
518
- "20 - 22 - 4 / 4 - 9 = 8",
519
- "20 - 22 - 9 + 4 / 4 = 8",
520
- "20 - 22 - 9 + 4 / 4 = 8",
521
- "20 - 22 - 9 + 4 / 4 = 8",
522
- "20 - 22 - 9 + 4 / 4 = 8",
523
- "20 - 22 - 9 - 4 / 4 = 8",
524
- "20 - 22 - 9 - 4 / 4 = 8",
515
+ "20 - (22 - (4 / 4 + 9)) = 8",
516
+ "20 - (22 - (4 / 4 + 9)) = 8",
517
+ "20 - (22 - (9 + 4 / 4)) = 8",
518
+ "20 - (22 - (9 + 4 / 4)) = 8",
519
+ "20 - (22 - 4 / 4 - 9) = 8",
520
+ "20 - (22 - 4 / 4 - 9) = 8",
521
+ "20 - (22 - 9 - 4 / 4) = 8",
522
+ "20 - (22 - 9 - 4 / 4) = 8",
523
+ "20 - (22 - 9) + 4 / 4 = 8",
524
+ "20 - (22 - 9) + 4 / 4 = 8",
525
525
  "22 - (20 + 4 * 9) / 4 = 8",
526
526
  "22 - (20 + 4 * 9) / 4 = 8",
527
527
  "22 - (20 + 9 * 4) / 4 = 8",
@@ -530,74 +530,74 @@ class TestHand < Minitest::Test
530
530
  "22 - (4 * 9 + 20) / 4 = 8",
531
531
  "22 - (9 * 4 + 20) / 4 = 8",
532
532
  "22 - (9 * 4 + 20) / 4 = 8",
533
- "4 * (20 - 9) * 4 / 22 = 8",
534
- "4 * (20 - 9) * 4 / 22 = 8",
535
- "4 * (20 - 9) * 4 / 22 = 8",
536
- "4 * (20 - 9) * 4 / 22 = 8",
533
+ "4 * ((20 - 9) * 4 / 22) = 8",
534
+ "4 * ((20 - 9) * 4 / 22) = 8",
535
+ "4 * ((20 - 9) * 4) / 22 = 8",
536
+ "4 * ((20 - 9) * 4) / 22 = 8",
537
537
  "4 * (20 - 9) * 4 / 22 = 8",
538
538
  "4 * (20 - 9) * 4 / 22 = 8",
539
539
  "4 * (20 - 9) / 22 * 4 = 8",
540
540
  "4 * (20 - 9) / 22 * 4 = 8",
541
+ "4 * (4 * (20 - 9) / 22) = 8",
542
+ "4 * (4 * (20 - 9) / 22) = 8",
543
+ "4 * (4 * (20 - 9)) / 22 = 8",
544
+ "4 * (4 * (20 - 9)) / 22 = 8",
541
545
  "4 * (4 - 22 / (20 - 9)) = 8",
542
546
  "4 * (4 - 22 / (20 - 9)) = 8",
547
+ "4 * (4 / (22 / (20 - 9))) = 8",
548
+ "4 * (4 / (22 / (20 - 9))) = 8",
543
549
  "4 * 4 * (20 - 9) / 22 = 8",
544
550
  "4 * 4 * (20 - 9) / 22 = 8",
545
- "4 * 4 * (20 - 9) / 22 = 8",
546
- "4 * 4 * (20 - 9) / 22 = 8",
547
- "4 * 4 * (20 - 9) / 22 = 8",
548
- "4 * 4 * (20 - 9) / 22 = 8",
549
- "4 * 4 / 22 / (20 - 9) = 8",
550
- "4 * 4 / 22 / (20 - 9) = 8",
551
- "4 * 4 / 22 / (20 - 9) = 8",
552
- "4 * 4 / 22 / (20 - 9) = 8",
553
- "4 / 22 / (20 - 9) * 4 = 8",
554
- "4 / 22 / (20 - 9) * 4 = 8",
555
- "4 / 4 + 20 + 9 - 22 = 8",
551
+ "4 * 4 / (22 / (20 - 9)) = 8",
552
+ "4 * 4 / (22 / (20 - 9)) = 8",
553
+ "4 / (22 / (20 - 9)) * 4 = 8",
554
+ "4 / (22 / (20 - 9)) * 4 = 8",
555
+ "4 / 4 + (20 + 9 - 22) = 8",
556
+ "4 / 4 + (20 + 9 - 22) = 8",
557
+ "4 / 4 + (20 + 9) - 22 = 8",
558
+ "4 / 4 + (20 + 9) - 22 = 8",
559
+ "4 / 4 + (20 - (22 - 9)) = 8",
560
+ "4 / 4 + (20 - (22 - 9)) = 8",
561
+ "4 / 4 + (9 + 20 - 22) = 8",
562
+ "4 / 4 + (9 + 20 - 22) = 8",
563
+ "4 / 4 + (9 + 20) - 22 = 8",
564
+ "4 / 4 + (9 + 20) - 22 = 8",
565
+ "4 / 4 + (9 - (22 - 20)) = 8",
566
+ "4 / 4 + (9 - (22 - 20)) = 8",
556
567
  "4 / 4 + 20 + 9 - 22 = 8",
557
568
  "4 / 4 + 20 + 9 - 22 = 8",
558
- "4 / 4 + 20 + 9 - 22 = 8",
559
- "4 / 4 + 20 + 9 - 22 = 8",
560
- "4 / 4 + 20 + 9 - 22 = 8",
561
- "4 / 4 + 20 - 22 - 9 = 8",
562
- "4 / 4 + 20 - 22 - 9 = 8",
563
- "4 / 4 + 20 - 22 - 9 = 8",
564
- "4 / 4 + 20 - 22 - 9 = 8",
565
- "4 / 4 + 9 + 20 - 22 = 8",
569
+ "4 / 4 + 20 - (22 - 9) = 8",
570
+ "4 / 4 + 20 - (22 - 9) = 8",
566
571
  "4 / 4 + 9 + 20 - 22 = 8",
567
572
  "4 / 4 + 9 + 20 - 22 = 8",
568
- "4 / 4 + 9 + 20 - 22 = 8",
569
- "4 / 4 + 9 + 20 - 22 = 8",
570
- "4 / 4 + 9 + 20 - 22 = 8",
571
- "4 / 4 + 9 - 22 - 20 = 8",
572
- "4 / 4 + 9 - 22 - 20 = 8",
573
- "4 / 4 + 9 - 22 - 20 = 8",
574
- "4 / 4 + 9 - 22 - 20 = 8",
573
+ "4 / 4 + 9 - (22 - 20) = 8",
574
+ "4 / 4 + 9 - (22 - 20) = 8",
575
575
  "9 * (20 - 4) / (22 - 4) = 8",
576
576
  "9 * (20 - 4) / (22 - 4) = 8",
577
+ "9 + (20 + 4 / 4) - 22 = 8",
578
+ "9 + (20 + 4 / 4) - 22 = 8",
579
+ "9 + (4 / 4 + 20) - 22 = 8",
580
+ "9 + (4 / 4 + 20) - 22 = 8",
577
581
  "9 + 20 + 4 / 4 - 22 = 8",
578
582
  "9 + 20 + 4 / 4 - 22 = 8",
579
- "9 + 20 + 4 / 4 - 22 = 8",
580
- "9 + 20 + 4 / 4 - 22 = 8",
583
+ "9 + 20 - (22 - 4 / 4) = 8",
584
+ "9 + 20 - (22 - 4 / 4) = 8",
581
585
  "9 + 20 - 22 + 4 / 4 = 8",
582
586
  "9 + 20 - 22 + 4 / 4 = 8",
583
- "9 + 20 - 22 - 4 / 4 = 8",
584
- "9 + 20 - 22 - 4 / 4 = 8",
585
- "9 + 4 / 4 + 20 - 22 = 8",
586
- "9 + 4 / 4 + 20 - 22 = 8",
587
587
  "9 + 4 / 4 + 20 - 22 = 8",
588
588
  "9 + 4 / 4 + 20 - 22 = 8",
589
- "9 + 4 / 4 - 22 - 20 = 8",
590
- "9 + 4 / 4 - 22 - 20 = 8",
591
- "9 - 22 - 20 + 4 / 4 = 8",
592
- "9 - 22 - 20 + 4 / 4 = 8",
593
- "9 - 22 - 20 + 4 / 4 = 8",
594
- "9 - 22 - 20 + 4 / 4 = 8",
595
- "9 - 22 - 20 - 4 / 4 = 8",
596
- "9 - 22 - 20 - 4 / 4 = 8",
597
- "9 - 22 - 4 / 4 + 20 = 8",
598
- "9 - 22 - 4 / 4 + 20 = 8",
599
- "9 - 22 - 4 / 4 - 20 = 8",
600
- "9 - 22 - 4 / 4 - 20 = 8"
589
+ "9 + 4 / 4 - (22 - 20) = 8",
590
+ "9 + 4 / 4 - (22 - 20) = 8",
591
+ "9 - (22 - (20 + 4 / 4)) = 8",
592
+ "9 - (22 - (20 + 4 / 4)) = 8",
593
+ "9 - (22 - (4 / 4 + 20)) = 8",
594
+ "9 - (22 - (4 / 4 + 20)) = 8",
595
+ "9 - (22 - 20 - 4 / 4) = 8",
596
+ "9 - (22 - 20 - 4 / 4) = 8",
597
+ "9 - (22 - 20) + 4 / 4 = 8",
598
+ "9 - (22 - 20) + 4 / 4 = 8",
599
+ "9 - (22 - 4 / 4 - 20) = 8",
600
+ "9 - (22 - 4 / 4 - 20) = 8"
601
601
  ]
602
602
  end
603
603
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rypto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Sortelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-28 00:00:00.000000000 Z
11
+ date: 2015-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -105,6 +105,7 @@ files:
105
105
  - test/test_deck.rb
106
106
  - test/test_hand.rb
107
107
  - test/test_helper.rb
108
+ - test/test_infix.rb
108
109
  - test/test_solver.rb
109
110
  homepage: https://github.com/sortelli/rypto
110
111
  licenses:
@@ -134,5 +135,6 @@ test_files:
134
135
  - test/test_deck.rb
135
136
  - test/test_hand.rb
136
137
  - test/test_helper.rb
138
+ - test/test_infix.rb
137
139
  - test/test_solver.rb
138
140
  has_rdoc: