This commit is contained in:
Abdulkadir Furkan Şanlı 2023-12-09 16:01:06 +01:00
parent fdf6dcedfc
commit 9d4b066535
Signed by: afk
GPG Key ID: C8F00588EE6ED1FE
45 changed files with 26 additions and 2096 deletions

View File

@ -7,7 +7,7 @@ if [[ "${TRACE-0}" == "1" ]]; then
set -o xtrace set -o xtrace
fi fi
cd "$(dirname "$0")" INPUT=$1
main () main ()
{ {
@ -16,7 +16,7 @@ main ()
while read -r line; do while read -r line; do
mapfile -t matches <<< "$(grep -o '[[:digit:]]' <<< "${line}")" mapfile -t matches <<< "$(grep -o '[[:digit:]]' <<< "${line}")"
components+=("${matches[0]}${matches[-1]}") components+=("${matches[0]}${matches[-1]}")
done < input.txt done < "${INPUT}"
for value in "${components[@]}"; do for value in "${components[@]}"; do
(( result += value )) (( result += value ))
done done

16
2023/1/1/solution.ysh.sh Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env ysh
source --builtin list.ysh # sum()
const INPUT = $1
proc main {
var components = []
while read -r line {
var matches = @(grep -o '[[:digit:]]' <<< ${line})
call components->append(matches[0] ++ matches[-1])
} < ${INPUT}
echo $[sum(components)]
}
main

View File

@ -7,7 +7,7 @@ if [[ "${TRACE-0}" == "1" ]]; then
set -o xtrace set -o xtrace
fi fi
cd "$(dirname "$0")" INPUT=$1
main () main ()
{ {
@ -22,7 +22,7 @@ main ()
first=$([[ ! ${first} =~ ^[0-9]$ ]] && echo "${digits[${first}]}" || echo "${first}") first=$([[ ! ${first} =~ ^[0-9]$ ]] && echo "${digits[${first}]}" || echo "${first}")
last=$([[ ! ${last} =~ ^[0-9]$ ]] && echo "${digits[${last}]}" || echo "${last}") last=$([[ ! ${last} =~ ^[0-9]$ ]] && echo "${digits[${last}]}" || echo "${last}")
components+=("${first}${last}") components+=("${first}${last}")
done < input.txt done < "${INPUT}"
for value in "${components[@]}"; do for value in "${components[@]}"; do
(( result += value )) (( result += value ))
done done

View File

@ -21,8 +21,8 @@ func toDigit(number) {
proc main { proc main {
var components = [] var components = []
while read -r line { while read -r line {
var first = toDigit(split($(grep -E -o ${Digit} <<< ${line}))[0]) var first = toDigit(@(grep -E -o ${Digit} <<< ${line})[0])
var last = toDigit(split($(grep -E -o ${Digit} <<< ${line}))[-1]) var last = toDigit(@(grep -E -o ${Digit} <<< ${line})[-1])
call components->append(str(first) ++ str(last)) call components->append(str(first) ++ str(last))
} < ${INPUT} } < ${INPUT}
echo $[sum(components)] echo $[sum(components)]

View File

@ -1,3 +1,7 @@
# aoc # aoc
These are my solutions to Advent of Code. These are my solutions to Advent of Code.
A lot of them are in Bash, some of them are in [YSH](https://www.oilshell.org) (formerly [Oil](https://www.oilshell.org/blog/2023/03/rename.html)).
With YSH I have absolutely no idea what I'm doing. The objective is to write them more easily and concisely than Bash.

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +0,0 @@
--- Day 1: Trebuchet?! ---
Something is wrong with global snow production, and you've been selected to take
a look. The Elves have even given you a map; on it, they've used stars to mark
the top fifty locations that are likely to be having problems.
You've been doing this long enough to know that to restore snow operations, you
need to check all fifty stars by December 25th.
Collect stars by solving puzzles. Two puzzles will be made available on each day
in the Advent calendar; the second puzzle is unlocked when you complete the
first. Each puzzle grants one star. Good luck!
You try to ask why they can't just use a weather machine ("not powerful enough")
and where they're even sending you ("the sky") and why your map looks mostly
blank ("you sure ask a lot of questions") and hang on did you just say the sky
("of course, where do you think snow comes from") when you realize that the
Elves are already loading you into a trebuchet ("please hold still, we need to
strap you in").
As they're making the final adjustments, they discover that their calibration
document (your puzzle input) has been amended by a very young Elf who was
apparently just excited to show off her art skills. Consequently, the Elves are
having trouble reading the values on the document.
The newly-improved calibration document consists of lines of text; each line
originally contained a specific calibration value that the Elves now need to
recover. On each line, the calibration value can be found by combining the first
digit and the last digit (in that order) to form a single two-digit number.
For example:
1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet
In this example, the calibration values of these four lines are 12, 38, 15, and
77. Adding these together produces 142.
Consider your entire calibration document. What is the sum of all of the
calibration values?

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
--- Part Two ---
Your calculation isn't quite right. It looks like some of the
digits are actually spelled out with letters: one, two, three, four, five, six,
seven, eight, and nine also count as valid "digits".
Equipped with this new information, you now need to find the real first and last
digit on each line. For example:
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
In this example, the calibration values are 29, 83, 13, 24, 42, 14, and 76.
Adding these together produces 281.
What is the sum of all of the calibration values?

View File

@ -1,22 +0,0 @@
#!/usr/bin/env ysh
if (${TRACE-0} ~== 1) {
set -o xtrace
}
const INPUT = $1
proc main {
var components = []
var result = 0
while read -r line {
var matches = :| @(grep -o '[[:digit:]]' <<< ${line}) |
call components->append(matches[0] ++ matches[-1])
} < ${INPUT}
for value in (components) {
setvar result = result + value
}
echo ${result}
}
main

View File

@ -1,5 +0,0 @@
# aoc in YSH
These are solutions to Advent of Code puzzles in [YSH](https://www.oilshell.org) (formerly [Oil](https://www.oilshell.org/blog/2023/03/rename.html))
I have absolutely no idea what I'm doing. The objective is to write them shorter and more easily than Bash.