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