ConstraintSolver 0.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.
Files changed (155) hide show
  1. data/bin/ConstraintSolver +24 -0
  2. data/doc/classes/Array.html +209 -0
  3. data/doc/classes/ConstraintSolver.html +242 -0
  4. data/doc/classes/ConstraintSolver/AbstractConstraint.html +317 -0
  5. data/doc/classes/ConstraintSolver/AllDifferentConstraint.html +451 -0
  6. data/doc/classes/ConstraintSolver/AllDifferentConstraintTest.html +397 -0
  7. data/doc/classes/ConstraintSolver/BinaryConstraint.html +483 -0
  8. data/doc/classes/ConstraintSolver/BinaryConstraintTest.html +367 -0
  9. data/doc/classes/ConstraintSolver/BinaryRelation.html +276 -0
  10. data/doc/classes/ConstraintSolver/BinaryRelationTest.html +194 -0
  11. data/doc/classes/ConstraintSolver/ConstraintList.html +208 -0
  12. data/doc/classes/ConstraintSolver/ConstraintListTest.html +252 -0
  13. data/doc/classes/ConstraintSolver/ConstraintSolver.html +353 -0
  14. data/doc/classes/ConstraintSolver/ConstraintSolverTest.html +403 -0
  15. data/doc/classes/ConstraintSolver/Domain.html +522 -0
  16. data/doc/classes/ConstraintSolver/DomainTest.html +356 -0
  17. data/doc/classes/ConstraintSolver/DomainWipeoutException.html +158 -0
  18. data/doc/classes/ConstraintSolver/Problem.html +239 -0
  19. data/doc/classes/ConstraintSolver/ProblemTest.html +227 -0
  20. data/doc/classes/ConstraintSolver/Solution.html +342 -0
  21. data/doc/classes/ConstraintSolver/SolutionTest.html +250 -0
  22. data/doc/classes/ConstraintSolver/UndoStackEmptyException.html +158 -0
  23. data/doc/classes/ConstraintSolver/Variable.html +418 -0
  24. data/doc/classes/ConstraintSolver/VariableTest.html +284 -0
  25. data/doc/classes/ExtensionsTest.html +233 -0
  26. data/doc/classes/Fixnum.html +153 -0
  27. data/doc/created.rid +1 -0
  28. data/doc/dot/f_0.dot +38 -0
  29. data/doc/dot/f_0.png +0 -0
  30. data/doc/dot/f_1.dot +392 -0
  31. data/doc/dot/f_1.png +0 -0
  32. data/doc/dot/f_10.dot +392 -0
  33. data/doc/dot/f_10.png +0 -0
  34. data/doc/dot/f_11.dot +38 -0
  35. data/doc/dot/f_11.png +0 -0
  36. data/doc/dot/f_12.dot +392 -0
  37. data/doc/dot/f_12.png +0 -0
  38. data/doc/dot/f_13.dot +392 -0
  39. data/doc/dot/f_13.png +0 -0
  40. data/doc/dot/f_14.dot +392 -0
  41. data/doc/dot/f_14.png +0 -0
  42. data/doc/dot/f_15.dot +392 -0
  43. data/doc/dot/f_15.png +0 -0
  44. data/doc/dot/f_16.dot +392 -0
  45. data/doc/dot/f_16.png +0 -0
  46. data/doc/dot/f_17.dot +392 -0
  47. data/doc/dot/f_17.png +0 -0
  48. data/doc/dot/f_18.dot +392 -0
  49. data/doc/dot/f_18.png +0 -0
  50. data/doc/dot/f_19.dot +392 -0
  51. data/doc/dot/f_19.png +0 -0
  52. data/doc/dot/f_2.dot +392 -0
  53. data/doc/dot/f_2.png +0 -0
  54. data/doc/dot/f_3.dot +392 -0
  55. data/doc/dot/f_3.png +0 -0
  56. data/doc/dot/f_4.dot +392 -0
  57. data/doc/dot/f_4.png +0 -0
  58. data/doc/dot/f_5.dot +392 -0
  59. data/doc/dot/f_5.png +0 -0
  60. data/doc/dot/f_6.dot +14 -0
  61. data/doc/dot/f_6.png +0 -0
  62. data/doc/dot/f_7.dot +392 -0
  63. data/doc/dot/f_7.png +0 -0
  64. data/doc/dot/f_8.dot +392 -0
  65. data/doc/dot/f_8.png +0 -0
  66. data/doc/dot/f_9.dot +392 -0
  67. data/doc/dot/f_9.png +0 -0
  68. data/doc/dot/m_10_0.dot +392 -0
  69. data/doc/dot/m_10_0.png +0 -0
  70. data/doc/dot/m_12_0.dot +392 -0
  71. data/doc/dot/m_12_0.png +0 -0
  72. data/doc/dot/m_13_0.dot +392 -0
  73. data/doc/dot/m_13_0.png +0 -0
  74. data/doc/dot/m_14_0.dot +392 -0
  75. data/doc/dot/m_14_0.png +0 -0
  76. data/doc/dot/m_15_0.dot +392 -0
  77. data/doc/dot/m_15_0.png +0 -0
  78. data/doc/dot/m_16_0.dot +392 -0
  79. data/doc/dot/m_16_0.png +0 -0
  80. data/doc/dot/m_17_0.dot +392 -0
  81. data/doc/dot/m_17_0.png +0 -0
  82. data/doc/dot/m_18_0.dot +392 -0
  83. data/doc/dot/m_18_0.png +0 -0
  84. data/doc/dot/m_19_0.dot +392 -0
  85. data/doc/dot/m_19_0.png +0 -0
  86. data/doc/dot/m_1_0.dot +392 -0
  87. data/doc/dot/m_1_0.png +0 -0
  88. data/doc/dot/m_2_0.dot +392 -0
  89. data/doc/dot/m_2_0.png +0 -0
  90. data/doc/dot/m_3_0.dot +392 -0
  91. data/doc/dot/m_3_0.png +0 -0
  92. data/doc/dot/m_4_0.dot +392 -0
  93. data/doc/dot/m_4_0.png +0 -0
  94. data/doc/dot/m_5_0.dot +392 -0
  95. data/doc/dot/m_5_0.png +0 -0
  96. data/doc/dot/m_7_0.dot +392 -0
  97. data/doc/dot/m_7_0.png +0 -0
  98. data/doc/dot/m_8_0.dot +392 -0
  99. data/doc/dot/m_8_0.png +0 -0
  100. data/doc/dot/m_9_0.dot +392 -0
  101. data/doc/dot/m_9_0.png +0 -0
  102. data/doc/files/lib/AbstractConstraint_rb.html +148 -0
  103. data/doc/files/lib/AllDifferentConstraint_rb.html +156 -0
  104. data/doc/files/lib/BinaryConstraint_rb.html +155 -0
  105. data/doc/files/lib/ConstraintList_rb.html +148 -0
  106. data/doc/files/lib/ConstraintSolver_rb.html +162 -0
  107. data/doc/files/lib/Domain_rb.html +155 -0
  108. data/doc/files/lib/Problem_rb.html +148 -0
  109. data/doc/files/lib/Solution_rb.html +148 -0
  110. data/doc/files/lib/Variable_rb.html +148 -0
  111. data/doc/files/lib/extensions_rb.html +108 -0
  112. data/doc/files/test/AllDifferentConstraintTest_rb.html +158 -0
  113. data/doc/files/test/BinaryConstraintTest_rb.html +158 -0
  114. data/doc/files/test/ConstraintListTest_rb.html +160 -0
  115. data/doc/files/test/ConstraintSolverTest_rb.html +164 -0
  116. data/doc/files/test/DomainTest_rb.html +156 -0
  117. data/doc/files/test/ProblemTest_rb.html +160 -0
  118. data/doc/files/test/SolutionTest_rb.html +159 -0
  119. data/doc/files/test/TestSuite_rb.html +113 -0
  120. data/doc/files/test/VariableTest_rb.html +157 -0
  121. data/doc/files/test/extensionsTest_rb.html +118 -0
  122. data/doc/fr_class_index.html +51 -0
  123. data/doc/fr_file_index.html +46 -0
  124. data/doc/fr_method_index.html +133 -0
  125. data/doc/index.html +24 -0
  126. data/examples/example.rb +7 -0
  127. data/examples/queens.rb +13 -0
  128. data/examples/soft.rb +14 -0
  129. data/lib/AbstractConstraint.rb +45 -0
  130. data/lib/AllDifferentConstraint.rb +160 -0
  131. data/lib/BinaryConstraint.rb +187 -0
  132. data/lib/ConstraintList.rb +31 -0
  133. data/lib/ConstraintSolver.rb +213 -0
  134. data/lib/Domain.rb +100 -0
  135. data/lib/GraphUtils.rb +293 -0
  136. data/lib/OneOfEqualsConstraint.rb +81 -0
  137. data/lib/Problem.rb +30 -0
  138. data/lib/Solution.rb +56 -0
  139. data/lib/TupleConstraint.rb +111 -0
  140. data/lib/Variable.rb +74 -0
  141. data/lib/extensions.rb +55 -0
  142. data/test/AllDifferentConstraintTest.rb +140 -0
  143. data/test/BinaryConstraintTest.rb +108 -0
  144. data/test/ConstraintListTest.rb +41 -0
  145. data/test/ConstraintSolverTest.rb +274 -0
  146. data/test/DomainTest.rb +83 -0
  147. data/test/GraphUtilsTest.rb +83 -0
  148. data/test/OneOfEqualsConstraintTest.rb +82 -0
  149. data/test/ProblemTest.rb +35 -0
  150. data/test/SolutionTest.rb +35 -0
  151. data/test/TestSuite.rb +10 -0
  152. data/test/TupleConstraintTest.rb +151 -0
  153. data/test/VariableTest.rb +47 -0
  154. data/test/extensionsTest.rb +57 -0
  155. metadata +212 -0
