z3 0.0.20180629 → 0.0.20220203

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -4
  3. data/Rakefile +15 -8
  4. data/examples/abc_path +187 -0
  5. data/examples/abc_path-1.txt +7 -0
  6. data/examples/algebra_problems +12 -12
  7. data/examples/aquarium +133 -0
  8. data/examples/aquarium-1.txt +11 -0
  9. data/examples/bridges +2 -2
  10. data/examples/cats_organized_neatly +133 -0
  11. data/examples/cats_organized_neatly-10.txt +15 -0
  12. data/examples/cats_organized_neatly-3.txt +8 -0
  13. data/examples/cats_organized_neatly-48.txt +32 -0
  14. data/examples/circuit_problems +4 -4
  15. data/examples/clogic_puzzle +2 -2
  16. data/examples/color_nonogram +150 -0
  17. data/examples/color_nonogram-1.txt +23 -0
  18. data/examples/crossflip +2 -4
  19. data/examples/dominion +153 -0
  20. data/examples/dominion-1.txt +8 -0
  21. data/examples/dominosa +133 -0
  22. data/examples/dominosa-1.txt +8 -0
  23. data/examples/eulero +99 -0
  24. data/examples/eulero-1.txt +5 -0
  25. data/examples/four_hackers_puzzle +2 -2
  26. data/examples/futoshiki +128 -0
  27. data/examples/futoshiki-1.txt +17 -0
  28. data/examples/kakurasu +73 -0
  29. data/examples/kakurasu-1.txt +2 -0
  30. data/examples/kakuro +2 -2
  31. data/examples/killer_sudoku +88 -0
  32. data/examples/killer_sudoku-1.txt +17 -0
  33. data/examples/killer_sudoku-2.txt +53 -0
  34. data/examples/kinematics_problems +20 -20
  35. data/examples/knights_puzzle +2 -2
  36. data/examples/kropki +100 -0
  37. data/examples/kropki-1.txt +13 -0
  38. data/examples/letter_connections +2 -2
  39. data/examples/light_up +2 -2
  40. data/examples/minisudoku +2 -2
  41. data/examples/miracle_sudoku +135 -0
  42. data/examples/miracle_sudoku-1.txt +9 -0
  43. data/examples/mortal_coil_puzzle +2 -2
  44. data/examples/nanro +245 -0
  45. data/examples/nanro-1.txt +8 -0
  46. data/examples/nine_clocks +106 -0
  47. data/examples/nonogram +2 -2
  48. data/examples/pyramid_nonogram +2 -2
  49. data/examples/regexp_crossword_solver +2 -2
  50. data/examples/regexp_solver +2 -2
  51. data/examples/renzoku +124 -0
  52. data/examples/renzoku-1.txt +17 -0
  53. data/examples/sandwich_sudoku +101 -0
  54. data/examples/sandwich_sudoku-1.txt +10 -0
  55. data/examples/selfref +2 -2
  56. data/examples/simple_regexp_parser.rb +58 -56
  57. data/examples/skyscrapers +118 -0
  58. data/examples/skyscrapers-1.txt +6 -0
  59. data/examples/skyscrapers-2.txt +11 -0
  60. data/examples/star_battle +134 -0
  61. data/examples/star_battle-1.txt +10 -0
  62. data/examples/stitches +180 -0
  63. data/examples/stitches-1.txt +11 -0
  64. data/examples/sudoku +2 -2
  65. data/examples/suguru +199 -0
  66. data/examples/suguru-1.txt +17 -0
  67. data/examples/verbal_arithmetic +2 -2
  68. data/examples/yajilin +268 -0
  69. data/examples/yajilin-1.txt +10 -0
  70. data/lib/z3/ast.rb +8 -0
  71. data/lib/z3/expr/expr.rb +16 -15
  72. data/lib/z3/low_level.rb +6 -2
  73. data/lib/z3/low_level_auto.rb +180 -36
  74. data/lib/z3/optimize.rb +4 -4
  75. data/lib/z3/very_low_level.rb +8 -5
  76. data/lib/z3/very_low_level_auto.rb +45 -9
  77. data/spec/expr_spec.rb +62 -0
  78. data/spec/integration/abc_path_spec.rb +21 -0
  79. data/spec/integration/aquarium_spec.rb +27 -0
  80. data/spec/integration/cats_organized_neatly_spec.rb +14 -0
  81. data/spec/integration/color_nonogram_spec.rb +28 -0
  82. data/spec/integration/dominion_spec.rb +14 -0
  83. data/spec/integration/dominosa_spec.rb +21 -0
  84. data/spec/integration/eulero_spec.rb +11 -0
  85. data/spec/integration/futoshiki_spec.rb +23 -0
  86. data/spec/integration/kakurasu_spec.rb +18 -0
  87. data/spec/integration/killer_sudoku_spec.rb +10 -0
  88. data/spec/integration/knights_puzzle_spec.rb +11 -11
  89. data/spec/integration/kropki_spec.rb +19 -0
  90. data/spec/integration/miracle_sudoku_spec.rb +15 -0
  91. data/spec/integration/mortal_coil_puzzle_spec.rb +8 -6
  92. data/spec/integration/nanro_spec.rb +39 -0
  93. data/spec/integration/nine_clocks_spec.rb +30 -0
  94. data/spec/integration/oneofus_spec.rb +7 -15
  95. data/spec/integration/regexp_crossword_solver_spec.rb +1 -1
  96. data/spec/integration/renzoku_spec.rb +23 -0
  97. data/spec/integration/sandwich_sudoku_spec.rb +15 -0
  98. data/spec/integration/skyscraper_spec.rb +10 -0
  99. data/spec/integration/star_battle_spec.rb +27 -0
  100. data/spec/integration/stitches_spec.rb +25 -0
  101. data/spec/integration/suguru_spec.rb +23 -0
  102. data/spec/integration/yajilin_spec.rb +25 -0
  103. data/spec/optimize_spec.rb +6 -4
  104. data/spec/set_expr_spec.rb +14 -8
  105. data/spec/solver_spec.rb +4 -5
  106. data/spec/spec_helper.rb +15 -0
  107. metadata +105 -25
