You are reading a single comment by @DavidM_ and its replies.
Click here to read the full conversation.
-
Not really au-fait with Scala but I would have thought you could pattern-match on the result of
swapAndExecute
? Almost certainly not correct syntax, but something likeinput.zipWithIndex.collectFirst { case (instruction, index) swapAndExecute(input, instruction, index) match { case LoopResult(acc, Completed) => acc, case other => None, } }.get
Not the most elegant, but we got there: https://gist.github.com/dmckennell/45bc2e70e2990e43e262ffbcee95f67f
Couldn't avoid running the program a second time in part 2 when I discover the program is completing successfully following a swap. Would like to have memoized the program result used in my if condition, but not seeing an easy way to manage that with
collectFirst
.