diff --git a/bin/day2423.ml b/bin/day2423.ml index 36e11e8..6ff7ea8 100644 --- a/bin/day2423.ml +++ b/bin/day2423.ml @@ -1,17 +1,6 @@ module StringMap = Map.Make (String) module StringSet = Set.Make (String) -let[@warning "-32"] print_set set = - StringSet.to_list set |> List.sort compare |> String.concat "," - |> Printf.printf "%s\n" - -let[@warning "-32"] print_sets = List.iter print_set - -let[@warning "-32"] print_map = - StringMap.iter (fun k v -> - Printf.printf "%s: " k; - print_set v) - let add_connection map (a, b) = let update s = function | None -> Some (StringSet.add s StringSet.empty) @@ -81,16 +70,14 @@ let part1 connections = find_rings [] StringSet.empty connections computers |> List.filter starts_with_t in - print_sets rings; - List.length rings + string_of_int (List.length rings) let rec search_candidate max_set connections current candidates = match StringSet.choose_opt candidates with | None -> - if StringSet.cardinal current > StringSet.cardinal max_set then current - else max_set + if List.length current > List.length max_set then current else max_set | Some h -> - let current' = StringSet.add h current in + let current' = h :: current in let candidates' = StringSet.inter candidates (StringMap.find h connections) in @@ -101,18 +88,12 @@ let rec search_candidate max_set connections current candidates = let find_max_set connections = let rec impl max_set = function | [] -> max_set - | (k, v) :: t -> - impl - (search_candidate max_set connections - (StringSet.add k StringSet.empty) - v) - t + | (k, v) :: t -> impl (search_candidate max_set connections [ k ] v) t in - impl StringSet.empty (StringMap.to_list connections) + impl [] (StringMap.to_list connections) let part2 connections = let max_set = find_max_set connections in - print_set max_set; - StringSet.cardinal max_set + List.sort compare max_set |> String.concat "," -let _ = Aoc.main load_file [ (string_of_int, part1); (string_of_int, part2) ] +let _ = Aoc.main load_file [ (Fun.id, part1); (Fun.id, part2) ]