Skip to content

Commit 385cfaa

Browse files
committed
Revert "possible z3 solution, missing per machine setup"
This reverts commit 269bf2d.
1 parent 4004e9e commit 385cfaa

File tree

1 file changed

+1
-85
lines changed
  • src/main/kotlin/me/peckb/aoc/_2025/calendar/day10

1 file changed

+1
-85
lines changed

src/main/kotlin/me/peckb/aoc/_2025/calendar/day10/Day10.kt

Lines changed: 1 addition & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
package me.peckb.aoc._2025.calendar.day10
22

3-
import com.microsoft.z3.BitVecNum
4-
import com.microsoft.z3.BitVecSort
5-
import com.microsoft.z3.Context
6-
import com.microsoft.z3.Expr
7-
import com.microsoft.z3.Optimize
8-
import com.microsoft.z3.Status
93
import javax.inject.Inject
104
import me.peckb.aoc.generators.InputGenerator.InputGeneratorFactory
11-
import org.apache.commons.math3.stat.inference.TestUtils.g
125
import kotlin.math.min
13-
import kotlin.use
146

157
class Day10 @Inject constructor(
168
private val generatorFactory: InputGeneratorFactory,
@@ -23,83 +15,7 @@ class Day10 @Inject constructor(
2315

2416
fun partTwo(filename: String) = generatorFactory.forFile(filename).readAs(::day10) { input ->
2517
input.sumOf { machine ->
26-
27-
Context().use { ctx ->
28-
var bestFound = Int.MAX_VALUE
29-
30-
val bits = 64 // the answer will fit inside a long
31-
32-
fun valueOf(value: Int) = ctx.mkBV(value, bits)
33-
34-
fun variableOf(name: String) = ctx.mkBVConst(name, bits)
35-
36-
infix fun Expr<BitVecSort>.equalTo(t: Expr<BitVecSort>) = ctx.mkEq(this, t)
37-
38-
infix fun Expr<BitVecSort>.notEqual(t: Expr<BitVecSort>) = ctx.mkNot(this equalTo t)
39-
40-
operator fun Expr<BitVecSort>.plus(t: Expr<BitVecSort>) = ctx.mkBVAdd(this, t)
41-
42-
operator fun Expr<BitVecSort>.times(t: Expr<BitVecSort>) = ctx.mkBVMul(this, t)
43-
44-
infix fun Expr<BitVecSort>.lessThan(t: Expr<BitVecSort>) = ctx.mkBVSLT(this, t)
45-
46-
infix fun Expr<BitVecSort>.gte(t: Expr<BitVecSort>) = ctx.mkBVSGE(this, t)
47-
48-
val a = variableOf("a")
49-
val b = variableOf("b")
50-
val c = variableOf("c")
51-
val d = variableOf("d")
52-
val e = variableOf("e")
53-
val f = variableOf("f")
54-
55-
val optimizer = ctx.mkOptimize()
56-
57-
optimizer.Add(e + f equalTo valueOf(3))
58-
optimizer.Add(b + f equalTo valueOf(5))
59-
optimizer.Add(c + d + e equalTo valueOf(4))
60-
optimizer.Add(a + b + d equalTo valueOf(7))
61-
// optimizer.Add(a lessThan valueOf(10000))
62-
// optimizer.Add(b lessThan valueOf(10000))
63-
// optimizer.Add(c lessThan valueOf(10000))
64-
// optimizer.Add(d lessThan valueOf(10000))
65-
// optimizer.Add(e lessThan valueOf(10000))
66-
// optimizer.Add(f lessThan valueOf(10000))
67-
optimizer.Add(a gte valueOf(0))
68-
optimizer.Add(b gte valueOf(0))
69-
optimizer.Add(c gte valueOf(0))
70-
optimizer.Add(d gte valueOf(0))
71-
optimizer.Add(e gte valueOf(0))
72-
optimizer.Add(f gte valueOf(0))
73-
74-
optimizer.MkMinimize(a + b + c + d + e + f)
75-
76-
optimizer.Check()
77-
// while(optimizer.Check() == Status.SATISFIABLE) {
78-
val model = optimizer.model
79-
80-
val aEval = (model.evaluate(a, true) as BitVecNum)
81-
val bEval = (model.evaluate(b, true) as BitVecNum)
82-
val cEval = (model.evaluate(c, true) as BitVecNum)
83-
val dEval = (model.evaluate(d, true) as BitVecNum)
84-
val eEval = (model.evaluate(e, true) as BitVecNum)
85-
val fEval = (model.evaluate(f, true) as BitVecNum)
86-
87-
bestFound = min(bestFound, aEval.int + bEval.int + cEval.int + dEval.int + eEval.int + fEval.int)
88-
89-
// optimizer.Add(
90-
// ctx.mkOr(
91-
// a notEqual aEval,
92-
// b notEqual bEval,
93-
// c notEqual cEval,
94-
// d notEqual dEval,
95-
// e notEqual eEval,
96-
// f notEqual fEval,
97-
// )
98-
// )
99-
// }
100-
// println(bestFound)
101-
bestFound
102-
}
18+
4
10319
}
10420
}
10521

0 commit comments

Comments
 (0)