cleanup and succinctify solve.sh
This commit is contained in:
parent
77dc0eaf3b
commit
fd69dfdd04
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -1,6 +1 @@
|
|||
czfztznzpnpqpfftcftcchfhjjsqsvvffhwfhhqnhqqmlldpdcdnnfvvmpmzpmmrsrwssqbsbsmmdjdssfqfllclcdczdccppvzvtzznpnfpnnljnnpcphpjprrdhddsgdssbqqghqqmgqgccjffdtdcdmdjdcctltdddvhdhfhnnrffwjfjpjnpnpddhbbrrflrldlqlrlqqwssqsrswrrrmcmrcrfrwfwpfpdfppslsjsjhhjjqhqwwzzhttcvvzrrrnlrlmljlrjrsshwwndnnzwzpzcpcllfrrsjsnjncjcvcllrhrbhhdsdqdpqpffmppdzztggvpvnvwvpvdvqddznzrzppznnpnhhwjjrpjpvvqvpvrvfvjvzjvzjzqzlqqwsqqrsrprqpqmmbhbffbnnlzzhszhznnhzhmzzfhflfccvvbnbtnnlcnndjjcvjjshhssfjfcjjpzpqpmmdqmqmmbbldlwwvdwvddznncwcqwcwdwbdwwgzzzqvqqlqlttbppgtptlldldblbbjcbcttbpbvvhlhggghvvqsshjhjjzqzwwcggsfgsgjjgbjgbbgllhhmqmggmsggzszvvzggdngnznlzlrlprpjpgjgvgppfhhbqqcddvvbhbqqmlmsssbbszzfdzzznssjllwlplttdgtdttsmspmpvpgpspqpdqdppfvpvvmggrwwgswswmmmnppmttqppvttrvrllcmctcqqlvvpwwghhlmhmwhmmpfmfvfwwbgbqqdbqblqqclljcljccnhhghbgbrrnrppchhmpmdmfmvffvqqtnqqfccgcfgcgwgcwggvgzvvbwbgbjbwbcbgbzztbbsbdbvddzrdrjjlqqlslrssjddhbddzbzvbvhhrjhhrtrltljljwljjrnjjjlpjphjphjhjvjgjbbwfwcctgtmtmdttjhthphhchfcfnnqlqhqvvjcclczlzwlzlhzlzdlzlbzbvbmbcmcjcncwncntndtntbbgqqbrbsrssrnnrcrmrlmmrqqddhzdhhnqqvccbmbpbwpbwbrwwwgdgnnhzzhphbhwhwzwhhvhqqnmqnmnjmnjjjjztzvzvbzbbvcvggcdchhhhbfbttmmtsmsgmmqvqdvdrvrqrdqqrhqqpsqqfnntsnnslsggcqqrnrmrfffmgmsmgggrdgdrgddzfzqfqfcqfcfrfwrrrgglwlmlmlgmlmrlljzlzglzztllgnndhdthtwwdrrjnncssdsnszsggdhdpprnnqzzltzlzznlzlflgfgbfggqtggfbbccchdcdrrnwnbnhbnbjjpzjpzzwjwcwggfqfccdzzfddmbddgbgrgllnttrwrjwrrbsrsbbwqwmmlggzqgzqzrqzzffmcmssgjjjcdcssndsdfsfddcffbrrcvccwhhzzlglhhsccvdvjjdldndrrvlrrbwrrbqqcbcjcjpjggngvnndtdvttlrlmmcbcggbtbhthjttdggtvtmmlgmlgmmdwdndmmldlttjlmbtrwfnvmnzggqfqwnppbrnjmpjfppwltpqfstgnnjwmbffgfbjmfhqngnswftgrqvpljsmghszclhhprscrgtmsgbwnbrfhwdsbjrdlhdcqfthwfggpzhjrvmprcjjgrlbmdqczmsltnpnlpldvnsjbdjzbrglpsmbwdhhphcdmjqmssdlgjtmphhjvpjqcdvmdtszldnjtbcffhwrbqpsrsmmsqsbbrnhsrvfhhcmwgcpsfhrfcpvldrwstqtgrcgrqttvdnstlbdblnbtcgdgpbcjdlvwpplsslqdsbpncbwzcmlglbhnrtbwvnbfsgrdlpzszhzmzqtztzgjjjszmjgggdnslqqqrrlwcghpvzwpndbjbhhhpbbtvjvjvjhntqggtmqwdnrtswcchsqpdwnvmfqrgpvbtjpttfhmlgtnsgnpcrhbswfblwrbflqlgtmvzvwprtfntshjcpzshnlnqthvqgpzffsbdbvbhpghwjhqpjwjfbsrzgttsnrpmfrvlwrjrfplrtzpntjbvhdjjfjjzrrvrsrctrtldrsgcgvntgvmtrnqbtmpzvlbwnddbnldbhfcpncqclzqgmbjcnnfdfsmdjdgtmtzbpwqrhrlggrfjhvrrqpjptqdzpwffwnfwmfhfhmcpljmhttbltgltqjhtvbdzgwrppzjwhctnncqthnlrhzgtnffpwnnqqgddjtgtczfmwvbccgvmdfvggdghmssjlflptzrpdncbjcsdlbqjfzmnzdggwdczghfpldsbnvzdjzsbsdnmwptgngmnbqmwbrzqgnqbmfvbzzmsvlswbtvfllqzsjdlvzjmbmlbnljwwjsqzqvfwhzmfdgttfqsdttnjmvspsgvpzwczpvdbvhjjrttghjddrgffqdsmzspnssztjjmwtsrtlrmbqhfbvpzsmnqthssbqrjhvqllrbbpjjllszmnjvzmfsbjtvvvgzrvjwldlbzjdbrsvvgmmjrgsbvtvthjbcqlzqhjqfvbzzvlpmrlmphftwbsvvwnwqfwvsnlvlcdgqjspprmwptcjhbjplzrqlhmvzmbfvwwvgvtqlvgfvzqdprfcjqsnndwqmbhlvfvhdhghtsrhbcrrshlsdtlbwntbcvvjhlcscfcnhbdnngtsccrnfbbqbfggvwnmlfhmqbdqpnzvzcvngcctbrshsdvhstcnwvjgwchzdndgbgjnddrmfgftvvjtdnqhfjmpjcjjtmgztvnwnrjjgmcgcqclnwvclngrtjggrprmfpqcsmdtbswhwrgwgfflqldtpnfdhdltrnhdvqqdsshcrnncdpvbhvlcbjlznjjzsdcjjpqprnzpmvqvrfnhdvhgrsmlcgtbsmrgqqtmblqmqcnmnmbcmmjvnptzbbqmcpwbflhccpfrjvfzmcsttfjtjgrnjbtwbncrsjjgjwdpmvfpqmzqwgjvgvfnpbhgzlzhfsnwmjjjsgcjjcwcfbzrmfzwdmhffqnzscbnfmpnbdbccrsjgqgvftszdbqbstwtwmwfzbtmvdmwvshlcpqnsqfwqlfclmjdjvgszsdblwvnhtwtrjcwsmpgflhdqmndrjvqlhqclmwhscnznmhjtqjlnglpbmgvptjnrpnjlqslssfnbdwlrwrdrtfspsjwzvwzfjpflqgmfnbvzqglrrccsnqtchnhlnrwlwqmqdvwsjmbjbvczvqcgfrrtftcgqsnvzhjlshnlvqmvrjljpsvmdzwqgltmccnplbmplhpvvflhmgfzmhczpwffbzhzhhggzgwtpmlzgrbpfgcnmfdbgcwrbgdpzpwmtwgmjtpmqzzgclmcpjgzdrwqfdwqzzqszrwmbwcqzcjdphqtwlbqmnddsdthgjrlshhmzgrqlhghrbqgzppqbdmmlnthhhmtdcdnbqfvbwdrdgbbpbhtrflwmhwjmzdtwmzhjndbrvbtbqnzbsrrbfdrrdnjltdtsjnpddmqzzbzblzvwctpdhfqgqntczwlgqbvvmhjblztlpptqjscztlrvrglrbsbfdjdfbwjltjcdgmqzgtjqjfgjnnpqgfhsrcggrszhbgfhtjmlgmmvshcpjwmcwcvwhnbjzrzfwtnlsnmdgfpbhvgfrhmhmsmtrnblsmnjclqzfgttrdmvpsvlcvnhmgmltfhffzllfrmdqdpzdmjdmsnmpwbwvrdvwvrcdsfwftfbfvmzjttrqgqlqqdtmcpdpfqfsclcmcdzhjwqrbhmzjjsvpbjzzgfwbjbqmzmtrnflwrqgnbgqnpntqmlngmgcrflgvhpznvrfwzlwrswbdsldfdbhvwvcbwhmpcslhmmbjdzvmgrjwzqqzlrrgddpssqcshzrsvrrzzcbsgvfmrlcgjrcpphctdwtjbmrlnrmrbgsqbjnmnsbjfhszcgdqfflcwvrvnwtvcnhcffvphwmzqpwnwncrbnzrnvjzsrnlzlfdbgztrhvlvpczzqnwsvwvnhgnclhndjsgqdgznjzrtmslmgnjzpj
|
||||
mjqjpqmgbljsphdztnvjfqwrcgsmlb
|
||||
bvwbjplbgvbhsrlpgdmjqwftvncz
|
||||
nppdvjthqldpwncqszvftbrmjlhg
|
||||
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
|
||||
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
||||
mjqjpqmgbljsphdztnvjfqwrcgsmlb
|
||||
bvwbjplbgvbhsrlpgdmjqwftvncz
|
||||
nppdvjthqldpwncqszvftbrmjlhg
|
||||
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
|
||||
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
||||
|
|
|
@ -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}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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() {
|
||||
|
|
15
README.md
15
README.md
|
@ -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
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"name": "advent of code",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"solve": "node --loader ts-node/esm"
|
||||
"solve": "./solve.sh"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
|
34
solve.sh
34
solve.sh
|
@ -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
|
||||
|
|
Reference in New Issue