@@ -1,19 +1,11 @@
1
+ # This puzzle is ambiguous and different z3 versions return different result,
2
+ # so just checking that it doesn't crash
3
+
1
4
  describe "OneOfUs" do
2
- it do
3
- expect("oneofus").to have_output <<EOF
4
- grey Triangle grey Circle grey Triangle
5
- purple Square grey Triangle purple Triangle
6
- grey Triangle grey Square grey Triangle
5
+ let(:binary) { Pathname(__dir__) + "../../examples/oneofus" }
7
6
 
8
- Click 0: 0,1 - purple Square
9
- Click 1: 2,1 - purple Triangle
10
- Click 2: 2,2 - grey Triangle
11
- Click 3: 1,2 - grey Square
12
- Click 4: 1,1 - grey Triangle
13
- Click 5: 1,0 - grey Circle
14
- Click 6: 2,0 - grey Triangle
15
- Click 7: 0,0 - grey Triangle
16
- Click 8: 0,2 - grey Triangle
17
- EOF
7
+ it do
8
+ output = `#{binary}`.chomp
9
+ expect(output.lines.size).to eq(13)
18
10
  end
19
11
  end
@@ -15,7 +15,7 @@ describe "Regexp Crossword Solver" do
15
15
  let(:rows) { example.last(row_number) }
16
16
 
17
17
  it "matches output" do
18
- output_rows = `#{binary} #{example_path}`.split("\n").map(&:chomp)
18
+ output_rows = `#{binary} #{example_path}`.split("\n").map(&:chomp).map{|x| x.gsub("\\r", "\r")}
19
19
  output_cols = output_rows.map(&:chars).transpose.map(&:join)
20
20
  expect(output_rows.size).to eq(rows.size)
21
21
  expect(output_cols.size).to eq(cols.size)
