-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.fs
More file actions
53 lines (47 loc) · 2.83 KB
/
Program.fs
File metadata and controls
53 lines (47 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Learn more about F# at http://fsharp.org
open System
[<EntryPoint>]
let main argv =
let solutions =
Map.ofList
[ ((2015, 1), Year2015.Day01.solve); ((2015, 2), Year2015.Day02.solve); ((2015, 3), Year2015.Day03.solve)
((2015, 4), Year2015.Day04.solve); ((2015, 5), Year2015.Day05.solve); ((2015, 7), Year2015.Day07.solve)
((2015, 13), Year2015.Day13.solve)
((2017, 3), Year2017.Day03.solve)
((2018, 1), Year2018.Day01.solve); ((2018, 2), Year2018.Day02.solve); ((2018, 3), Year2018.Day03.solve)
((2018, 4), Year2018.Day04.solve); ((2018, 5), Year2018.Day05.solve); ((2018, 6), Year2018.Day06.solve)
((2019, 1), Year2019.Day01.solve); ((2019, 2), Year2019.Day02.solve); ((2019, 3), Year2019.Day03.solve)
((2019, 4), Year2019.Day04.solve); ((2019, 5), Year2019.Day05.solve); ((2019, 6), Year2019.Day06.solve)
((2019, 7), Year2019.Day07.solve); ((2019, 8), Year2019.Day08.solve); ((2019, 9), Year2019.Day09.solve)
((2019, 10), Year2019.Day10.solve)
((2020, 1), Year2020.Day01.solve); ((2020, 2), Year2020.Day02.solve); ((2020, 3), Year2020.Day03.solve)
((2020, 4), Year2020.Day04.solve); ((2020, 5), Year2020.Day05.solve); ((2020, 6), Year2020.Day06.solve)
((2020, 7), Year2020.Day07.solve); ((2020, 8), Year2020.Day08.solve); ((2020, 9), Year2020.Day09.solve)
((2020, 10), Year2020.Day10.solve); ((2020, 11), Year2020.Day11.solve); ((2020, 12), Year2020.Day12.solve)
((2020, 13), Year2020.Day13.solve); ((2020, 14), Year2020.Day14.solve); ((2020, 15), Year2020.Day15.solve)
((2020, 16), Year2020.Day16.solve)
((2021, 1), Year2021.Day01.solve)
((2021, 2), Year2021.Day02.solve)
((2021, 3), Year2021.Day03.solve)
((2021, 4), Year2021.Day04.solve)
((2021, 5), Year2021.Day05.solve)
((2021, 6), Year2021.Day06.solve)
((2021, 7), Year2021.Day07.solve)
]
match argv |> List.ofArray with
| [] -> Map.iter (fun _ solve -> solve()) solutions
| [year] ->
let year' = int year
solutions
|> Map.filter (fun (year, _) _ -> year = year')
|> Map.iter (fun _ solve -> solve())
| year::days ->
let year = int year
days |> List.iter (fun day ->
match Int32.TryParse day with
| true, day when day > 0 && day < 26 ->
match Map.tryFind (year, day) solutions with
| Some solve -> solve()
| _ -> printfn "Day %d hasn't been implemented yet" day
| _ -> printfn "Invalid argument, day must be an integer between 1-25")
0 // return an integer exit code