summary refs log tree commit diff stats
path: root/solutions/day10.fs
diff options
context:
space:
mode:
Diffstat (limited to 'solutions/day10.fs')
-rw-r--r--solutions/day10.fs66
1 files changed, 32 insertions, 34 deletions
diff --git a/solutions/day10.fs b/solutions/day10.fs
index 799850d..59ede91 100644
--- a/solutions/day10.fs
+++ b/solutions/day10.fs
@@ -1,34 +1,32 @@
-namespace Solutions
-
-module Day10 =
-    open System.IO
-    open System.Text.RegularExpressions
-
-    let (|InstRegex|_|) pattern line =
-        let matched = Regex.Match(line, pattern)
-        if matched.Success then
-            matched.Groups |> Seq.tail |> Seq.map (fun x -> x.Value) |> List.ofSeq |> Some
-        else None
-
-    let parseInst line =
-        match line with
-        | InstRegex "noop" [] -> [0]
-        | InstRegex "addx (-?\d+)" x -> [0; (int x[0])]
-        | _ -> failwith "invalid input"
-
-    let changes = File.ReadLines("inputs/day10.txt") |> Seq.map parseInst |> List.concat
-
-    let executeInsts changes =
-        List.scan (+) 1 changes
-
-    let getStateSum cycles (states: int list) =
-        cycles |> List.map (fun x -> x * states[x-1]) |> List.sum
-
-    let part1 () = executeInsts changes |> getStateSum [20; 60; 100; 140; 180; 220]
-
-    let part2 () = executeInsts changes 
-                    |> List.mapi (fun pixel signal -> abs (signal - (pixel % 40)) <= 1) 
-                    |> List.map (fun x -> if x then "#" else " ")
-                    |> List.chunkBySize 40
-                    |> List.map (String.concat "")
-                    |> List.iter (printf "%s\n")
\ No newline at end of file
+module Solutions.Day10
+open System.IO
+open System.Text.RegularExpressions
+
+let (|InstRegex|_|) pattern line =
+    let matched = Regex.Match(line, pattern)
+    if matched.Success then
+        matched.Groups |> Seq.tail |> Seq.map (fun x -> x.Value) |> List.ofSeq |> Some
+    else None
+
+let parseInst line =
+    match line with
+    | InstRegex "noop" [] -> [0]
+    | InstRegex "addx (-?\d+)" x -> [0; (int x[0])]
+    | _ -> failwith "invalid input"
+
+let changes = File.ReadLines("inputs/day10.txt") |> Seq.map parseInst |> List.concat
+
+let executeInsts changes =
+    List.scan (+) 1 changes
+
+let getStateSum cycles (states: int list) =
+    cycles |> List.map (fun x -> x * states[x-1]) |> List.sum
+
+let part1 () = executeInsts changes |> getStateSum [20; 60; 100; 140; 180; 220]
+
+let part2 () = executeInsts changes 
+                |> List.mapi (fun pixel signal -> abs (signal - (pixel % 40)) <= 1) 
+                |> List.map (fun x -> if x then "#" else " ")
+                |> List.chunkBySize 40
+                |> List.map (String.concat "")
+                |> List.iter (printf "%s\n")
\ No newline at end of file