Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import re
- from itertools import groupby
- def encode_rle(level):
- return '\n'.join(
- [
- ''.join(
- [key + str(len(list(group))) for key, group in groupby(row)]
- ) for row in level
- ]
- )
- def decode_rle(level):
- decoded_level = []
- for row in level.split('\n'):
- decoded_row = []
- for elt, k in re.findall(r'([A-Za-z_]+)(\d+)', row):
- decoded_row.extend([elt] * int(k))
- decoded_level.append(decoded_row)
- return decoded_level
- level = [
- ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'c', 'c', 'b', 'b'],
- ['b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'a'],
- ['a', 'c', 'c', 'c', 'b', 'c', 'a', 'b', 'a', 'a', 'a', 'b', 'b', 'c']
- ]
- enc = encode_rle(level)
- dec = decode_rle(enc)
- assert dec == level
Advertisement
Add Comment
Please, Sign In to add comment