25 lines
711 B
Nim
25 lines
711 B
Nim
import std/[sequtils]
|
|
|
|
const input = readFile("day_06/input.txt")
|
|
|
|
proc isMarker(segment: string): bool {.inline.} =
|
|
segment.deduplicate == segment
|
|
|
|
proc findMarkerIndex(data: string, markerSize: int): int =
|
|
let offset = markerSize - 1
|
|
for i in offset..input.len-1:
|
|
if input[i-offset..i].isMarker:
|
|
return i
|
|
|
|
# How many characters need to be processed before the first start-of-packet marker is detected?
|
|
proc solvePart1() =
|
|
echo "Marker: " & $(input.findMarkerIndex(4) + 1)
|
|
|
|
# How many characters need to be processed before the first start-of-message marker is detected?
|
|
proc solvePart2() =
|
|
echo "Marker: " & $(input.findMarkerIndex(14) + 1)
|
|
|
|
if isMainModule:
|
|
solvePart1()
|
|
solvePart2()
|