cleanup and succinctify solve.sh

This commit is contained in:
eleith 2023-02-17 22:33:57 -08:00
parent 77dc0eaf3b
commit fd69dfdd04
21 changed files with 85 additions and 30 deletions

View File

@ -22,7 +22,7 @@ async function run() {
const fd = await open(input)
const totalCalories = await findHungryElfs(fd)
console.log(totalCalories)
console.log(`solution: ${totalCalories}`)
}
run()

View File

@ -118,7 +118,7 @@ async function run() {
const fd = await open(input)
const solution = await solve(fd)
console.log(solution)
console.log(`solution: ${solution}`)
}
run()

View File

@ -99,7 +99,7 @@ async function run() {
const fd = await open(input)
const solution = await solve(fd)
console.log(solution)
console.log(`solution: ${solution}`)
}
run()

View File

@ -181,7 +181,9 @@ function solvePart1(lines: string[]): number {
dropSand(cave)
}
printCave(cave)
if (process.env.DEBUG) {
printCave(cave)
}
return cave.sands.length - 1
}
@ -195,7 +197,9 @@ function solvePart2(lines: string[]): number {
dropSand(cave)
}
printCave(cave)
if (process.env.DEBUG) {
printCave(cave)
}
return cave.sands.length
}

View File

@ -94,7 +94,7 @@ async function run() {
const fd = await open(input)
const totalScore = await scoreAllGames(fd)
console.log(totalScore)
console.log(`solution: ${totalScore}`)
}
run()

View File

