Starting on day21 part 2
This commit is contained in:
parent
b93905b565
commit
9ba9242e3c
|
@ -63,7 +63,6 @@ proc solver(input: Lines, times: int): uint64 =
|
||||||
if v: inc result
|
if v: inc result
|
||||||
|
|
||||||
proc p1(input: Lines): uint64 = input.solver(2)
|
proc p1(input: Lines): uint64 = input.solver(2)
|
||||||
|
|
||||||
proc p2(input: Lines): uint64 = input.solver(50)
|
proc p2(input: Lines): uint64 = input.solver(50)
|
||||||
|
|
||||||
const input = """
|
const input = """
|
||||||
|
@ -73,6 +72,5 @@ const input = """
|
||||||
#....
|
#....
|
||||||
##..#
|
##..#
|
||||||
..#..
|
..#..
|
||||||
..###
|
..### """.strip().split('\n')
|
||||||
""".strip().split('\n')
|
|
||||||
doDayX 20, (n: int) => n.loadInput, p1, p2, (input, 35'u64, 3351'u64)
|
doDayX 20, (n: int) => n.loadInput, p1, p2, (input, 35'u64, 3351'u64)
|
||||||
|
|
32
2021/nim/day21.nim
Normal file
32
2021/nim/day21.nim
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import ./common, std/[sequtils, algorithm, sugar, sets, strformat, strutils, tables, options, json, hashes, random]
|
||||||
|
|
||||||
|
proc p1(input: Lines): uint64 =
|
||||||
|
const DIE_FACES = 100
|
||||||
|
const TARGET_SCORE = 1000
|
||||||
|
const BOARD_POSITIONS = 10
|
||||||
|
|
||||||
|
var scores = [0, 0]
|
||||||
|
var pos = [input[0].split(": ")[1].parseInt - 1, input[1].split(": ")[1].parseInt - 1]
|
||||||
|
var rollNum = 1
|
||||||
|
var turn = 0
|
||||||
|
while scores[0] < TARGET_SCORE and scores[1] < TARGET_SCORE:
|
||||||
|
var move = 0
|
||||||
|
for _ in 1..3:
|
||||||
|
move += rollNum mod DIE_FACES
|
||||||
|
inc rollNum
|
||||||
|
pos[turn] = (pos[turn] + move) mod BOARD_POSITIONS
|
||||||
|
scores[turn] += pos[turn] + 1
|
||||||
|
echo &"{move}, {pos[turn]}, {scores}"
|
||||||
|
turn = (turn + 1) mod 2
|
||||||
|
|
||||||
|
echo rollNum, scores
|
||||||
|
uint64(scores[turn mod 2] * (rollNum - 1))
|
||||||
|
|
||||||
|
proc p2(input: Lines): uint64 =
|
||||||
|
0
|
||||||
|
|
||||||
|
const input = """
|
||||||
|
Player 1 starting position: 4
|
||||||
|
Player 2 starting position: 8
|
||||||
|
""".strip().split('\n')
|
||||||
|
doDayX 21, (n: int) => n.loadInput, p1, p2, (input, 739785'u64, 444356092776315'u64)
|
Loading…
Reference in a new issue