@@ -0,0 +1,23 @@
1
+ describe "Renzoku" do
2
+ it do
3
+ expect("renzoku").to have_output <<EOF
4
+ 2 4 7 1 3 9.8 5.6
5
+ . . . .
6
+ 6.5 8.9 4 1.2.3 7
7
+ . .
8
+ 7 9 2 5.6 3.4 1 8
9
+
10
+ 4 7.6 3.2 8 1 9 5
11
+ . . .
12
+ 5 8 1 4 9 2 7.6 3
13
+ .
14
+ 8 3.4 7 1 5.6 2 9
15
+ . .
16
+ 1.2 9 6.5 7 3 8 4
17
+ . .
18
+ 9 1 3 8.7.6.5.4 2
19
+ . .
20
+ 3 6.5 2 8 4 9 7 1
21
+ EOF
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ describe "Sandwich Sudoku" do
2
+ it do
3
+ expect("sandwich_sudoku").to have_output <<EOF
4
+ 4 8 5 6 7 9 3 2 1
5
+ 3 2 9 5 8 1 6 4 7
6
+ 7 1 6 2 3 4 5 9 8
7
+ 1 7 2 9 5 3 8 6 4
8
+ 6 9 4 8 1 2 7 3 5
9
+ 8 5 3 7 4 6 9 1 2
10
+ 5 3 1 4 9 7 2 8 6
11
+ 9 6 8 1 2 5 4 7 3
12
+ 2 4 7 3 6 8 1 5 9
13
+ EOF
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ describe "Skysrapers" do
2
+ it do
3
+ expect("skyscrapers").to have_output <<EOF
4
+ 2 4 1 3
5
+ 4 2 3 1
6
+ 3 1 4 2
7
+ 1 3 2 4
8
+ EOF
9
+ end
10
+ end
@@ -0,0 +1,27 @@
1
+ describe "Star Battle" do
2
+ it do
3
+ expect("star_battle").to have_output <<EOF
4
+ +-+-+-+-+-+-+-+-+-+-+
5
+ | * |*|
6
+ + +-+ +-+ + +
7
+ |*| | |*| | |
8
+ + + + + +-+-+-+-+-+ +
9
+ | | | | * |* |
10
+ +-+ +-+ +-+-+ +-+ +
11
+ | *| |* | | |
12
+ + +-+-+ +-+ + +-+-+-+
13
+ |*| | | | |*| |
14
+ +-+ +-+-+ + + + +
15
+ | * | | | *|
16
+ + +-+-+-+-+ +-+ +
17
+ | | * |* | |
18
+ + +-+-+-+ + +-+ +
19
+ | |* *| | | |
20
+ +-+ +-+-+-+ + + +
21
+ | | | | |*| |* |
22
+ + +-+-+ + +-+ +-+-+
23
+ | * *| |
24
+ +-+-+-+-+-+-+-+-+-+-+
25
+ EOF
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ describe "Stitches" do
2
+ it do
3
+ expect("stitches").to have_output_no_color <<EOF
4
+ * *-*
5
+ |
6
+ * * *-* *-*
7
+ |
8
+ * * * *
9
+ | | |
10
+ * * * * * *
11
+ | | |
12
+ * * * *-* * *-*
13
+ |
14
+ * * * *
15
+ | | |
16
+ * * * * * *
17
+ | | |
18
+ * * * * * *-* *
19
+ | | |
20
+ * * * * *
21
+ | |
22
+ * *
23
+ EOF
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ describe "Suguru" do
2
+ it do
3
+ expect("suguru").to have_output <<EOF
4
+ +---+-----+
5
+ |1 3|1 4 3|
6
+ | | +---+
7
+ |2 6|5|6 2|
8
+ | | | |
9
+ |5 4|2|4 3|
10
+ +---+-+ |
11
+ |1 3 6|5 1|
12
+ | +-+---+
13
+ |2 4|1 2 7|
14
+ +-+ +-+ |
15
+ |1|5 7|6 4|
16
+ +-+---+ |
17
+ |2|3 4|5 3|
18
+ | | +---+
19
+ |1|5 1 2 6|
20
+ +-+-------+
21
+ EOF
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ describe "Yajilin" do
2
+ it do
3
+ expect("yajilin").to have_output <<EOF
4
+ * -* # * -* -* -* # * -*
5
+ | | | | | |
6
+ * * -* -* 2↓ # * -* -* *
7
+ | |
8
+ * -* # * -* -* -* # * -*
9
+ | | | |
10
+ * -* 2↑ * -* -* * 2↑ * #
11
+ | | | |
12
+ * * -* 1↓ # * * -* * -*
13
+ | | | | | |
14
+ * * * -* -* -* 1→ * # *
15
+ | | | |
16
+ * -* * -* -* -* -* * 0→ *
17
+ | | | |
18
+ 0↑ # * 1← # 1↓ * -* # *
19
+ | |
20
+ * -* -* # * -* -* # 2← *
21
+ | | | |
22
+ * -* -* -* -* # * -* -* -*
23
+ EOF
24
+ end
25
+ end
@@ -1,6 +1,8 @@
1
1
  # Optimize and Model specs are codependent, so half of functionality of each is tested in other class's tests
