27 lines
559 B
Nim
27 lines
559 B
Nim
import strutils
|
|
|
|
type RunLength = tuple[c: char, n: int]
|
|
|
|
proc encode(inp): seq[RunLength] =
|
|
result = @[]
|
|
var count = 1
|
|
var prev: char
|
|
|
|
for c in inp:
|
|
if c != prev:
|
|
if prev != chr(0):
|
|
result.add((prev,count))
|
|
count = 1
|
|
prev = c
|
|
else:
|
|
inc(count)
|
|
result.add((prev,count))
|
|
|
|
proc decode(lst: openarray[RunLength]): string =
|
|
result = ""
|
|
for x in lst:
|
|
result.add(repeatChar(x.n, x.c))
|
|
|
|
echo encode("aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa")
|
|
echo decode([('a', 5), ('h', 6), ('m', 7), ('u', 1), ('i', 7), ('a', 6)])
|