fix aoc helper, add day 2
This commit is contained in:
parent
30124c5410
commit
8c7ffecb0b
6
aoc.jl
6
aoc.jl
@ -16,11 +16,7 @@ function _cookie()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function _get_input(year, day)
|
function _get_input(year, day)
|
||||||
res = HTTP.get(
|
res = HTTP.get("https://adventofcode.com/$year/day/$day/input", cookies = _cookie())
|
||||||
"https://adventofcode.com/$year/day/$day/input",
|
|
||||||
cookies = _cookie(),
|
|
||||||
headers = Dict("User-Agent", "git.fuckwit.dev/fuckwit/aoc2022/src/branch/master/aoc.jl by huanzodev@gmail.com")
|
|
||||||
)
|
|
||||||
if res.status ≠ 200
|
if res.status ≠ 200
|
||||||
error("Unable to fetch infput for AOC $year day $day")
|
error("Unable to fetch infput for AOC $year day $day")
|
||||||
end
|
end
|
||||||
|
2500
data/day_2.txt
Normal file
2500
data/day_2.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -13,7 +13,8 @@ cals_per_elf() {
|
|||||||
((tmp+=i))
|
((tmp+=i))
|
||||||
done
|
done
|
||||||
cals+=("$tmp")
|
cals+=("$tmp")
|
||||||
utils.qsort "${cals[@]}"
|
utils.insertion_sort cals
|
||||||
|
echo "${cals[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
p1() {
|
p1() {
|
||||||
|
43
src/day_2.jl
Normal file
43
src/day_2.jl
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||||
|
import .Aoc: @aoc
|
||||||
|
|
||||||
|
win_conditions = Dict(
|
||||||
|
"A X" => 3,
|
||||||
|
"A Y" => 6,
|
||||||
|
"A Z" => 0,
|
||||||
|
"B X" => 0,
|
||||||
|
"B Y" => 3,
|
||||||
|
"B Z" => 6,
|
||||||
|
"C X" => 6,
|
||||||
|
"C Y" => 0,
|
||||||
|
"C Z" => 3,
|
||||||
|
)
|
||||||
|
should_play = Dict(
|
||||||
|
"A X" => 'Z',
|
||||||
|
"A Y" => 'X',
|
||||||
|
"A Z" => 'Y',
|
||||||
|
"B X" => 'X',
|
||||||
|
"B Y" => 'Y',
|
||||||
|
"B Z" => 'Z',
|
||||||
|
"C X" => 'Y',
|
||||||
|
"C Y" => 'Z',
|
||||||
|
"C Z" => 'X',
|
||||||
|
)
|
||||||
|
score_table = Dict('X' => 1, 'Y' => 2, 'Z' => 3)
|
||||||
|
|
||||||
|
function p1(input::Vector{String})
|
||||||
|
sum([ win_conditions[i] + score_table[i[3]] for i in input ])
|
||||||
|
end
|
||||||
|
|
||||||
|
function transform_input(x)
|
||||||
|
arr = collect(x)
|
||||||
|
arr[3] = should_play[x]
|
||||||
|
join(arr)
|
||||||
|
end
|
||||||
|
|
||||||
|
function p2(input::Vector{String})
|
||||||
|
input = map(transform_input, input)
|
||||||
|
sum([ win_conditions[i] + score_table[i[3]] for i in input ])
|
||||||
|
end
|
||||||
|
|
||||||
|
@aoc(2022, 2)
|
26
utils.sh
26
utils.sh
@ -52,20 +52,34 @@ _int.merge() {
|
|||||||
((j+=1))
|
((j+=1))
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
_int.min_run() {
|
||||||
|
local len="$1" r=0
|
||||||
|
|
||||||
|
while (( len >= 32 )); do
|
||||||
|
r=$((r | (len & 1)))
|
||||||
|
len=$((len >> 1))
|
||||||
|
done
|
||||||
|
echo $((len + r))
|
||||||
|
}
|
||||||
|
|
||||||
utils.timsort() {
|
utils.timsort() {
|
||||||
local -n _utils_timsort_arr="$1"
|
local -n _utils_timsort_arr="$1"
|
||||||
local len="${#_utils_timsort_arr[@]}"
|
local len="${#_utils_timsort_arr[@]}"
|
||||||
|
local min_run="$(_int.min_run "$len")"
|
||||||
|
echo >&2 $len
|
||||||
|
|
||||||
for (( i=0; i < len; i+=32 )); do
|
for (( i=0; i < len; i+=min_run )); do
|
||||||
_int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+32-1))" "$((len-1))")"
|
echo >&2 _int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+min_run-1))" "$((len-1))")"
|
||||||
|
_int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+min_run-1))" "$((len-1))")"
|
||||||
done
|
done
|
||||||
|
|
||||||
for (( size=32; size < len; size=2*size )); do
|
for (( size=min_run; size < len; size=2*size )); do
|
||||||
for (( left=0; left < len; left+=2*size )); do
|
for (( left=0; left < len; left+=2*size )); do
|
||||||
local mid="$((left+size-1))"
|
local mid=$((left+size-1))
|
||||||
local right="$(utils.min2 "$((left+2*size-1))" "$((len-1))")"
|
local right=$(utils.min2 "$((left+2*size-1))" "$((len-1))")
|
||||||
(( mid < right )) && _int.merge _utils_timsort_arr "$left" "$mid" "$right"
|
if (( mid < right )); then
|
||||||
|
_int.merge _utils_timsort_arr "$left" "$mid" "$right"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user