diff --git a/2021/three.nim b/2021/three.nim index 5637f74..5c77b5c 100644 --- a/2021/three.nim +++ b/2021/three.nim @@ -29,40 +29,29 @@ proc lifeSupportRating(inputs: seq[string]): int = let width: Natural = inputs[0].len() var oxygenRating, co2Rating = 0 var oxygenCandidates, co2Candidates: seq[int] = toSeq(0..= counters[0].zeroes: '1' else: '0' - echo "OX: ", i, candidates, moreCommon, counters[0] - if counters[0].zeroes == counters[0].ones: - echo "SAME OX" for j in oxygenCandidates: if inputs[j][i] == moreCommon: newOxygenCandidates.add(j) if newOxygenCandidates.len() == 1: discard inputs[newOxygenCandidates[0]].parseBin(oxygenRating) - echo "OX DONE" if co2Rating == 0: let candidates = co2Candidates.mapIt(inputs[it]) let counters = countBits(candidates, some(1), i) let lessCommon: char = if counters[0].zeroes <= counters[0].ones: '0' else: '1' - echo "CO2 ", i, candidates, lessCommon, counters[0] - if counters[0].zeroes == counters[0].ones: - echo "SAME CO2" for j in co2Candidates: if inputs[j][i] == lessCommon: newCo2Candidates.add(j) if newCo2Candidates.len() == 1: discard inputs[newCo2Candidates[0]].parseBin(co2Rating) - echo "CO2 DONE" oxygenCandidates = newOxygenCandidates co2Candidates = newCo2Candidates if oxygenRating != 0 and co2Rating != 0: break - echo "OX: ", oxygenRating - echo "CO2: ", co2Rating return oxygenRating * co2Rating let input = 3.loadInput()