From 7be570c4a6e86fb7060f0bc06910ca57003dfe90 Mon Sep 17 00:00:00 2001 From: Orfeas <38209077+0xfea5@users.noreply.github.com> Date: Sat, 8 Jun 2024 13:50:47 +0300 Subject: Update file names and init.sh --- day5/example.txt | 9 - day5/input.txt | 512 ------------------------------------------------------ day5/solution.nim | 87 ---------- 3 files changed, 608 deletions(-) delete mode 100644 day5/example.txt delete mode 100644 day5/input.txt delete mode 100644 day5/solution.nim (limited to 'day5') diff --git a/day5/example.txt b/day5/example.txt deleted file mode 100644 index 84933bb..0000000 --- a/day5/example.txt +++ /dev/null @@ -1,9 +0,0 @@ - [D] -[N] [C] -[Z] [M] [P] - 1 2 3 - -move 1 from 2 to 1 -move 3 from 1 to 3 -move 2 from 2 to 1 -move 1 from 1 to 2 diff --git a/day5/input.txt b/day5/input.txt deleted file mode 100644 index 988dbdd..0000000 --- a/day5/input.txt +++ /dev/null @@ -1,512 +0,0 @@ - [V] [C] [M] -[V] [J] [N] [H] [V] -[R] [F] [N] [W] [Z] [N] -[H] [R] [D] [Q] [M] [L] [B] -[B] [C] [H] [V] [R] [C] [G] [R] -[G] [G] [F] [S] [D] [H] [B] [R] [S] -[D] [N] [S] [D] [H] [G] [J] [J] [G] -[W] [J] [L] [J] [S] [P] [F] [S] [L] - 1 2 3 4 5 6 7 8 9 - -move 2 from 2 to 7 -move 8 from 5 to 6 -move 2 from 4 to 5 -move 1 from 4 to 5 -move 1 from 5 to 8 -move 5 from 9 to 2 -move 7 from 1 to 6 -move 7 from 3 to 8 -move 1 from 4 to 6 -move 2 from 5 to 6 -move 6 from 7 to 5 -move 2 from 2 to 4 -move 4 from 5 to 2 -move 10 from 8 to 1 -move 2 from 7 to 4 -move 4 from 2 to 8 -move 2 from 9 to 8 -move 1 from 8 to 4 -move 2 from 4 to 9 -move 5 from 8 to 2 -move 1 from 4 to 6 -move 1 from 8 to 9 -move 1 from 7 to 2 -move 2 from 4 to 2 -move 1 from 7 to 3 -move 13 from 2 to 1 -move 1 from 2 to 4 -move 1 from 2 to 3 -move 2 from 5 to 4 -move 17 from 6 to 4 -move 3 from 4 to 9 -move 14 from 1 to 4 -move 4 from 6 to 8 -move 1 from 9 to 8 -move 23 from 4 to 8 -move 6 from 1 to 7 -move 3 from 1 to 5 -move 1 from 3 to 8 -move 5 from 7 to 8 -move 1 from 3 to 4 -move 1 from 5 to 3 -move 1 from 5 to 1 -move 1 from 3 to 2 -move 1 from 9 to 4 -move 9 from 4 to 9 -move 1 from 1 to 2 -move 11 from 8 to 2 -move 1 from 4 to 5 -move 13 from 2 to 3 -move 7 from 9 to 6 -move 1 from 5 to 6 -move 1 from 5 to 2 -move 1 from 9 to 4 -move 1 from 4 to 9 -move 2 from 8 to 9 -move 1 from 7 to 8 -move 8 from 9 to 1 -move 8 from 1 to 4 -move 4 from 6 to 7 -move 1 from 9 to 4 -move 2 from 3 to 9 -move 1 from 9 to 1 -move 6 from 4 to 1 -move 2 from 1 to 3 -move 22 from 8 to 6 -move 1 from 2 to 5 -move 3 from 7 to 8 -move 15 from 6 to 4 -move 7 from 3 to 7 -move 4 from 6 to 9 -move 2 from 9 to 2 -move 6 from 3 to 5 -move 3 from 9 to 5 -move 5 from 5 to 8 -move 1 from 2 to 1 -move 6 from 8 to 2 -move 1 from 1 to 2 -move 3 from 5 to 3 -move 1 from 7 to 2 -move 4 from 7 to 8 -move 4 from 6 to 1 -move 1 from 5 to 1 -move 4 from 8 to 7 -move 2 from 3 to 2 -move 1 from 1 to 3 -move 15 from 4 to 2 -move 3 from 7 to 3 -move 4 from 7 to 2 -move 1 from 4 to 9 -move 5 from 3 to 8 -move 29 from 2 to 1 -move 1 from 9 to 5 -move 1 from 2 to 1 -move 11 from 1 to 5 -move 1 from 4 to 5 -move 2 from 6 to 3 -move 1 from 3 to 4 -move 16 from 1 to 9 -move 4 from 8 to 4 -move 3 from 6 to 9 -move 1 from 3 to 7 -move 1 from 7 to 3 -move 6 from 1 to 6 -move 3 from 4 to 3 -move 3 from 8 to 5 -move 3 from 1 to 8 -move 3 from 1 to 4 -move 2 from 4 to 9 -move 3 from 6 to 3 -move 15 from 5 to 2 -move 3 from 2 to 3 -move 4 from 2 to 7 -move 2 from 5 to 9 -move 10 from 3 to 6 -move 11 from 9 to 5 -move 2 from 4 to 9 -move 8 from 9 to 4 -move 1 from 9 to 6 -move 7 from 4 to 6 -move 3 from 5 to 8 -move 22 from 6 to 9 -move 4 from 7 to 8 -move 8 from 5 to 8 -move 2 from 4 to 3 -move 1 from 8 to 1 -move 17 from 8 to 3 -move 3 from 3 to 4 -move 13 from 3 to 9 -move 20 from 9 to 7 -move 2 from 2 to 9 -move 19 from 9 to 5 -move 1 from 1 to 4 -move 3 from 2 to 7 -move 4 from 4 to 3 -move 1 from 9 to 8 -move 18 from 5 to 1 -move 1 from 9 to 4 -move 1 from 9 to 7 -move 2 from 4 to 8 -move 1 from 5 to 4 -move 3 from 2 to 7 -move 3 from 3 to 1 -move 2 from 1 to 3 -move 3 from 3 to 8 -move 1 from 4 to 8 -move 6 from 8 to 2 -move 1 from 3 to 9 -move 1 from 3 to 9 -move 10 from 1 to 9 -move 7 from 1 to 7 -move 4 from 7 to 4 -move 29 from 7 to 3 -move 6 from 2 to 9 -move 25 from 3 to 6 -move 5 from 3 to 9 -move 13 from 6 to 9 -move 12 from 6 to 2 -move 1 from 8 to 9 -move 10 from 2 to 6 -move 7 from 6 to 5 -move 20 from 9 to 3 -move 11 from 3 to 6 -move 1 from 7 to 9 -move 2 from 2 to 9 -move 19 from 9 to 2 -move 14 from 6 to 8 -move 4 from 5 to 2 -move 2 from 4 to 6 -move 3 from 5 to 1 -move 13 from 8 to 5 -move 1 from 6 to 1 -move 2 from 4 to 2 -move 8 from 2 to 4 -move 6 from 4 to 7 -move 1 from 9 to 8 -move 2 from 4 to 7 -move 5 from 2 to 4 -move 4 from 4 to 2 -move 10 from 5 to 6 -move 1 from 1 to 7 -move 1 from 5 to 4 -move 1 from 4 to 9 -move 4 from 7 to 8 -move 5 from 1 to 7 -move 1 from 9 to 7 -move 7 from 3 to 2 -move 2 from 5 to 2 -move 8 from 6 to 9 -move 1 from 4 to 6 -move 3 from 7 to 4 -move 5 from 9 to 7 -move 2 from 4 to 3 -move 20 from 2 to 4 -move 2 from 4 to 8 -move 14 from 4 to 2 -move 12 from 7 to 4 -move 8 from 2 to 1 -move 10 from 2 to 4 -move 6 from 8 to 5 -move 1 from 7 to 8 -move 4 from 4 to 3 -move 1 from 3 to 9 -move 1 from 2 to 7 -move 1 from 6 to 8 -move 5 from 3 to 5 -move 1 from 3 to 2 -move 7 from 4 to 5 -move 6 from 1 to 7 -move 5 from 7 to 6 -move 1 from 6 to 5 -move 2 from 7 to 8 -move 1 from 2 to 6 -move 2 from 8 to 2 -move 5 from 5 to 7 -move 6 from 6 to 8 -move 16 from 4 to 9 -move 16 from 9 to 4 -move 11 from 5 to 4 -move 5 from 8 to 3 -move 2 from 5 to 2 -move 14 from 4 to 2 -move 1 from 6 to 3 -move 1 from 6 to 9 -move 1 from 5 to 3 -move 3 from 8 to 2 -move 10 from 4 to 7 -move 5 from 9 to 2 -move 3 from 4 to 7 -move 1 from 1 to 4 -move 3 from 2 to 5 -move 2 from 3 to 7 -move 1 from 4 to 2 -move 18 from 2 to 8 -move 3 from 8 to 4 -move 5 from 3 to 1 -move 1 from 3 to 9 -move 1 from 9 to 3 -move 8 from 8 to 7 -move 2 from 5 to 4 -move 1 from 5 to 6 -move 1 from 2 to 5 -move 1 from 5 to 8 -move 1 from 6 to 9 -move 3 from 2 to 7 -move 27 from 7 to 4 -move 2 from 2 to 4 -move 4 from 8 to 4 -move 1 from 9 to 8 -move 3 from 1 to 6 -move 1 from 3 to 5 -move 3 from 8 to 3 -move 1 from 1 to 4 -move 1 from 8 to 1 -move 3 from 1 to 4 -move 2 from 8 to 2 -move 2 from 6 to 2 -move 8 from 4 to 9 -move 1 from 7 to 1 -move 1 from 5 to 4 -move 1 from 7 to 3 -move 4 from 2 to 7 -move 1 from 8 to 6 -move 8 from 9 to 7 -move 1 from 6 to 3 -move 3 from 3 to 4 -move 37 from 4 to 1 -move 1 from 4 to 5 -move 13 from 7 to 8 -move 6 from 8 to 4 -move 5 from 8 to 3 -move 1 from 7 to 6 -move 4 from 1 to 5 -move 1 from 6 to 5 -move 2 from 8 to 4 -move 32 from 1 to 5 -move 1 from 1 to 4 -move 5 from 3 to 5 -move 1 from 3 to 2 -move 1 from 2 to 9 -move 19 from 5 to 2 -move 1 from 9 to 1 -move 16 from 5 to 1 -move 7 from 5 to 6 -move 1 from 3 to 1 -move 11 from 1 to 2 -move 18 from 2 to 4 -move 1 from 5 to 9 -move 8 from 6 to 1 -move 10 from 2 to 6 -move 7 from 4 to 9 -move 2 from 2 to 1 -move 7 from 4 to 2 -move 5 from 4 to 5 -move 2 from 9 to 6 -move 9 from 6 to 3 -move 5 from 5 to 3 -move 8 from 4 to 9 -move 7 from 9 to 8 -move 4 from 2 to 9 -move 10 from 3 to 1 -move 6 from 8 to 1 -move 2 from 6 to 3 -move 5 from 3 to 8 -move 3 from 2 to 7 -move 1 from 9 to 5 -move 1 from 3 to 5 -move 2 from 7 to 8 -move 1 from 8 to 9 -move 1 from 6 to 1 -move 23 from 1 to 4 -move 2 from 5 to 3 -move 1 from 8 to 2 -move 2 from 8 to 5 -move 2 from 5 to 6 -move 1 from 2 to 7 -move 1 from 7 to 5 -move 4 from 9 to 7 -move 1 from 7 to 5 -move 1 from 3 to 6 -move 3 from 7 to 4 -move 1 from 3 to 8 -move 1 from 4 to 6 -move 6 from 1 to 8 -move 4 from 6 to 4 -move 2 from 9 to 1 -move 1 from 5 to 1 -move 19 from 4 to 2 -move 2 from 9 to 3 -move 1 from 9 to 3 -move 9 from 1 to 8 -move 1 from 5 to 8 -move 1 from 9 to 3 -move 2 from 3 to 9 -move 3 from 8 to 4 -move 1 from 4 to 9 -move 1 from 9 to 5 -move 2 from 3 to 4 -move 6 from 4 to 7 -move 3 from 9 to 5 -move 4 from 4 to 7 -move 1 from 5 to 6 -move 18 from 2 to 7 -move 13 from 7 to 9 -move 3 from 5 to 1 -move 1 from 2 to 1 -move 1 from 6 to 5 -move 3 from 1 to 7 -move 1 from 1 to 5 -move 7 from 9 to 6 -move 8 from 7 to 4 -move 11 from 7 to 6 -move 5 from 9 to 2 -move 17 from 6 to 1 -move 2 from 5 to 1 -move 11 from 8 to 1 -move 20 from 1 to 2 -move 3 from 8 to 1 -move 1 from 9 to 8 -move 1 from 6 to 1 -move 11 from 1 to 7 -move 18 from 2 to 3 -move 12 from 4 to 8 -move 11 from 7 to 3 -move 7 from 2 to 3 -move 2 from 1 to 5 -move 1 from 1 to 3 -move 1 from 8 to 1 -move 1 from 5 to 9 -move 1 from 9 to 6 -move 1 from 8 to 7 -move 1 from 5 to 3 -move 1 from 6 to 7 -move 2 from 8 to 1 -move 8 from 3 to 2 -move 7 from 2 to 9 -move 6 from 8 to 6 -move 1 from 9 to 3 -move 2 from 6 to 4 -move 5 from 9 to 6 -move 7 from 6 to 2 -move 8 from 2 to 9 -move 2 from 1 to 9 -move 2 from 7 to 2 -move 2 from 4 to 8 -move 1 from 2 to 7 -move 25 from 3 to 7 -move 7 from 9 to 7 -move 1 from 2 to 5 -move 1 from 1 to 4 -move 3 from 8 to 1 -move 3 from 1 to 8 -move 3 from 7 to 8 -move 15 from 7 to 3 -move 10 from 8 to 3 -move 1 from 5 to 7 -move 1 from 8 to 5 -move 3 from 9 to 2 -move 1 from 6 to 4 -move 2 from 2 to 7 -move 1 from 2 to 5 -move 14 from 7 to 9 -move 1 from 6 to 2 -move 1 from 7 to 1 -move 1 from 5 to 4 -move 3 from 4 to 3 -move 1 from 7 to 6 -move 1 from 2 to 7 -move 1 from 1 to 2 -move 3 from 9 to 1 -move 1 from 6 to 2 -move 2 from 2 to 6 -move 17 from 3 to 6 -move 1 from 8 to 3 -move 1 from 5 to 4 -move 2 from 7 to 2 -move 9 from 9 to 8 -move 1 from 9 to 3 -move 16 from 3 to 2 -move 1 from 7 to 5 -move 5 from 6 to 5 -move 1 from 1 to 6 -move 1 from 4 to 1 -move 1 from 9 to 3 -move 9 from 8 to 6 -move 3 from 1 to 5 -move 1 from 9 to 1 -move 16 from 2 to 1 -move 2 from 2 to 7 -move 2 from 3 to 9 -move 2 from 7 to 4 -move 2 from 9 to 3 -move 3 from 3 to 5 -move 1 from 4 to 5 -move 1 from 4 to 2 -move 1 from 1 to 7 -move 1 from 7 to 1 -move 1 from 3 to 6 -move 2 from 5 to 1 -move 3 from 6 to 2 -move 2 from 5 to 8 -move 8 from 5 to 4 -move 1 from 5 to 3 -move 1 from 3 to 2 -move 1 from 8 to 3 -move 1 from 3 to 8 -move 4 from 1 to 7 -move 9 from 1 to 7 -move 6 from 1 to 8 -move 3 from 7 to 4 -move 7 from 6 to 7 -move 11 from 4 to 3 -move 2 from 3 to 8 -move 8 from 3 to 8 -move 4 from 6 to 1 -move 1 from 7 to 4 -move 2 from 1 to 2 -move 8 from 7 to 2 -move 1 from 4 to 8 -move 10 from 8 to 2 -move 2 from 6 to 1 -move 1 from 1 to 4 -move 1 from 4 to 8 -move 2 from 1 to 4 -move 6 from 6 to 5 -move 1 from 1 to 9 -move 2 from 6 to 8 -move 1 from 4 to 5 -move 1 from 6 to 9 -move 4 from 8 to 9 -move 1 from 7 to 1 -move 6 from 8 to 6 -move 1 from 6 to 1 -move 1 from 4 to 9 -move 2 from 9 to 5 -move 5 from 5 to 9 -move 8 from 9 to 5 -move 2 from 8 to 5 -move 3 from 6 to 9 -move 8 from 5 to 7 -move 5 from 5 to 6 -move 1 from 9 to 2 -move 1 from 3 to 1 -move 1 from 6 to 7 -move 1 from 5 to 6 -move 24 from 2 to 4 -move 3 from 9 to 7 -move 16 from 4 to 5 -move 2 from 1 to 3 -move 12 from 5 to 6 -move 1 from 9 to 5 -move 4 from 5 to 9 -move 1 from 1 to 6 -move 1 from 5 to 2 -move 2 from 9 to 8 -move 1 from 8 to 1 -move 5 from 4 to 5 -move 2 from 3 to 5 -move 1 from 8 to 3 -move 1 from 1 to 6 -move 3 from 5 to 7 -move 1 from 9 to 1 -move 1 from 2 to 8 diff --git a/day5/solution.nim b/day5/solution.nim deleted file mode 100644 index 2bf41aa..0000000 --- a/day5/solution.nim +++ /dev/null @@ -1,87 +0,0 @@ -import std/strutils -import std/sequtils -import std/enumerate -import std/algorithm -import std/re - -type - Move = tuple - Amount: int - From: int - To: int - - Stack = seq[char] - - Input = tuple - Stacks: seq[Stack] - Moves: seq[Move] - -proc parseContent(content: string): Input = - # Parse stacks - let tokens = content.split("\n\n") - var strStacks = map( - # All lines containing characters of the stacks - # Exclude last line since it contain's each stack's id - tokens[0].splitLines()[0 .. ^2], - proc(line: string): string = - var retval = "" - # keep only the relevant characters (spaces/letters) - for i in countup(1, line.len(), 4): - retval.add(line[i]) - retval - ) - - var Stacks = newSeq[Stack](10) - - for layer in strStacks: - for i, c in enumerate(layer): - if c != ' ': - Stacks[i+1].add(c) - - var strMoves = map( - # All moves described in the input - tokens[1].strip().splitLines(), - proc(line: string): seq[int] = - # Remove words and split on spaces - let tokens = line.replace(re"[a-z]+ ").split(" ") - # Parse them as integers - map(tokens, proc (num: string): int = num.parseInt()) - ) - - var Moves: seq[Move] - for move in strMoves: - Moves.add((move[0], move[1], move[2])) - - return (Stacks, Moves) - -proc makeMove(stacks: var seq[Stack], move: Move, inPlace = false): void = - # copy top of the stack - var yoink = stacks[move.From][0 ..< move.Amount] - # moving in place preserves the order of the moved crates (part2) - if not inPlace: - yoink.reverse() - # remove it from origin - stacks[move.From].delete(0 ..< move.Amount) - # concat it in front of destination - stacks[move.To] = concat(yoink, stacks[move.To]) - -proc getAnswer(stacks: seq[Stack]): string = - var answer = "" - for stack in stacks: - if stack.len() > 0: - answer.add(stack[0]) - answer - -let content = readFile("./input.txt") -var input = parseContent(content) - -let moves = input.Moves -var stacksPart1 = input.Stacks -var stacksPart2 = input.Stacks - -for move in moves: - makeMove(stacksPart1, move) - makeMove(stacksPart2, move, true) - -echo getAnswer(stacksPart1) -echo getAnswer(stacksPart2) -- cgit v1.2.3