From 606f4f2ace00c9bac1d8b61663f985892dd41757 Mon Sep 17 00:00:00 2001 From: kageru Date: Fri, 14 Dec 2018 19:25:38 +0100 Subject: [PATCH] (kotlin) day 13 wip --- 13/main_2.kt | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/13/main_2.kt b/13/main_2.kt index 3e617ea..35ba8a1 100644 --- a/13/main_2.kt +++ b/13/main_2.kt @@ -85,24 +85,26 @@ class Main() { } var positions = HashSet>(trains.size) positions.addAll(trains.map{ t -> Pair(t.x, t.y) }) - var current = 0 - while (trains.filter{ it.alive }.size > 1) { - while (positions.size == trains.filter{ it.alive }.size) { - if (!trains[current].alive) - continue - trains[current] = moveTrain(trains[current]) + var crash = false + var remove = Pair(-1, -1) + while (trains.size > 1) { + for ((i, train) in trains.withIndex()) { + trains[i] = moveTrain(train) positions.clear() - positions.addAll(trains.filter{ it.alive }.map{ t -> Pair(t.x, t.y) }) - current = (current + 1) % trains.size + positions.addAll(trains.map{ t -> Pair(t.x, t.y) }) + if (trains.size > positions.size) { + remove = cleanUpAfterCrash(trains) + println("removing $remove") + crash = true + } + } + if (crash) { + trains.removeAll(listOf(trains[remove.first], trains[remove.second])) + crash = false } - val remove = cleanUpAfterCrash(trains) - println("removing $remove") - trains[remove.first].alive = false - trains[remove.second].alive = false - - positions.clear() - positions.addAll(trains.filter{ it.alive }.map{ t -> Pair(t.x, t.y) }) } + println("${trains[0].x},${trains[0].y}") + println("done") } } }