tangled
alpha
login
or
join now
eldridge.cam
/
advent-of-code
2
fork
atom
Advent of Code solutions
2
fork
atom
overview
issues
pulls
pipelines
getting all to run
eldridge.cam
1 year ago
4b8cccf7
9238a0a2
+33
-21
3 changed files
expand all
collapse all
unified
split
2020
11
p2.hs
2023
1
p2.tri
Justfile
-4
2020/11/p2.hs
···
14
14
isOccupied (Just Occupied) = True
15
15
isOccupied _ = False
16
16
17
17
-
(!?) :: [a] -> Int -> Maybe a
18
18
-
(!?) ls i | i >= 0 && i < length ls = Just (ls !! i)
19
19
-
(!?) _ _ = Nothing
20
20
-
21
17
compute :: [[Maybe Seat]] -> Int
22
18
compute seats = if seats == nextSeats
23
19
then length $ filter isOccupied (join seats)
+1
-1
2023/1/p2.tri
···
10
10
func digits s =
11
11
match extract s
12
12
case 'some(d) then [d, ..digits (skip 1 s)]
13
13
-
else digits (skip 1 s)
13
13
+
else _ then digits (skip 1 s)
14
14
15
15
func extract "0" <> _ = 'some(0)
16
16
func extract ("1" <> _) or ("one" <> _) = 'some(1)
+32
-16
Justfile
···
2
2
set quiet
3
3
set shell := ["fish", "-c"]
4
4
5
5
-
default_year := env_var_or_default("YEAR", "2024")
5
5
+
env_year := env_var_or_default("YEAR", "2024")
6
6
session := env_var("SESSION")
7
7
8
8
-
[no-cd]
9
9
-
default: p1 p2
8
8
+
relative := trim_start_match(invocation_dir(), justfile_dir())
9
9
+
current_year := replace_regex(relative, "^/(\\d+).*$", "$1")
10
10
+
current_day := replace_regex(relative, "^/\\d+/(\\d+)$|.*", "$1")
10
11
11
11
-
[no-cd]
12
12
-
p1 input="input": (compile "p1") && (run "p1" input)
12
12
+
default_year := if current_year != "" { current_year } else { env_year }
13
13
14
14
-
[no-cd]
15
15
-
p2 input="input": (compile "p2") && (run "p2" input)
14
14
+
p1 input="input": (part "p1")
15
15
+
p2 input="input": (part "p2")
16
16
+
compile part: (_compile current_year current_day part)
17
17
+
run part input="input": (_run current_year current_day part input)
16
18
17
17
-
[no-cd]
18
18
-
compile part:
19
19
+
all: (year "2020") (year "2021") (year "2022") (year "2023") (year "2024")
20
20
+
year year=current_year: (day "1" year) (day "2" year) (day "3" year) (day "4" year) (day "5" year) (day "6" year) (day "7" year) (day "8" year) (day "9" year) (day "10" year) (day "11" year) (day "12" year) (day "13" year) (day "14" year) (day "15" year) (day "16" year) (day "17" year) (day "18" year) (day "19" year) (day "20" year) (day "21" year) (day "22" year) (day "23" year) (day "24" year) (day "25" year)
21
21
+
day day=current_day year=current_year: (part "p1" day year) (part "p2" day year)
22
22
+
part part day=current_day year=current_year input="input": (get day year) (_compile year day part) && (_run year day part input)
23
23
+
24
24
+
_compile year day part:
19
25
#!/usr/bin/env fish
26
26
+
if test ! -d {{year}}/{{day}}
27
27
+
exit 0
28
28
+
end
29
29
+
cd {{year}}/{{day}}
20
30
if test -f {{part}}.erl
21
31
erl -compile {{part}}.erl
22
32
else if test -f {{part}}.swift
···
38
48
gleam build
39
49
end
40
50
41
41
-
[no-cd]
42
42
-
run part input="input":
51
51
+
_run year day part input="input":
43
52
#!/usr/bin/env fish
44
44
-
if test -x {{part}}
53
53
+
if test ! -d {{year}}/{{day}}
54
54
+
exit 0
55
55
+
end
56
56
+
cd {{year}}/{{day}}
57
57
+
if test -x {{part}} -a ! -d {{part}}
45
58
time ./{{part}} < {{input}}
46
59
exit 0
47
60
end
···
50
63
time "./$fn" < {{input}}
51
64
else if test -f {{part}}.pl
52
65
time swipl -s "$fn" -g main,halt < {{input}}
66
66
+
else if test -f {{part}}.tri
67
67
+
time trilogy run "$fn" < {{input}}
53
68
else if test -f {{part}}.py
54
69
time python3 "$fn" < {{input}}
55
70
else if test -f {{part}}.rb
···
67
82
time erl -noshell -s {{part}} main -s init stop < {{input}}
68
83
else if ls | rg "\.cabal\$" -q
69
84
time cabal run {{part}} < {{input}}
70
70
-
else
71
71
-
echo "Current directory does not contain known solution configuration"
72
72
-
exit 1
73
85
end
74
86
75
75
-
get day year=default_year:
87
87
+
get day=current_day year=default_year:
88
88
+
#!/usr/bin/env fish
89
89
+
if test -f {{year}}/{{day}}/input
90
90
+
exit 0
91
91
+
end
76
92
echo "Getting {{year}} day {{day}}"
77
93
mkdir -p {{year}}/{{day}}
78
94
curl https://adventofcode.com/{{year}}/day/{{day}}/input \