58 lines
1.3 KiB
Plaintext
58 lines
1.3 KiB
Plaintext
func part1[lines: Array] : void
|
|
password := 0
|
|
dial := 50
|
|
|
|
for i in 0..lines->size
|
|
line : str = array.nth(lines, i)
|
|
dir := line[0]
|
|
n := str.substr(line, 1, str.len(line) - 1) |> str.parse_i64()
|
|
|
|
if dir == 'L'
|
|
dial -= n
|
|
while dial < 0
|
|
dial += 100
|
|
else
|
|
dial += n
|
|
while dial >= 100
|
|
dial -= 100
|
|
|
|
if dial == 0
|
|
password += 1
|
|
|
|
io.println_i64(password)
|
|
|
|
func part2[lines: Array] : void
|
|
password := 0
|
|
dial := 50
|
|
|
|
for i in 0..lines->size
|
|
line : str = array.nth(lines, i)
|
|
dir := line[0]
|
|
n := str.substr(line, 1, str.len(line) - 1) |> str.parse_i64()
|
|
|
|
if dir == 'L'
|
|
for i in 0..n
|
|
dial -= 1
|
|
if dial == 0
|
|
password += 1
|
|
if dial == -1
|
|
dial = 99
|
|
else
|
|
for i in 0..n
|
|
dial += 1
|
|
if dial == 100
|
|
dial = 0
|
|
password += 1
|
|
|
|
io.println_i64(password)
|
|
|
|
func main[] : i64
|
|
~input, ok := io.read_text_file("input.txt")
|
|
if !ok
|
|
panic("failed to open input.txt")
|
|
|
|
lines := str.split(input, "\n")
|
|
|
|
part1(lines)
|
|
part2(lines)
|