Merge
This commit is contained in:
31
2023/1/2/solution.ysh.sh
Executable file
31
2023/1/2/solution.ysh.sh
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env ysh
|
||||
|
||||
source --builtin list.ysh # sum()
|
||||
|
||||
const INPUT = $1
|
||||
|
||||
const DIGITS = {one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9}
|
||||
const Digit = / digit | 'one' | 'two' | 'three' | 'four' | 'five' | 'six' | 'seven' | 'eight' | 'nine' /
|
||||
const DigitRev = / digit | 'eno' | 'owt' | 'eerht' | 'ruof' | 'evif' | 'xis' | 'neves' | 'thgie' | 'enin' /
|
||||
const SingleDigit = / %start digit %end /
|
||||
|
||||
func toDigit(number) {
|
||||
### Convert number to digit if name and return digit.
|
||||
if (number !~ / SingleDigit /) {
|
||||
return (DIGITS[number])
|
||||
} else {
|
||||
return (number)
|
||||
}
|
||||
}
|
||||
|
||||
proc main {
|
||||
var components = []
|
||||
while read -r line {
|
||||
var first = toDigit(@(grep -E -o ${Digit} <<< ${line})[0])
|
||||
var last = toDigit(@(grep -E -o ${Digit} <<< ${line})[-1])
|
||||
call components->append(str(first) ++ str(last))
|
||||
} < ${INPUT}
|
||||
echo $[sum(components)]
|
||||
}
|
||||
|
||||
main
|
||||
Reference in New Issue
Block a user