@@ -0,0 +1,317 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: ConstraintSolver::AbstractConstraint</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">ConstraintSolver::AbstractConstraint</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/AbstractConstraint_rb.html">
59
+ lib/AbstractConstraint.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+ <div id="diagram">
81
+ <map id="map" name="map">
82
+ <area shape="rect" coords="1537,5,1665,53" href="../Test/Unit/TestCase.html" alt="Test::Unit::TestCase" />
83
+ <area shape="rect" coords="937,133,1089,181" href="AllDifferentConstraintTest.html" alt="AllDifferentConstraintTest" />
84
+ <area shape="rect" coords="2305,133,2396,181" href="SolutionTest.html" alt="SolutionTest" />
85
+ <area shape="rect" coords="204,133,335,181" href="ConstraintSolverTest.html" alt="ConstraintSolverTest" />
86
+ <area shape="rect" coords="1923,133,2040,181" href="ConstraintListTest.html" alt="ConstraintListTest" />
87
+ <area shape="rect" coords="1123,133,1213,181" href="VariableTest.html" alt="VariableTest" />
88
+ <area shape="rect" coords="2429,133,2517,181" href="DomainTest.html" alt="DomainTest" />
89
+ <area shape="rect" coords="1387,133,1517,181" href="BinaryConstraintTest.html" alt="BinaryConstraintTest" />
90
+ <area shape="rect" coords="1797,133,1888,181" href="ProblemTest.html" alt="ProblemTest" />
91
+ <area shape="rect" coords="1541,133,1661,181" href="BinaryRelationTest.html" alt="BinaryRelationTest" />
92
+ <area shape="rect" coords="589,5,667,53" href="../Exception.html" alt="Exception" />
93
+ <area shape="rect" coords="463,133,615,181" href="DomainWipeoutException.html" alt="DomainWipeoutException" />
94
+ <area shape="rect" coords="639,133,799,181" href="UndoStackEmptyException.html" alt="UndoStackEmptyException" />
95
+ <area shape="rect" coords="53,133,171,181" href="AbstractConstraint.html" alt="AbstractConstraint" />
96
+ <area shape="rect" coords="160,237,269,285" href="BinaryConstraint.html" alt="BinaryConstraint" />
97
+ <area shape="rect" coords="301,237,432,285" href="AllDifferentConstraint.html" alt="AllDifferentConstraint" />
98
+ <area shape="rect" coords="2085,5,2157,53" href="../Array.html" alt="Array" />
99
+ <area shape="rect" coords="2073,133,2169,181" href="ConstraintList.html" alt="ConstraintList" />
100
+ <area shape="rect" coords="37,237,136,285" href="BinaryRelation.html" alt="BinaryRelation" />
101
+ <area shape="rect" coords="2201,133,2273,181" href="Variable.html" alt="Variable" />
102
+ <area shape="rect" coords="1693,133,1765,181" href="Solution.html" alt="Solution" />
103
+ <area shape="rect" coords="1245,133,1355,181" href="ConstraintSolver.html" alt="ConstraintSolver" />
104
+ <area shape="rect" coords="831,133,903,181" href="Problem.html" alt="Problem" />
105
+ <area shape="rect" coords="367,133,439,181" href="Domain.html" alt="Domain" />
106
+ <area shape="rect" coords="2419,99,2531,192" href="../ConstraintSolver.html" alt="test/DomainTest.rb" />
107
+ <area shape="rect" coords="2295,99,2408,192" href="../ConstraintSolver.html" alt="test/SolutionTest.rb" />
108
+ <area shape="rect" coords="27,203,280,296" href="../ConstraintSolver.html" alt="lib/BinaryConstraint.rb" />
109
+ <area shape="rect" coords="2191,99,2284,192" href="../ConstraintSolver.html" alt="lib/Variable.rb" />
110
+ <area shape="rect" coords="1912,99,2052,192" href="../ConstraintSolver.html" alt="test/ConstraintListTest.rb" />
111
+ <area shape="rect" coords="2063,99,2180,192" href="../ConstraintSolver.html" alt="lib/ConstraintList.rb" />
112
+ <area shape="rect" coords="1787,99,1901,192" href="../ConstraintSolver.html" alt="test/ProblemTest.rb" />
113
+ <area shape="rect" coords="1683,99,1776,192" href="../ConstraintSolver.html" alt="lib/Solution.rb" />
114
+ <area shape="rect" coords="1376,99,1672,192" href="../ConstraintSolver.html" alt="test/BinaryConstraintTest.rb" />
115
+ <area shape="rect" coords="1235,99,1365,192" href="../ConstraintSolver.html" alt="lib/ConstraintSolver.rb" />
116
+ <area shape="rect" coords="1111,99,1224,192" href="../ConstraintSolver.html" alt="test/VariableTest.rb" />
117
+ <area shape="rect" coords="924,99,1100,192" href="../ConstraintSolver.html" alt="test/AllDifferentConstraintTest.rb" />
118
+ <area shape="rect" coords="291,203,443,296" href="../ConstraintSolver.html" alt="lib/AllDifferentConstraint.rb" />
119
+ <area shape="rect" coords="820,99,913,192" href="../ConstraintSolver.html" alt="lib/Problem.rb" />
120
+ <area shape="rect" coords="192,99,345,192" href="../ConstraintSolver.html" alt="test/ConstraintSolverTest.rb" />
121
+ <area shape="rect" coords="356,99,809,192" href="../ConstraintSolver.html" alt="lib/Domain.rb" />
122
+ <area shape="rect" coords="43,99,181,192" href="../ConstraintSolver.html" alt="lib/AbstractConstraint.rb" />
123
+ <area shape="rect" coords="16,64,2541,307" href="../ConstraintSolver.html" alt="ConstraintSolver" />
124
+ </map>
125
+ <img src="../../dot/m_19_0.png" usemap="#map" border="0" alt="dot/m_19_0.png">
126
+ </div>
127
+
128
+ <div id="description">
129
+ <p>
130
+ Represents a constraint. To be used as a guidance to see which methods
131
+ constraints need to implement.
132
+ </p>
133
+
134
+ </div>
135
+
136
+
137
+ </div>
138
+
139
+ <div id="method-list">
140
+ <h3 class="section-bar">Methods</h3>
141
+
142
+ <div class="name-list">
143
+ <a href="#M000025">allAssigned?</a>&nbsp;&nbsp;
144
+ <a href="#M000027">each</a>&nbsp;&nbsp;
145
+ <a href="#M000024">holds?</a>&nbsp;&nbsp;
146
+ <a href="#M000026">include?</a>&nbsp;&nbsp;
147
+ <a href="#M000028">revise</a>&nbsp;&nbsp;
148
+ </div>
149
+ </div>
150
+
151
+ </div>
152
+
153
+
154
+ <!-- if includes -->
155
+
156
+ <div id="section">
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+ <!-- if method_list -->
166
+ <div id="methods">
167
+ <h3 class="section-bar">Public Instance methods</h3>
168
+
169
+ <div id="method-M000025" class="method-detail">
170
+ <a name="M000025"></a>
171
+
172
+ <div class="method-heading">
173
+ <a href="#M000025" class="method-signature">
174
+ <span class="method-name">allAssigned?</span><span class="method-args">()</span>
175
+ </a>
176
+ </div>
177
+
178
+ <div class="method-description">
179
+ <p>
180
+ Checks whether all variables involved in the constraint have values
181
+ assigned to them.
182
+ </p>
183
+ <p><a class="source-toggle" href="#"
184
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
185
+ <div class="method-source-code" id="M000025-source">
186
+ <pre>
187
+ <span class="ruby-comment cmt"># File lib/AbstractConstraint.rb, line 16</span>
188
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allAssigned?</span>
189
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;must implement allAssigned?&quot;</span>
190
+ <span class="ruby-keyword kw">end</span>
191
+ </pre>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ <div id="method-M000027" class="method-detail">
197
+ <a name="M000027"></a>
198
+
199
+ <div class="method-heading">
200
+ <a href="#M000027" class="method-signature">
201
+ <span class="method-name">each</span><span class="method-args">()</span>
202
+ </a>
203
+ </div>
204
+
205
+ <div class="method-description">
206
+ <p>
207
+ Iterates over all the variables involved in the constraint.
208
+ </p>
209
+ <p><a class="source-toggle" href="#"
210
+ onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
211
+ <div class="method-source-code" id="M000027-source">
212
+ <pre>
213
+ <span class="ruby-comment cmt"># File lib/AbstractConstraint.rb, line 26</span>
214
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
215
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;must implement each&quot;</span>
216
+ <span class="ruby-keyword kw">end</span>
217
+ </pre>
218
+ </div>
219
+ </div>
220
+ </div>
221
+
222
+ <div id="method-M000024" class="method-detail">
223
+ <a name="M000024"></a>
224
+
225
+ <div class="method-heading">
226
+ <a href="#M000024" class="method-signature">
227
+ <span class="method-name">holds?</span><span class="method-args">()</span>
228
+ </a>
229
+ </div>
230
+
231
+ <div class="method-description">
232
+ <p>
233
+ Checks whether the constraint holds for the current assignments of the
234
+ involved variables. Will raise a RuntimeError if not all the variables that
235
+ are involved have been asigned values.
236
+ </p>
237
+ <p><a class="source-toggle" href="#"
238
+ onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
239
+ <div class="method-source-code" id="M000024-source">
240
+ <pre>
241
+ <span class="ruby-comment cmt"># File lib/AbstractConstraint.rb, line 10</span>
242
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">holds?</span>
243
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;must implement holds?&quot;</span>
244
+ <span class="ruby-keyword kw">end</span>
245
+ </pre>
246
+ </div>
247
+ </div>
248
+ </div>
249
+
250
+ <div id="method-M000026" class="method-detail">
251
+ <a name="M000026"></a>
252
+
253
+ <div class="method-heading">
254
+ <a href="#M000026" class="method-signature">
255
+ <span class="method-name">include?</span><span class="method-args">(variable)</span>
256
+ </a>
257
+ </div>
258
+
259
+ <div class="method-description">
260
+ <p>
261
+ Checks whether the constraint includes variable.
262
+ </p>
263
+ <p><a class="source-toggle" href="#"
264
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
265
+ <div class="method-source-code" id="M000026-source">
266
+ <pre>
267
+ <span class="ruby-comment cmt"># File lib/AbstractConstraint.rb, line 21</span>
268
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">variable</span>)
269
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;must implement include?(variable)&quot;</span>
270
+ <span class="ruby-keyword kw">end</span>
271
+ </pre>
272
+ </div>
273
+ </div>
274
+ </div>
275
+
276
+ <div id="method-M000028" class="method-detail">
277
+ <a name="M000028"></a>
278
+
279
+ <div class="method-heading">
280
+ <a href="#M000028" class="method-signature">
281
+ <span class="method-name">revise</span><span class="method-args">()</span>
282
+ </a>
283
+ </div>
284
+
285
+ <div class="method-description">
286
+ <p>
287
+ Prunes the values from the domains of the involved variables that cannot be
288
+ assigned to the respective variables because the constraint would be
289
+ violated. Returns a list of the variables whose domains were pruned and the
290
+ number of times the constraint was checked.
291
+ </p>
292
+ <p><a class="source-toggle" href="#"
293
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
294
+ <div class="method-source-code" id="M000028-source">
295
+ <pre>
296
+ <span class="ruby-comment cmt"># File lib/AbstractConstraint.rb, line 34</span>
297
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revise</span>
298
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;must implement revise&quot;</span>
299
+ <span class="ruby-keyword kw">end</span>
300
+ </pre>
301
+ </div>
302
+ </div>
303
+ </div>
304
+
305
+
306
+ </div>
307
+
308
+
309
+ </div>
310
+
311
+
312
+ <div id="validator-badges">
313
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
314
+ </div>
315
+
316
+ </body>
317
+ </html>
@@ -0,0 +1,451 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: ConstraintSolver::AllDifferentConstraint</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">ConstraintSolver::AllDifferentConstraint</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/AllDifferentConstraint_rb.html">
59
+ lib/AllDifferentConstraint.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="AbstractConstraint.html">
69
+ AbstractConstraint
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+ <div id="diagram">
83
+ <map id="map" name="map">
84
+ <area shape="rect" coords="1537,5,1665,53" href="../Test/Unit/TestCase.html" alt="Test::Unit::TestCase" />
85
+ <area shape="rect" coords="937,133,1089,181" href="AllDifferentConstraintTest.html" alt="AllDifferentConstraintTest" />
86
+ <area shape="rect" coords="2305,133,2396,181" href="SolutionTest.html" alt="SolutionTest" />
87
+ <area shape="rect" coords="204,133,335,181" href="ConstraintSolverTest.html" alt="ConstraintSolverTest" />
88
+ <area shape="rect" coords="1923,133,2040,181" href="ConstraintListTest.html" alt="ConstraintListTest" />
89
+ <area shape="rect" coords="1123,133,1213,181" href="VariableTest.html" alt="VariableTest" />
90
+ <area shape="rect" coords="2429,133,2517,181" href="DomainTest.html" alt="DomainTest" />
91
+ <area shape="rect" coords="1387,133,1517,181" href="BinaryConstraintTest.html" alt="BinaryConstraintTest" />
92
+ <area shape="rect" coords="1797,133,1888,181" href="ProblemTest.html" alt="ProblemTest" />
93
+ <area shape="rect" coords="1541,133,1661,181" href="BinaryRelationTest.html" alt="BinaryRelationTest" />
94
+ <area shape="rect" coords="589,5,667,53" href="../Exception.html" alt="Exception" />
95
+ <area shape="rect" coords="463,133,615,181" href="DomainWipeoutException.html" alt="DomainWipeoutException" />
96
+ <area shape="rect" coords="639,133,799,181" href="UndoStackEmptyException.html" alt="UndoStackEmptyException" />
97
+ <area shape="rect" coords="53,133,171,181" href="AbstractConstraint.html" alt="AbstractConstraint" />
98
+ <area shape="rect" coords="160,237,269,285" href="BinaryConstraint.html" alt="BinaryConstraint" />
99
+ <area shape="rect" coords="301,237,432,285" href="AllDifferentConstraint.html" alt="AllDifferentConstraint" />
100
+ <area shape="rect" coords="2085,5,2157,53" href="../Array.html" alt="Array" />
101
+ <area shape="rect" coords="2073,133,2169,181" href="ConstraintList.html" alt="ConstraintList" />
102
+ <area shape="rect" coords="37,237,136,285" href="BinaryRelation.html" alt="BinaryRelation" />
103
+ <area shape="rect" coords="2201,133,2273,181" href="Variable.html" alt="Variable" />
104
+ <area shape="rect" coords="1693,133,1765,181" href="Solution.html" alt="Solution" />
105
+ <area shape="rect" coords="1245,133,1355,181" href="ConstraintSolver.html" alt="ConstraintSolver" />
106
+ <area shape="rect" coords="831,133,903,181" href="Problem.html" alt="Problem" />
107
+ <area shape="rect" coords="367,133,439,181" href="Domain.html" alt="Domain" />
108
+ <area shape="rect" coords="2419,99,2531,192" href="../ConstraintSolver.html" alt="test/DomainTest.rb" />
109
+ <area shape="rect" coords="2295,99,2408,192" href="../ConstraintSolver.html" alt="test/SolutionTest.rb" />
110
+ <area shape="rect" coords="27,203,280,296" href="../ConstraintSolver.html" alt="lib/BinaryConstraint.rb" />
111
+ <area shape="rect" coords="2191,99,2284,192" href="../ConstraintSolver.html" alt="lib/Variable.rb" />
112
+ <area shape="rect" coords="1912,99,2052,192" href="../ConstraintSolver.html" alt="test/ConstraintListTest.rb" />
113
+ <area shape="rect" coords="2063,99,2180,192" href="../ConstraintSolver.html" alt="lib/ConstraintList.rb" />
114
+ <area shape="rect" coords="1787,99,1901,192" href="../ConstraintSolver.html" alt="test/ProblemTest.rb" />
115
+ <area shape="rect" coords="1683,99,1776,192" href="../ConstraintSolver.html" alt="lib/Solution.rb" />
116
+ <area shape="rect" coords="1376,99,1672,192" href="../ConstraintSolver.html" alt="test/BinaryConstraintTest.rb" />
117
+ <area shape="rect" coords="1235,99,1365,192" href="../ConstraintSolver.html" alt="lib/ConstraintSolver.rb" />
118
+ <area shape="rect" coords="1111,99,1224,192" href="../ConstraintSolver.html" alt="test/VariableTest.rb" />
119
+ <area shape="rect" coords="924,99,1100,192" href="../ConstraintSolver.html" alt="test/AllDifferentConstraintTest.rb" />
120
+ <area shape="rect" coords="291,203,443,296" href="../ConstraintSolver.html" alt="lib/AllDifferentConstraint.rb" />
121
+ <area shape="rect" coords="820,99,913,192" href="../ConstraintSolver.html" alt="lib/Problem.rb" />
122
+ <area shape="rect" coords="192,99,345,192" href="../ConstraintSolver.html" alt="test/ConstraintSolverTest.rb" />
123
+ <area shape="rect" coords="356,99,809,192" href="../ConstraintSolver.html" alt="lib/Domain.rb" />
124
+ <area shape="rect" coords="43,99,181,192" href="../ConstraintSolver.html" alt="lib/AbstractConstraint.rb" />
125
+ <area shape="rect" coords="16,64,2541,307" href="../ConstraintSolver.html" alt="ConstraintSolver" />
126
+ </map>
127
+ <img src="../../dot/m_19_0.png" usemap="#map" border="0" alt="dot/m_19_0.png">
128
+ </div>
129
+
130
+ <div id="description">
131
+ <p>
132
+ Represents the all different constraint.
133
+ </p>
134
+
135
+ </div>
136
+
137
+
138
+ </div>
139
+
140
+ <div id="method-list">
141
+ <h3 class="section-bar">Methods</h3>
142
+
143
+ <div class="name-list">
144
+ <a href="#M000105">==</a>&nbsp;&nbsp;
145
+ <a href="#M000101">allAssigned?</a>&nbsp;&nbsp;
146
+ <a href="#M000106">each</a>&nbsp;&nbsp;
147
+ <a href="#M000100">holds?</a>&nbsp;&nbsp;
148
+ <a href="#M000102">include?</a>&nbsp;&nbsp;
149
+ <a href="#M000099">new</a>&nbsp;&nbsp;
150
+ <a href="#M000107">revise</a>&nbsp;&nbsp;
151
+ <a href="#M000103">to_s</a>&nbsp;&nbsp;
152
+ <a href="#M000104">to_s_full</a>&nbsp;&nbsp;
153
+ </div>
154
+ </div>
155
+
156
+ </div>
157
+
158
+
159
+ <!-- if includes -->
160
+
161
+ <div id="section">
162
+
163
+
164
+
165
+
166
+
167
+ <div id="attribute-list">
168
+ <h3 class="section-bar">Attributes</h3>
169
+
170
+ <div class="name-list">
171
+ <table>
172
+ <tr class="top-aligned-row context-row">
173
+ <td class="context-item-name">variables</td>
174
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
175
+ <td class="context-item-desc"></td>
176
+ </tr>
177
+ </table>
178
+ </div>
179
+ </div>
180
+
181
+
182
+
183
+ <!-- if method_list -->
184
+ <div id="methods">
185
+ <h3 class="section-bar">Public Class methods</h3>
186
+
187
+ <div id="method-M000099" class="method-detail">
188
+ <a name="M000099"></a>
189
+
190
+ <div class="method-heading">
191
+ <a href="#M000099" class="method-signature">
192
+ <span class="method-name">new</span><span class="method-args">(variables)</span>
193
+ </a>
194
+ </div>
195
+
196
+ <div class="method-description">
197
+ <p>
198
+ Initialises a <a href="AllDifferentConstraint.html#M000099">new</a> all
199
+ different constraint. The constructor takes the list of variables that must
200
+ be different as an argument.
201
+ </p>
202
+ <p><a class="source-toggle" href="#"
203
+ onclick="toggleCode('M000099-source');return false;">[Source]</a></p>
204
+ <div class="method-source-code" id="M000099-source">
205
+ <pre>
206
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 13</span>
207
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">variables</span>)
208
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">variables</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">variables</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
209
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;List of variables must contain at least two elements!&quot;</span>
210
+ <span class="ruby-keyword kw">end</span>
211
+ <span class="ruby-ivar">@variables</span> = <span class="ruby-identifier">variables</span>
212
+ <span class="ruby-keyword kw">end</span>
213
+ </pre>
214
+ </div>
215
+ </div>
216
+ </div>
217
+
218
+ <h3 class="section-bar">Public Instance methods</h3>
219
+
220
+ <div id="method-M000105" class="method-detail">
221
+ <a name="M000105"></a>
222
+
223
+ <div class="method-heading">
224
+ <a href="#M000105" class="method-signature">
225
+ <span class="method-name">==</span><span class="method-args">(constraint)</span>
226
+ </a>
227
+ </div>
228
+
229
+ <div class="method-description">
230
+ <p><a class="source-toggle" href="#"
231
+ onclick="toggleCode('M000105-source');return false;">[Source]</a></p>
232
+ <div class="method-source-code" id="M000105-source">
233
+ <pre>
234
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 54</span>
235
+ <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">constraint</span>)
236
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">constraint</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">AllDifferentConstraint</span>)
237
+ <span class="ruby-ivar">@variables</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">constraint</span>.<span class="ruby-identifier">variables</span>
238
+ <span class="ruby-keyword kw">end</span>
239
+ </pre>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ <div id="method-M000101" class="method-detail">
245
+ <a name="M000101"></a>
246
+
247
+ <div class="method-heading">
248
+ <a href="#M000101" class="method-signature">
249
+ <span class="method-name">allAssigned?</span><span class="method-args">()</span>
250
+ </a>
251
+ </div>
252
+
253
+ <div class="method-description">
254
+ <p><a class="source-toggle" href="#"
255
+ onclick="toggleCode('M000101-source');return false;">[Source]</a></p>
256
+ <div class="method-source-code" id="M000101-source">
257
+ <pre>
258
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 38</span>
259
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allAssigned?</span>
260
+ (<span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">assigned?</span> }).<span class="ruby-identifier">foldLeft</span>(<span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>,<span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">&amp;</span> <span class="ruby-identifier">b</span> })
261
+ <span class="ruby-keyword kw">end</span>
262
+ </pre>
263
+ </div>
264
+ </div>
265
+ </div>
266
+
267
+ <div id="method-M000106" class="method-detail">
268
+ <a name="M000106"></a>
269
+
270
+ <div class="method-heading">
271
+ <a href="#M000106" class="method-signature">
272
+ <span class="method-name">each</span><span class="method-args">() {|var| ...}</span>
273
+ </a>
274
+ </div>
275
+
276
+ <div class="method-description">
277
+ <p><a class="source-toggle" href="#"
278
+ onclick="toggleCode('M000106-source');return false;">[Source]</a></p>
279
+ <div class="method-source-code" id="M000106-source">
280
+ <pre>
281
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 59</span>
282
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
283
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
284
+ <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">var</span>
285
+ }
286
+ <span class="ruby-keyword kw">end</span>
287
+ </pre>
288
+ </div>
289
+ </div>
290
+ </div>
291
+
292
+ <div id="method-M000100" class="method-detail">
293
+ <a name="M000100"></a>
294
+
295
+ <div class="method-heading">
296
+ <a href="#M000100" class="method-signature">
297
+ <span class="method-name">holds?</span><span class="method-args">()</span>
298
+ </a>
299
+ </div>
300
+
301
+ <div class="method-description">
302
+ <p>
303
+ Checks whether all the variables have different values assigned to them.
304
+ </p>
305
+ <p><a class="source-toggle" href="#"
306
+ onclick="toggleCode('M000100-source');return false;">[Source]</a></p>
307
+ <div class="method-source-code" id="M000100-source">
308
+ <pre>
309
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 22</span>
310
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">holds?</span>
311
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">allAssigned?</span>
312
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">variable</span><span class="ruby-operator">|</span>
313
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">eachAfter</span>(<span class="ruby-identifier">variable</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">otherVariable</span><span class="ruby-operator">|</span>
314
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">variable</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">otherVariable</span>.<span class="ruby-identifier">value</span>
315
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
316
+ <span class="ruby-keyword kw">end</span>
317
+ }
318
+ }
319
+ <span class="ruby-keyword kw">else</span>
320
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">&quot;Cannot check whether &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span>
321
+ <span class="ruby-value str">&quot; holds because not all variables have been assigned values!&quot;</span>
322
+ <span class="ruby-keyword kw">end</span>
323
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
324
+ <span class="ruby-keyword kw">end</span>
325
+ </pre>
326
+ </div>
327
+ </div>
328
+ </div>
329
+
330
+ <div id="method-M000102" class="method-detail">
331
+ <a name="M000102"></a>
332
+
333
+ <div class="method-heading">
334
+ <a href="#M000102" class="method-signature">
335
+ <span class="method-name">include?</span><span class="method-args">(variable)</span>
336
+ </a>
337
+ </div>
338
+
339
+ <div class="method-description">
340
+ <p><a class="source-toggle" href="#"
341
+ onclick="toggleCode('M000102-source');return false;">[Source]</a></p>
342
+ <div class="method-source-code" id="M000102-source">
343
+ <pre>
344
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 42</span>
345
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">variable</span>)
346
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">variable</span>)
347
+ <span class="ruby-keyword kw">end</span>
348
+ </pre>
349
+ </div>
350
+ </div>
351
+ </div>
352
+
353
+ <div id="method-M000107" class="method-detail">
354
+ <a name="M000107"></a>
355
+
356
+ <div class="method-heading">
357
+ <a href="#M000107" class="method-signature">
358
+ <span class="method-name">revise</span><span class="method-args">()</span>
359
+ </a>
360
+ </div>
361
+
362
+ <div class="method-description">
363
+ <p><a class="source-toggle" href="#"
364
+ onclick="toggleCode('M000107-source');return false;">[Source]</a></p>
365
+ <div class="method-source-code" id="M000107-source">
366
+ <pre>
367
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 65</span>
368
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revise</span>
369
+ <span class="ruby-identifier">revisedVariables</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
370
+ <span class="ruby-identifier">pruneList</span> = <span class="ruby-constant">Set</span>.<span class="ruby-identifier">new</span>
371
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">find_all</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">assigned?</span> }.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">assigned</span><span class="ruby-operator">|</span>
372
+ <span class="ruby-identifier">pruneList</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">assigned</span>.<span class="ruby-identifier">value</span>
373
+ }
374
+ <span class="ruby-identifier">unassignedVariables</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">find_all</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">assigned?</span> }
375
+ <span class="ruby-identifier">unassignedVariables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">unassigned</span><span class="ruby-operator">|</span>
376
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">unassigned</span>.<span class="ruby-identifier">domain</span>.<span class="ruby-identifier">values</span> <span class="ruby-operator">&amp;</span> <span class="ruby-identifier">pruneList</span>).<span class="ruby-identifier">empty?</span>
377
+ <span class="ruby-identifier">unassigned</span>.<span class="ruby-identifier">domain</span>.<span class="ruby-identifier">prune</span>(<span class="ruby-identifier">pruneList</span>)
378
+ <span class="ruby-identifier">revisedVariables</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">unassigned</span>
379
+ <span class="ruby-keyword kw">end</span>
380
+ }
381
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">unassignedVariables</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span>
382
+ ((<span class="ruby-identifier">unassignedVariables</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">values</span> }).<span class="ruby-identifier">foldLeft</span>(<span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>,<span class="ruby-identifier">y</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">y</span> })).<span class="ruby-identifier">size</span>
383
+ <span class="ruby-identifier">revisedVariables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">domain</span>.<span class="ruby-identifier">undoPruning</span> }
384
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">DomainWipeoutException</span>
385
+ <span class="ruby-keyword kw">end</span>
386
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">revisedVariables</span>, <span class="ruby-value">0</span>
387
+ <span class="ruby-keyword kw">end</span>
388
+ </pre>
389
+ </div>
390
+ </div>
391
+ </div>
392
+
393
+ <div id="method-M000103" class="method-detail">
394
+ <a name="M000103"></a>
395
+
396
+ <div class="method-heading">
397
+ <a href="#M000103" class="method-signature">
398
+ <span class="method-name">to_s</span><span class="method-args">()</span>
399
+ </a>
400
+ </div>
401
+
402
+ <div class="method-description">
403
+ <p><a class="source-toggle" href="#"
404
+ onclick="toggleCode('M000103-source');return false;">[Source]</a></p>
405
+ <div class="method-source-code" id="M000103-source">
406
+ <pre>
407
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 46</span>
408
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
409
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">name</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot; != &quot;</span>)
410
+ <span class="ruby-keyword kw">end</span>
411
+ </pre>
412
+ </div>
413
+ </div>
414
+ </div>
415
+
416
+ <div id="method-M000104" class="method-detail">
417
+ <a name="M000104"></a>
418
+
419
+ <div class="method-heading">
420
+ <a href="#M000104" class="method-signature">
421
+ <span class="method-name">to_s_full</span><span class="method-args">()</span>
422
+ </a>
423
+ </div>
424
+
425
+ <div class="method-description">
426
+ <p><a class="source-toggle" href="#"
427
+ onclick="toggleCode('M000104-source');return false;">[Source]</a></p>
428
+ <div class="method-source-code" id="M000104-source">
429
+ <pre>
430
+ <span class="ruby-comment cmt"># File lib/AllDifferentConstraint.rb, line 50</span>
431
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s_full</span>
432
+ <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">to_s</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot; != &quot;</span>)
433
+ <span class="ruby-keyword kw">end</span>
434
+ </pre>
435
+ </div>
436
+ </div>
437
+ </div>
438
+
439
+
440
+ </div>
441
+
442
+
443
+ </div>
444
+
445
+
446
+ <div id="validator-badges">
447
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
448
+ </div>
449
+
450
+ </body>
451
+ </html>