Skip to content

Commit 462f6fe

Browse files
committed
This version rollbacks earlier.
1 parent 16113f2 commit 462f6fe

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/main/scala/ru/org/codingteam/icfpc_2025/DynamicSolver.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ case class StepApplied(graph : MyGraph, nextDoor : DoorVertex) extends SolverSte
1212
case class TargetDoorsExhausted() extends SolverStepResult derives ReadWriter
1313
case class TargetRoomsExhausted() extends SolverStepResult derives ReadWriter
1414
case class Contradiction() extends SolverStepResult derives ReadWriter
15+
case class TryOtherDoor() extends SolverStepResult derives ReadWriter
1516
case class Rollback() extends SolverStepResult derives ReadWriter
1617
case class Impossible() extends SolverStepResult derives ReadWriter
1718

@@ -63,11 +64,12 @@ object DynamicSolver {
6364
}
6465
}
6566
case Some(linkedRoom) => {
66-
println(s"Room #${input.roomFromUid} door ${input.doorIdx} was already connected to room #${linkedRoom.uid} (label ${linkedRoom.label})")
6767
if (linkedRoom.label == Some(input.roomToLabel)) {
68+
println(s"Room #${input.roomFromUid} door ${input.doorIdx} was already connected to room #${linkedRoom.uid} (label ${linkedRoom.label}) => good")
6869
val nextDoor = g.adjacentDoor(g.doors(input.roomFromUid)(input.doorIdx)).get
6970
StepApplied(g, nextDoor)
7071
} else {
72+
println(s"Room #${input.roomFromUid} door ${input.doorIdx} was already connected to room #${linkedRoom.uid} (label ${linkedRoom.label}) => contradiction")
7173
Contradiction()
7274
}
7375
}
@@ -80,17 +82,18 @@ object DynamicSolver {
8082
var subDoorOffset = 0
8183
while (iteration < 100)
8284
val subOffsets = Offsets(subRoomOffset, subDoorOffset) +: offsets
83-
println(f"Step into, iteration $iteration; remaining length is ${inputs.tail.length}; offsets: $subOffsets")
85+
println(f"Step into, iteration $iteration; remaining length is ${inputs.length}; offsets: $subOffsets")
8486
val subResult = processStepRecursive(graph, inputs, currentRoomUid = currentRoomUid, offsets = subOffsets)
8587
println(s"Returning from recursive call: $subResult")
8688
subResult match {
8789
case StepApplied(_,_) => return subResult
88-
case TargetRoomsExhausted() => return Contradiction()
90+
case TargetRoomsExhausted() => return TryOtherDoor()
8991
case TargetDoorsExhausted() =>
9092
subRoomOffset += 1
9193
subDoorOffset = 0
92-
case Contradiction() =>
94+
case TryOtherDoor() =>
9395
subDoorOffset += 1
96+
case Contradiction() => return TryOtherDoor()
9497
}
9598
iteration += 1
9699
Impossible()

0 commit comments

Comments
 (0)