2024 day 4 part 2.
Not happy with this part - not so functional.
This commit is contained in:
@@ -43,5 +43,28 @@ let find_xmas sa =
|
|||||||
List.fold_left (fun acc x -> acc + search_string x "XMAS") 0 search_strings
|
List.fold_left (fun acc x -> acc + search_string x "XMAS") 0 search_strings
|
||||||
+ List.fold_left (fun acc x -> acc + search_string x "SAMX") 0 search_strings
|
+ List.fold_left (fun acc x -> acc + search_string x "SAMX") 0 search_strings
|
||||||
|
|
||||||
|
let find_mas sa x y =
|
||||||
|
let find_ms a b c d =
|
||||||
|
sa.(y - 1).[x - 1] = a
|
||||||
|
&& sa.(y - 1).[x + 1] = b
|
||||||
|
&& sa.(y + 1).[x - 1] = c
|
||||||
|
&& sa.(y + 1).[x + 1] = d
|
||||||
|
in
|
||||||
|
sa.(y).[x] = 'A'
|
||||||
|
&& (find_ms 'M' 'M' 'S' 'S' || find_ms 'S' 'S' 'M' 'M'
|
||||||
|
|| find_ms 'M' 'S' 'M' 'S' || find_ms 'S' 'M' 'S' 'M')
|
||||||
|
|
||||||
|
let find_mases sa =
|
||||||
|
let acc = ref 0 in
|
||||||
|
for y = 1 to Array.length sa - 2 do
|
||||||
|
for x = 1 to String.length sa.(y) - 2 do
|
||||||
|
if find_mas sa x y then acc := !acc + 1
|
||||||
|
done
|
||||||
|
done;
|
||||||
|
!acc
|
||||||
|
|
||||||
let sa_of_file fname = Aoc.strings_of_file fname |> Array.of_list
|
let sa_of_file fname = Aoc.strings_of_file fname |> Array.of_list
|
||||||
let _ = Aoc.main sa_of_file [ (string_of_int, find_xmas) ]
|
|
||||||
|
let _ =
|
||||||
|
Aoc.main sa_of_file
|
||||||
|
[ (string_of_int, find_xmas); (string_of_int, find_mases) ]
|
||||||
|
Reference in New Issue
Block a user