gecoder-with-gecode 0.8.2-mswin32 → 0.8.3-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/CHANGES +14 -0
  2. data/lib/gecode.dll +0 -0
  3. data/lib/gecoder/bindings/bindings.rb +104 -46
  4. data/lib/gecoder/interface/binding_changes.rb +1 -301
  5. data/lib/gecoder/interface/branch.rb +15 -11
  6. data/lib/gecoder/interface/constraints.rb +38 -0
  7. data/lib/gecoder/interface/constraints/bool/boolean.rb +56 -52
  8. data/lib/gecoder/interface/constraints/bool/channel.rb +1 -16
  9. data/lib/gecoder/interface/constraints/bool_enum/channel.rb +13 -8
  10. data/lib/gecoder/interface/constraints/bool_enum/extensional.rb +48 -0
  11. data/lib/gecoder/interface/constraints/extensional_regexp.rb +101 -0
  12. data/lib/gecoder/interface/constraints/int/channel.rb +1 -13
  13. data/lib/gecoder/interface/constraints/int_enum/channel.rb +15 -35
  14. data/lib/gecoder/interface/constraints/int_enum/extensional.rb +130 -0
  15. data/lib/gecoder/interface/constraints/set/channel.rb +54 -0
  16. data/lib/gecoder/interface/constraints/set_enum/channel.rb +37 -6
  17. data/lib/gecoder/interface/constraints/set_var_constraints.rb +1 -0
  18. data/lib/gecoder/interface/model.rb +110 -85
  19. data/lib/gecoder/interface/variables.rb +3 -21
  20. data/lib/gecoder/version.rb +1 -1
  21. data/specs/branch.rb +16 -1
  22. data/specs/constraints/bool_enum_relation.rb +6 -6
  23. data/specs/constraints/boolean.rb +31 -25
  24. data/specs/constraints/channel.rb +102 -4
  25. data/specs/constraints/extensional.rb +185 -2
  26. data/specs/constraints/reification_sugar.rb +2 -46
  27. data/specs/model.rb +85 -7
  28. data/tasks/dependencies.txt +1 -0
  29. data/vendor/rust/rust/class.rb +33 -35
  30. data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +1 -1
  31. data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +10 -1
  32. metadata +186 -185
  33. data/example/raw_bindings.rb +0 -44
  34. data/specs/binding_changes.rb +0 -76
@@ -1,44 +0,0 @@
1
- require File.dirname(__FILE__) + '/example_helper'
2
-
3
- # An example of using the raw bindings. Solves the send+more=money problem.
4
-
5
- # Variables
6
- space = Gecode::Raw::Space.new
7
- letters = Gecode::Raw::IntVarArray.new(space, 8, 0, 9)
8
- space.own(letters, 'letters')
9
- s, e, n, d, m, o, r, y = (0..7).to_a.map{ |i| letters.at(i) }
10
-
11
- # Constraints
12
- Gecode::Raw::post(space, (s * 1000 + e * 100 + n * 10 + d +
13
- m * 1000 + o * 100 + r * 10 + e).
14
- equal(m * 10000 + o * 1000 + n * 100 + e * 10 + y ),
15
- Gecode::Raw::ICL_DEF, Gecode::Raw::PK_DEF)
16
- Gecode::Raw::rel(space, s, Gecode::Raw::IRT_NQ, 0, Gecode::Raw::ICL_DEF,
17
- Gecode::Raw::PK_DEF)
18
- Gecode::Raw::rel(space, m, Gecode::Raw::IRT_NQ, 0, Gecode::Raw::ICL_DEF,
19
- Gecode::Raw::PK_DEF)
20
- Gecode::Raw::distinct(space, letters, Gecode::Raw::ICL_DEF, Gecode::Raw::PK_DEF)
21
-
22
- # Branching.
23
- Gecode::Raw::branch(space, letters,
24
- Gecode::Raw::INT_VAR_SIZE_MIN, Gecode::Raw::INT_VAL_MIN)
25
-
26
- # Search
27
- COPY_DIST = 16
28
- ADAPTATION_DIST = 4
29
- dfs = Gecode::Raw::DFS.new(space, COPY_DIST, ADAPTATION_DIST,
30
- Gecode::Raw::Search::Stop.new)
31
-
32
- space = dfs.next
33
- if space.nil?
34
- puts 'Failed'
35
- else
36
- puts 'Solution:'
37
- correct_letters = space.intVarArray('letters')
38
- arr = []
39
- correct_letters.size.times do |i|
40
- arr << correct_letters.at(i).val
41
- end
42
- puts arr.join(' ')
43
- end
44
-
@@ -1,76 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe 'Space', :shared => true do
4
- it 'should give different indices when creating int variables' do
5
- @space.new_int_vars([0, 17]).should_not equal(@space.new_int_vars([0, 17]))
6
- end
7
-
8
- it 'should give different indices when creating bool variables' do
9
- @space.new_bool_vars().should_not equal(@space.new_bool_vars())
10
- end
11
-
12
- it 'should give different indices when creating multiple int variables' do
13
- @space.new_int_vars([0, 17], 17).uniq.size.should equal(17)
14
- end
15
-
16
- it 'should give different indices when creating multiple bool variables' do
17
- @space.new_bool_vars(17).uniq.size.should equal(17)
18
- end
19
-
20
- it 'should not return nil for created int variables' do
21
- @space.new_int_vars([0, 17], 4).each do |i|
22
- @space.int_var(i).should_not be_nil
23
- end
24
- end
25
-
26
- it 'should not return nil for created int variables' do
27
- @space.new_bool_vars(4).each do |i|
28
- @space.bool_var(i).should_not be_nil
29
- end
30
- end
31
-
32
- it 'should return nil when requesting int variables with negative indices' do
33
- @space.int_var(-1).should be_nil
34
- end
35
-
36
- it 'should return nil when requesting bool variables with negative indices' do
37
- @space.bool_var(-1).should be_nil
38
- end
39
-
40
- it 'should raise an error if given a domain of incorrect type' do
41
- lambda{ @space.new_int_vars(17) }.should raise_error(TypeError)
42
- end
43
- end
44
-
45
- describe Gecode::Raw::Space, ' (new)' do
46
- before do
47
- @space = Gecode::Raw::Space.new
48
- end
49
-
50
- it 'should return nil when requesting int variables' do
51
- @space.int_var(0).should be_nil
52
- end
53
-
54
- it 'should return nil when requesting bool variables' do
55
- @space.bool_var(0).should be_nil
56
- end
57
-
58
- it_should_behave_like 'Space'
59
- end
60
-
61
- describe Gecode::Raw::Space, ' (with items)' do
62
- before do
63
- @space = Gecode::Raw::Space.new
64
- @first = @space.new_int_vars([1, 4]).first
65
- @second = @space.new_int_vars([-5, 5]).first
66
- end
67
-
68
- it_should_behave_like 'Space'
69
-
70
- it 'should give int variables with the correct domains' do
71
- @space.int_var(@first).min.should equal(1)
72
- @space.int_var(@first).max.should equal(4)
73
- @space.int_var(@second).min.should equal(-5)
74
- @space.int_var(@second).max.should equal(5)
75
- end
76
- end