diff --git a/day06/input b/day06/input
new file mode 100644
index 0000000..13eab94
--- /dev/null
+++ b/day06/input
@@ -0,0 +1 @@
+5,1,4,1,5,1,1,5,4,4,4,4,5,1,2,2,1,3,4,1,1,5,1,5,2,2,2,2,1,4,2,4,3,3,3,3,1,1,1,4,3,4,3,1,2,1,5,1,1,4,3,3,1,5,3,4,1,1,3,5,2,4,1,5,3,3,5,4,2,2,3,2,1,1,4,1,2,4,4,2,1,4,3,3,4,4,5,3,4,5,1,1,3,2,5,1,5,1,1,5,2,1,1,4,3,2,5,2,1,1,4,1,5,5,3,4,1,5,4,5,3,1,1,1,4,5,3,1,1,1,5,3,3,5,1,4,1,1,3,2,4,1,3,1,4,5,5,1,4,4,4,2,2,5,5,5,5,5,1,2,3,1,1,2,2,2,2,4,4,1,5,4,5,2,1,2,5,4,4,3,2,1,5,1,4,5,1,4,3,4,1,3,1,5,5,3,1,1,5,1,1,1,2,1,2,2,1,4,3,2,4,4,4,3,1,1,1,5,5,5,3,2,5,2,1,1,5,4,1,2,1,1,1,1,1,2,1,1,4,2,1,3,4,2,3,1,2,2,3,3,4,3,5,4,1,3,1,1,1,2,5,2,4,5,2,3,3,2,1,2,1,1,2,5,3,1,5,2,2,5,1,3,3,2,5,1,3,1,1,3,1,1,2,2,2,3,1,1,4,2
diff --git a/day06/part1.nim b/day06/part1.nim
new file mode 100644
index 0000000..cf7d59c
--- /dev/null
+++ b/day06/part1.nim
@@ -0,0 +1,46 @@
+# Copyright 2021 Christian Ulrich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# usage: ./part1 < input
+
+import sequtils
+import strutils
+
+const Days = 80
+
+proc predictLanternfishCount(): int =
+ var
+ timers = readLine(stdin).split(',').mapIt(uint8(parseUint(it)))
+ newTimers: seq[uint8]
+ for day in 0 ..< Days:
+ newTimers.setLen(0)
+ for timer in timers.mitems():
+ if timer == 0'u8:
+ newTimers.add(8'u8)
+ timer = 6'u8
+ else:
+ timer.dec()
+ timers.add(newTimers)
+ result = timers.len()
+
+proc main(): int =
+ try:
+ echo predictLanternfishCount()
+ except Exception as error:
+ echo error.msg
+ result = -1
+
+when isMainModule:
+ quit(main())
diff --git a/day06/part2.nim b/day06/part2.nim
new file mode 100644
index 0000000..666260e
--- /dev/null
+++ b/day06/part2.nim
@@ -0,0 +1,44 @@
+# Copyright 2021 Christian Ulrich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# usage: ./part2 < input
+
+import algorithm
+import sequtils
+import strutils
+
+const Days = 256
+
+proc predictLanternfishCount(): uint64 =
+ let timers = readLine(stdin).split(',').mapIt(uint8(parseUint(it)))
+ var counters: array[9, uint64]
+ for timer in timers:
+ if timer > 8:
+ raise newException(ValueError, "invalid timer")
+ counters[timer].inc()
+ for day in 0 ..< Days:
+ counters.rotateLeft(1)
+ counters[6] += counters[8]
+ result = counters.foldl(a + b, 0'u64)
+
+proc main(): int =
+ try:
+ echo predictLanternfishCount()
+ except Exception as error:
+ echo error.msg
+ result = -1
+
+when isMainModule:
+ quit(main())
diff --git a/day06/testinput b/day06/testinput
new file mode 100644
index 0000000..55129f1
--- /dev/null
+++ b/day06/testinput
@@ -0,0 +1 @@
+3,4,3,1,2