Merge
This commit is contained in:
parent
fdf6dcedfc
commit
9d4b066535
@ -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
16
2023/1/1/solution.ysh.sh
Executable 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
|
@ -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
|
@ -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)]
|
@ -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
@ -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
@ -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?
|
|
@ -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
|
|
@ -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.
|
|
Loading…
Reference in New Issue
Block a user