|
@@ -0,0 +1,19 @@
|
|
1
|
+import sequtils, strutils
|
|
2
|
+
|
|
3
|
+proc react(polymer: seq[char], skip: char): seq[char] =
|
|
4
|
+ var count = 0
|
|
5
|
+ for c in polymer:
|
|
6
|
+ if c == skip or (ord(c) xor ord(skip)) == 32:
|
|
7
|
+ continue
|
|
8
|
+ if count > 0:
|
|
9
|
+ if (ord(c) xor ord(result[count - 1])) == 32:
|
|
10
|
+ result.delete(count - 1)
|
|
11
|
+ count -= 1
|
|
12
|
+ continue
|
|
13
|
+ result.add(c)
|
|
14
|
+ count += 1
|
|
15
|
+
|
|
16
|
+let polymer = toSeq(readFile("data/05.txt").strip.items).react(' ')
|
|
17
|
+
|
|
18
|
+echo polymer.len
|
|
19
|
+echo min(toSeq('A'..'Z').map(proc(c: char): int = len(polymer.react(c))))
|