aboutsummaryrefslogtreecommitdiffstats
path: root/day6/solution.nim
diff options
context:
space:
mode:
authorOrfeas <38209077+0xfea5@users.noreply.github.com>2024-06-08 13:50:47 +0300
committerOrfeas <38209077+0xfea5@users.noreply.github.com>2024-06-08 13:50:47 +0300
commit7be570c4a6e86fb7060f0bc06910ca57003dfe90 (patch)
treea998f976596cb902cd8988d74f756b72660bc29c /day6/solution.nim
parentDay 21 (part1) (diff)
downloadaoc22-main.tar.gz
aoc22-main.zip
Update file names and init.shHEADmain
Diffstat (limited to 'day6/solution.nim')
-rw-r--r--day6/solution.nim39
1 files changed, 0 insertions, 39 deletions
diff --git a/day6/solution.nim b/day6/solution.nim
deleted file mode 100644
index ce3ccd0..0000000
--- a/day6/solution.nim
+++ /dev/null
@@ -1,39 +0,0 @@
1import std/strutils
2import std/sequtils
3import std/tables
4
5proc solve(message: string, nUniq: int): int =
6 var cntUniq = initCountTable[char]()
7
8 # init found
9 var uniq = 0
10 for c in message[0 ..< nUniq]:
11 cntUniq.inc(c)
12 if cntUniq[c] == 1:
13 uniq += 1
14
15 let pairs = zip(
16 message[0 ..< message.len()-nUniq],
17 message[nUniq ..< message.len()])
18
19 for i, pair in pairs:
20 if uniq == nUniq:
21 return i+nUniq
22
23 cntUniq.inc(pair[0], -1)
24 if cntUniq[pair[0]] == 0:
25 # we lost one uniq number in sequence
26 uniq -= 1
27
28 cntUniq.inc(pair[1])
29 if cntUniq[pair[1]] == 1:
30 # we found new uniq number in sequence
31 uniq += 1
32
33 assert(false)
34 return -1
35
36let content = readFile("./input.txt").strip()
37
38echo solve(content, 4)
39echo solve(content, 14)