2
+
3
+ # Disabled as it crashes on Z3 4.8.13
2
4
  module Z3
3
- describe Optimize do
5
+ xdescribe Optimize do
4
6
  let(:optimize) { Optimize.new }
5
7
  let(:a) { Z3.Int("a") }
6
8
  let(:b) { Z3.Int("b") }
@@ -43,14 +45,14 @@ module Z3
43
45
  # This is a very simple example of unknown satisfiablity
44
46
  # so we might need more complex one in the future
45
47
  # Unlike Z3::Solver, this is unknown even 4.6.0
46
- it "third way" do
48
+ it "unknown satisfiability" do
47
49
  optimize.assert a**3 == a
48
50
  expect(optimize.check).to eq(:unknown)
49
51
  expect{optimize.satisfiable?}.to raise_error("Satisfiability unknown")
50
52
  expect{optimize.unsatisfiable?}.to raise_error("Satisfiability unknown")
51
53
  end
52
54
 
53
- it "third way" do
55
+ it "unknown satisfiability" do
54
56
  optimize.assert a**a == a
55
57
  expect(optimize.check).to eq(:unknown)
56
58
  expect{optimize.satisfiable?}.to raise_error("Satisfiability unknown")
@@ -65,7 +67,7 @@ module Z3
65
67
  expect(optimize.model[a].to_i).to eq 9
66
68
  end
67
69
 
68
- it "maximize" do
70
+ it "minimize" do
69
71
  optimize.assert a > 0
70
72
  optimize.assert a < 10
71
73
  optimize.minimize a
@@ -1,3 +1,5 @@
1
+ # This test is really bad, all of these have multiple solutions.
2
+ # And it changes between Z3 versions
1
3
  module Z3
2
4
  describe SetExpr do
3
5
  let(:sort) { SetSort.new(IntSort.new) }
@@ -21,13 +23,15 @@ module Z3
21
23
  expect([
22
24
  a.include?(1),
23
25
  a.include?(2),
26
+ !a.include?(3),
27
+ !b.include?(1),
24
28
  b.include?(2),
25
29
  b.include?(3),
26
30
  c == a.union(b),
27
31
  ]).to have_solution(
28
- a => "store(store(const(false), 1, true), 2, true)",
29
- b => "store(store(const(false), 3, true), 2, true)",
30
- c => "store(store(store(const(false), 1, true), 3, true), 2, true)",
32
+ a => "store(const(true), 3, false)",
33
+ b => "store(const(true), 1, false)",
34
+ c => "map(store(const(true), 3, false), store(const(true), 1, false))",
31
35
  )
32
36
  end
33
37
 
@@ -41,9 +45,9 @@ module Z3
41
45
  b.include?(3),
42
46
  c == a.difference(b),