@ -597,7 +597,7 @@ function solvePart2(lines: string[], debug = false): number {
function run() {
const input = process.argv.slice(2)[0]
const debug = process.argv.slice(2)[1] === '--debug'
const debug = process.env['DEBUG'] ? true : false
const file = readFileSync(input, 'utf8')
const lines = file.split('\n').slice(0, -1)

View File

@ -263,7 +263,7 @@ function solvePart2(lines: string[], debug = false): number {
function run() {
const input = process.argv.slice(2)[0]
const debug = process.argv.slice(2)[1] === '--debug'
const debug = process.env.DEBUG ? true : false
const file = readFileSync(input, 'utf8')
const lines = file.split('\n').slice(0, -1)

View File

@ -248,7 +248,7 @@ function solvePart2(lines: string[], debug = false): number {
async function run() {
const input = process.argv.slice(2)[0]
const debug = process.argv.slice(2)[1] === '--debug'
const debug = process.env['DEBUG'] ? true : false
const file = readFileSync(input, 'utf8')
const lines = file.split('\n').slice(0, -1)

View File

@ -110,7 +110,7 @@ function solvePart1(lines: string[], debug = false): string {
async function run() {
const input = process.argv.slice(2)[0]
const debug = process.argv.slice(2)[1] === '--debug'
const debug = process.env.DEBUG ? true : false
const file = readFileSync(input, 'utf8')
const lines = file.split('\n').slice(0, -1)

View File

@ -49,7 +49,7 @@ async function run() {
const fd = await open(input)
const totalScore = await scorePriorities(fd)
console.log(totalScore)
console.log(`solution: ${totalScore}`)
}
run()

View File

@ -32,7 +32,7 @@ async function run() {
const fd = await open(input)
const totalScore = await scorePriorities(fd)
console.log(totalScore)
console.log(`solution: ${totalScore}`)
}
run()

View File

@ -65,7 +65,7 @@ async function solve(file: FileHandle): Promise<void> {
}
}
console.log(crates.map((x) => x.join('')))
console.log(`solution: ${crates.map((x) => x.join(''))}`)
}
async function run() {

View File

@ -1,6 +1 @@
czfztznzpnpqpfftcftcchfhjjsqsvvffhwfhhqnhqqmlldpdcdnnfvvmpmzpmmrsrwssqbsbsmmdjdssfqfllclcdczdccppvzvtzznpnfpnnljnnpcphpjprrdhddsgdssbqqghqqmgqgccjffdtdcdmdjdcctltdddvhdhfhnnrffwjfjpjnpnpddhbbrrflrldlqlrlqqwssqsrswrrrmcmrcrfrwfwpfpdfppslsjsjhhjjqhqwwzzhttcvvzrrrnlrlmljlrjrsshwwndnnzwzpzcpcllfrrsjsnjncjcvcllrhrbhhdsdqdpqpffmppdzztggvpvnvwvpvdvqddznzrzppznnpnhhwjjrpjpvvqvpvrvfvjvzjvzjzqzlqqwsqqrsrprqpqmmbhbffbnnlzzhszhznnhzhmzzfhflfccvvbnbtnnlcnndjjcvjjshhssfjfcjjpzpqpmmdqmqmmbbldlwwvdwvddznncwcqwcwdwbdwwgzzzqvqqlqlttbppgtptlldldblbbjcbcttbpbvvhlhggghvvqsshjhjjzqzwwcggsfgsgjjgbjgbbgllhhmqmggmsggzszvvzggdngnznlzlrlprpjpgjgvgppfhhbqqcddvvbhbqqmlmsssbbszzfdzzznssjllwlplttdgtdttsmspmpvpgpspqpdqdppfvpvvmggrwwgswswmmmnppmttqppvttrvrllcmctcqqlvvpwwghhlmhmwhmmpfmfvfwwbgbqqdbqblqqclljcljccnhhghbgbrrnrppchhmpmdmfmvffvqqtnqqfccgcfgcgwgcwggvgzvvbwbgbjbwbcbgbzztbbsbdbvddzrdrjjlqqlslrssjddhbddzbzvbvhhrjhhrtrltljljwljjrnjjjlpjphjphjhjvjgjbbwfwcctgtmtmdttjhthphhchfcfnnqlqhqvvjcclczlzwlzlhzlzdlzlbzbvbmbcmcjcncwncntndtntbbgqqbrbsrssrnnrcrmrlmmrqqddhzdhhnqqvccbmbpbwpbwbrwwwgdgnnhzzhphbhwhwzwhhvhqqnmqnmnjmnjjjjztzvzvbzbbvcvggcdchhhhbfbttmmtsmsgmmqvqdvdrvrqrdqqrhqqpsqqfnntsnnslsggcqqrnrmrfffmgmsmgggrdgdrgddzfzqfqfcqfcfrfwrrrgglwlmlmlgmlmrlljzlzglzztllgnndhdthtwwdrrjnncssdsnszsggdhdpprnnqzzltzlzznlzlflgfgbfggqtggfbbccchdcdrrnwnbnhbnbjjpzjpzzwjwcwggfqfccdzzfddmbddgbgrgllnttrwrjwrrbsrsbbwqwmmlggzqgzqzrqzzffmcmssgjjjcdcssndsdfsfddcffbrrcvccwhhzzlglhhsccvdvjjdldndrrvlrrbwrrbqqcbcjcjpjggngvnndtdvttlrlmmcbcggbtbhthjttdggtvtmmlgmlgmmdwdndmmldlttjlmbtrwfnvmnzggqfqwnppbrnjmpjfppwltpqfstgnnjwmbffgfbjmfhqngnswftgrqvpljsmghszclhhprscrgtmsgbwnbrfhwdsbjrdlhdcqfthwfggpzhjrvmprcjjgrlbmdqczmsltnpnlpldvnsjbdjzbrglpsmbwdhhphcdmjqmssdlgjtmphhjvpjqcdvmdtszldnjtbcffhwrbqpsrsmmsqsbbrnhsrvfhhcmwgcpsfhrfcpvldrwstqtgrcgrqttvdnstlbdblnbtcgdgpbcjdlvwpplsslqdsbpncbwzcmlglbhnrtbwvnbfsgrdlpzszhzmzqtztzgjjjszmjgggdnslqqqrrlwcghpvzwpndbjbhhhpbbtvjvjvjhntqggtmqwdnrtswcchsqpdwnvmfqrgpvbtjpttfhmlgtnsgnpcrhbswfblwrbflqlgtmvzvwprtfntshjcpzshnlnqthvqgpzffsbdbvbhpghwjhqpjwjfbsrzgttsnrpmfrvlwrjrfplrtzpntjbvhdjjfjjzrrvrsrctrtldrsgcgvntgvmtrnqbtmpzvlbwnddbnldbhfcpncqclzqgmbjcnnfdfsmdjdgtmtzbpwqrhrlggrfjhvrrqpjptqdzpwffwnfwmfhfhmcpljmhttbltgltqjhtvbdzgwrppzjwhctnncqthnlrhzgtnffpwnnqqgddjtgtczfmwvbccgvmdfvggdghmssjlflptzrpdncbjcsdlbqjfzmnzdggwdczghfpldsbnvzdjzsbsdnmwptgngmnbqmwbrzqgnqbmfvbzzmsvlswbtvfllqzsjdlvzjmbmlbnljwwjsqzqvfwhzmfdgttfqsdttnjmvspsgvpzwczpvdbvhjjrttghjddrgffqdsmzspnssztjjmwtsrtlrmbqhfbvpzsmnqthssbqrjhvqllrbbpjjllszmnjvzmfsbjtvvvgzrvjwldlbzjdbrsvvgmmjrgsbvtvthjbcqlzqhjqfvbzzvlpmrlmphftwbsvvwnwqfwvsnlvlcdgqjspprmwptcjhbjplzrqlhmvzmbfvwwvgvtqlvgfvzqdprfcjqsnndwqmbhlvfvhdhghtsrhbcrrshlsdtlbwntbcvvjhlcscfcnhbdnngtsccrnfbbqbfggvwnmlfhmqbdqpnzvzcvngcctbrshsdvhstcnwvjgwchzdndgbgjnddrmfgftvvjtdnqhfjmpjcjjtmgztvnwnrjjgmcgcqclnwvclngrtjggrprmfpqcsmdtbswhwrgwgfflqldtpnfdhdltrnhdvqqdsshcrnncdpvbhvlcbjlznjjzsdcjjpqprnzpmvqvrfnhdvhgrsmlcgtbsmrgqqtmblqmqcnmnmbcmmjvnptzbbqmcpwbflhccpfrjvfzmcsttfjtjgrnjbtwbncrsjjgjwdpmvfpqmzqwgjvgvfnpbhgzlzhfsnwmjjjsgcjjcwcfbzrmfzwdmhffqnzscbnfmpnbdbccrsjgqgvftszdbqbstwtwmwfzbtmvdmwvshlcpqnsqfwqlfclmjdjvgszsdblwvnhtwtrjcwsmpgflhdqmndrjvqlhqclmwhscnznmhjtqjlnglpbmgvptjnrpnjlqslssfnbdwlrwrdrtfspsjwzvwzfjpflqgmfnbvzqglrrccsnqtchnhlnrwlwqmqdvwsjmbjbvczvqcgfrrtftcgqsnvzhjlshnlvqmvrjljpsvmdzwqgltmccnplbmplhpvvflhmgfzmhczpwffbzhzhhggzgwtpmlzgrbpfgcnmfdbgcwrbgdpzpwmtwgmjtpmqzzgclmcpjgzdrwqfdwqzzqszrwmbwcqzcjdphqtwlbqmnddsdthgjrlshhmzgrqlhghrbqgzppqbdmmlnthhhmtdcdnbqfvbwdrdgbbpbhtrflwmhwjmzdtwmzhjndbrvbtbqnzbsrrbfdrrdnjltdtsjnpddmqzzbzblzvwctpdhfqgqntczwlgqbvvmhjblztlpptqjscztlrvrglrbsbfdjdfbwjltjcdgmqzgtjqjfgjnnpqgfhsrcggrszhbgfhtjmlgmmvshcpjwmcwcvwhnbjzrzfwtnlsnmdgfpbhvgfrhmhmsmtrnblsmnjclqzfgttrdmvpsvlcvnhmgmltfhffzllfrmdqdpzdmjdmsnmpwbwvrdvwvrcdsfwftfbfvmzjttrqgqlqqdtmcpdpfqfsclcmcdzhjwqrbhmzjjsvpbjzzgfwbjbqmzmtrnflwrqgnbgqnpntqmlngmgcrflgvhpznvrfwzlwrswbdsldfdbhvwvcbwhmpcslhmmbjdzvmgrjwzqqzlrrgddpssqcshzrsvrrzzcbsgvfmrlcgjrcpphctdwtjbmrlnrmrbgsqbjnmnsbjfhszcgdqfflcwvrvnwtvcnhcffvphwmzqpwnwncrbnzrnvjzsrnlzlfdbgztrhvlvpczzqnwsvwvnhgnclhndjsgqdgznjzrtmslmgnjzpj
mjqjpqmgbljsphdztnvjfqwrcgsmlb
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw

View File

@ -1 +1,6 @@
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
mjqjpqmgbljsphdztnvjfqwrcgsmlb
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw

View File

@ -1,6 +1,6 @@
import { FileHandle, open } from 'fs/promises'
function findMarker(line: string): void {
function findMarker(line: string): number {
const buffer: string[] = []
const difference = 14
let marker = 0
@ -14,19 +14,24 @@ function findMarker(line: string): void {
if (!buffer.includes(character)) {
buffer.push(character)
marker = i
marker = i + 1
if (buffer.length === difference) {
break
}
}
}
console.log(buffer, marker)
if (process.env.DEBUG) {
console.log(buffer)
}
return marker
}
async function solve(file: FileHandle): Promise<void> {
for await (const line of file.readLines()) {
findMarker(line)
const solution = findMarker(line)
console.log(`solution: ${solution}`)
}
}

View File

@ -100,7 +100,12 @@ async function solve(file: FileHandle): Promise<void> {
walkAndCacheSize(rootFs)
const freeSpace = DESIRED_FREE_SPACE - (DISK_SPACE - rootFs.size)
const possibleDeletions = sortDirectories(rootFs).filter((fs) => fs.size > freeSpace)
console.log(possibleDeletions)
if (process.env.DEBUG) {
console.log(possibleDeletions)
}
console.log(`solution: ${possibleDeletions[0].size}`)
}
async function run() {

View File

@ -80,7 +80,7 @@ async function solve(file: FileHandle): Promise<void> {
const scene = calculateSceneOfTrees(rows)
console.log(maxScene(scene))
console.log(`solution: ${maxScene(scene)}`)
}
async function run() {

View File

@ -76,7 +76,7 @@ async function solve(file: FileHandle): Promise<void> {
move(rope, instruction, tailPositions)
}
console.log(tailPositions.size)
console.log(`solution: ${tailPositions.size}`)
}
async function run() {

View File

@ -2,6 +2,17 @@
https://adventofcode.com/
# approach
## 2022
2022 | typescript | just having fun
### approach
typescript | just having fun
### run
[DEBUG=true] npm run solve -- <day>
### notes
- READMEs embedded examples aren't formatted
- some days only have part 2 solutions intact

View File

@ -2,7 +2,7 @@
"name": "advent of code",
"version": "0.0.1",
"scripts": {
"solve": "node --loader ts-node/esm"
"solve": "./solve.sh"
},
"keywords": [],
"author": "",

View File

@ -1,4 +1,34 @@
#!/usr/bin/env bash
# usage -> ./solve.sh 1/src/index.ts 1/input.txt
node --loader ts-node/esm $1 $2 $3
getFolder() {
dirname "$(dirname "$1")"
}
solve() {
folder=$(getFolder "$1")
printf "\nRunning advent day %s\n\n" "$folder"
npx ts-node "$1" "$2"
printf "\n"
}
if [ $# -eq 1 ]; then
if [[ -d "$1/" && "$1/" =~ ^[0-9]+\/$ ]]; then
solve "$1/src/index.ts" "$1/input.txt"
elif [[ -f "$1" ]]; then
folder=$(getFolder "$1")
solve "$1" "$folder/input.txt"
else
echo "$1 is not valid"
fi
elif [ $# -eq 2 ]; then
if [[ -d "$1/" && "$1/" =~ ^[0-9]+\/$ && -f "$2" ]]; then
solve "$1/src/index.ts" "$2"
elif [[ -f "$1" && -f "$2" ]]; then
solve "$1" "$2"
else
echo "either $1 or $2 is not valid"
fi
else
printf "Usage: [DEBUG=true] solve.sh <day|script> [input]\n"
fi