43
47
  ]).to have_solution(
44
- a => "store(store(const(false), 1, true), 2, true)",
48
+ a => "store(const(true), 3, false)",
45
49
  b => "store(const(true), 1, false)",
46
- c => "store(const(false), 1, true)",
50
+ c => "map(store(const(true), 3, false), store(const(false), 1, true))",
47
51
  )
48
52
  end
49
53
 
@@ -51,13 +55,15 @@ module Z3
51
55
  expect([
52
56
  a.include?(1),
53
57
  a.include?(2),
58
+ !a.include?(3),
59
+ !b.include?(1),
54
60
  b.include?(2),
55
61
  b.include?(3),
56
62
  c == a.intersection(b),
57
63
  ]).to have_solution(
58
- a => "store(store(const(false), 1, true), 2, true)",
59
- b => "store(store(const(false), 3, true), 2, true)",
60
- c => "store(store(store(const(false), 1, true), 3, true), 2, true)",
64
+ a => "store(const(true), 3, false)",
65
+ b => "store(const(true), 1, false)",
66
+ c => "map(store(const(true), 3, false), store(const(true), 1, false))",
61
67
  )
62
68
  end
63
69
  end
data/spec/solver_spec.rb CHANGED
@@ -37,22 +37,21 @@ module Z3
37
37
  solver.assert b >= 2
38
38
  solver.assert Z3.Or(a == 2, a == -2)
39
39
  stats = solver.statistics
40
- # "mk bool var" added in 4.6.0
41
- expect(stats.keys).to match_array(["rlimit count", "max memory", "memory", "num allocs", "mk bool var"])
40
+ expect(stats.keys).to match_array(["rlimit count", "max memory", "memory", "num allocs"])
42
41
  end
43
42
 
44
43
  # This is a very simple example of unknown satisfiablity
45
44
  # so we might need more complex one in the future
46
45
  # This is now satisfiable in 4.6.0
47
46
  if Z3.version >= "4.6"
48
- it "third way (until 4.6 fix)" do
47
+ it "unknown satisfiability (until 4.6 fix)" do
49
48
  solver.assert a**3 == a
50
49
  expect(solver.check).to eq(:sat)
51
50
  expect(solver).to be_satisfiable
52
51
  expect(solver).to_not be_unsatisfiable
53
52
  end
54
53
  else
55
- it "third way (until 4.6 fix)" do
54
+ it "unknown satisfiability (until 4.6 fix)" do
56
55
  solver.assert a**3 == a
57
56
  expect(solver.check).to eq(:unknown)
58
57
  expect{solver.satisfiable?}.to raise_error("Satisfiability unknown")
@@ -60,7 +59,7 @@ module Z3
60
59
  end
61
60
  end
62
61
 
63
- it "third way" do
62
+ it "unknown satisfiability" do
64
63
  solver.assert a**a == a
65
64
  expect(solver.check).to eq(:unknown)
66
65
  expect{solver.satisfiable?}.to raise_error("Satisfiability unknown")
data/spec/spec_helper.rb CHANGED
@@ -28,6 +28,21 @@ RSpec::Matchers.define :have_output do |expected|
28
28
  match do |file_name|
29
29
  executable_path = "#{__dir__}/../examples/#{file_name}"
30
30
  actual = IO.popen("ruby -r./spec/coverage_helper #{executable_path}").read
31
+ @expected = expected.gsub(/ *$/, "")
32
+ @actual = actual.gsub(/ *$/, "")
33
+ @actual == @expected
34
+ end
35
+
36
+ failure_message do |actual|
37
+ "Expected:\n#{@expected.chomp}\nBut got:\n#{@actual}"
38
+ end
39
+ end
40
+
41
+ RSpec::Matchers.define :have_output_no_color do |expected|
42
+ match do |file_name|
43
+ executable_path = "#{__dir__}/../examples/#{file_name}"
44
+ actual = IO.popen("ruby -r./spec/coverage_helper #{executable_path}").read
45
+ actual = actual.gsub(/\e\[.*?m/, "")
31
46
  actual.gsub(/ *$/, "") == expected.gsub(/ *$/, "")
32
47
  end
33
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: z3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20180629
4
+ version: 0.0.20220203
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Wegrzanowski
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-29 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -30,70 +30,84 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '12'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '12'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.8'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '3.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '0.16'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '0.16'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: regexp_parser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: paint
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: 2.1.0
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: 2.1.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: ffi
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '1.9'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '1.9'
97
111
  description: Ruby bindings for Z3 Constraint Solver
98
112
  email: Tomasz.Wegrzanowski@gmail.com
99
113
  executables: []
@@ -103,29 +117,59 @@ files:
103
117
  - ".rspec"
104
118
  - README.md
105
119
  - Rakefile
120
+ - examples/abc_path
121
+ - examples/abc_path-1.txt
106
122
  - examples/algebra_problems
123
+ - examples/aquarium
124
+ - examples/aquarium-1.txt
107
125
  - examples/basic_int_math
108
126
  - examples/basic_logic
109
127
  - examples/bit_tricks
110
128
  - examples/bridges
111
129
  - examples/bridges-1.txt
130
+ - examples/cats_organized_neatly
131
+ - examples/cats_organized_neatly-10.txt
132
+ - examples/cats_organized_neatly-3.txt
133
+ - examples/cats_organized_neatly-48.txt
112
134
  - examples/circuit_problems
113
135
  - examples/clogic_puzzle
136
+ - examples/color_nonogram
137
+ - examples/color_nonogram-1.txt
114
138
  - examples/crossflip
139
+ - examples/dominion
140
+ - examples/dominion-1.txt
141
+ - examples/dominosa
142
+ - examples/dominosa-1.txt
143
+ - examples/eulero
144
+ - examples/eulero-1.txt
115
145
  - examples/four_hackers_puzzle
146
+ - examples/futoshiki
147
+ - examples/futoshiki-1.txt
116
148
  - examples/geometry_problem
149
+ - examples/kakurasu
150
+ - examples/kakurasu-1.txt
117
151
  - examples/kakuro
118
152
  - examples/kakuro-1.txt
153
+ - examples/killer_sudoku
154
+ - examples/killer_sudoku-1.txt
155
+ - examples/killer_sudoku-2.txt
119
156
  - examples/kinematics_problems
120
157
  - examples/knights_puzzle
158
+ - examples/kropki
159
+ - examples/kropki-1.txt
121
160
  - examples/letter_connections
122
161
  - examples/letter_connections-1.txt
123
162
  - examples/light_up
124
163
  - examples/light_up-1.txt
125
164
  - examples/minisudoku
126
165
  - examples/minisudoku-1.txt
166
+ - examples/miracle_sudoku
167
+ - examples/miracle_sudoku-1.txt
127
168
  - examples/mortal_coil_puzzle
128
169
  - examples/mortal_coil_puzzle-9.txt
170
+ - examples/nanro
171
+ - examples/nanro-1.txt
172
+ - examples/nine_clocks
129
173
  - examples/nonogram
130
174
  - examples/oneofus
131
175
  - examples/pyramid_nonogram
@@ -151,11 +195,26 @@ files:
151
195
  - examples/regexp_crossword_solver
152
196
  - examples/regexp_solver
153
197
  - examples/regexp_string_matcher.rb
198
+ - examples/renzoku
199
+ - examples/renzoku-1.txt
200
+ - examples/sandwich_sudoku
201
+ - examples/sandwich_sudoku-1.txt
154
202
  - examples/selfref
155
203
  - examples/simple_regexp_parser.rb
204
+ - examples/skyscrapers
205
+ - examples/skyscrapers-1.txt
206
+ - examples/skyscrapers-2.txt
207
+ - examples/star_battle
208
+ - examples/star_battle-1.txt
209
+ - examples/stitches
210
+ - examples/stitches-1.txt
156
211
  - examples/sudoku
157
212
  - examples/sudoku-1.txt
213
+ - examples/suguru
214
+ - examples/suguru-1.txt
158
215
  - examples/verbal_arithmetic
216
+ - examples/yajilin
217
+ - examples/yajilin-1.txt
159
218
  - examples/zebra_puzzle
160
219
  - lib/z3.rb
161
220
  - lib/z3/ast.rb
@@ -207,30 +266,51 @@ files:
207
266
  - spec/goal_spec.rb
208
267
  - spec/int_expr_spec.rb
209
268
  - spec/int_sort_spec.rb
269
+ - spec/integration/abc_path_spec.rb
210
270
  - spec/integration/algebra_problems_spec.rb
271
+ - spec/integration/aquarium_spec.rb
211
272
  - spec/integration/basic_int_math_spec.rb
212
273
  - spec/integration/basic_logic_spec.rb
213
274
  - spec/integration/bit_tricks_spec.rb
214
275
  - spec/integration/bridges_spec.rb
276
+ - spec/integration/cats_organized_neatly_spec.rb
215
277
  - spec/integration/cicruit_problem_spec.rb
278
+ - spec/integration/color_nonogram_spec.rb
216
279
  - spec/integration/crossflip_spec.rb
280
+ - spec/integration/dominion_spec.rb
281
+ - spec/integration/dominosa_spec.rb
282
+ - spec/integration/eulero_spec.rb
217
283
  - spec/integration/four_hackers_puzzle_spec.rb
284
+ - spec/integration/futoshiki_spec.rb
218
285
  - spec/integration/geometry_problem_spec.rb
286
+ - spec/integration/kakurasu_spec.rb
219
287
  - spec/integration/kakuro_spec.rb
288
+ - spec/integration/killer_sudoku_spec.rb
220
289
  - spec/integration/kinematics_problems_spec.rb
221
290
  - spec/integration/knights_puzzle_spec.rb
291
+ - spec/integration/kropki_spec.rb
222
292
  - spec/integration/letter_connections_spec.rb
223
293
  - spec/integration/light_up_spec.rb
224
294
  - spec/integration/minisudoku_spec.rb
295
+ - spec/integration/miracle_sudoku_spec.rb
225
296
  - spec/integration/mortal_coil_puzzle_spec.rb
297
+ - spec/integration/nanro_spec.rb
298
+ - spec/integration/nine_clocks_spec.rb
226
299
  - spec/integration/nonogram_spec.rb
227
300
  - spec/integration/oneofus_spec.rb
228
301
  - spec/integration/pyramid_nonogram_spec.rb
229
302
  - spec/integration/regexp_crossword_solver_spec.rb
230
303
  - spec/integration/regexp_solver_spec.rb
304
+ - spec/integration/renzoku_spec.rb
305
+ - spec/integration/sandwich_sudoku_spec.rb
231
306
  - spec/integration/selfref_spec.rb
307
+ - spec/integration/skyscraper_spec.rb
308
+ - spec/integration/star_battle_spec.rb
309
+ - spec/integration/stitches_spec.rb
232
310
  - spec/integration/sudoku_spec.rb
311
+ - spec/integration/suguru_spec.rb
233
312
  - spec/integration/verbal_arithmetic_spec.rb
313
+ - spec/integration/yajilin_spec.rb
234
314
  - spec/integration/zebra_puzzle_spec.rb
235
315
  - spec/interface_spec.rb
236
316
  - spec/model_spec.rb
@@ -251,8 +331,9 @@ files:
251
331
  homepage: https://github.com/taw/z3
252
332
  licenses:
253
333
  - MIT
254
- metadata: {}
255
- post_install_message:
334
+ metadata:
335
+ msys2_mingw_dependencies: z3
336
+ post_install_message:
256
337
  rdoc_options: []
257
338
  require_paths:
258
339
  - lib
@@ -267,10 +348,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
348
  - !ruby/object:Gem::Version
268
349
  version: '0'
269
350
  requirements:
270
- - z3 library
271
- rubyforge_project:
272
- rubygems_version: 2.7.3
273
- signing_key:
351
+ - z3 library (4.8+)
352
+ rubygems_version: 3.1.2
353
+ signing_key:
274
354
  specification_version: 4
275
355
  summary: Z3 Constraint Solver
276
356
  test_files: []