diff options
author | Dennis Kobert <dennis@kobert.dev> | 2020-01-02 14:47:39 +0000 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2020-01-02 14:47:39 +0000 |
commit | 82a65a82873c6699f12c9c6186705e0089c58240 (patch) | |
tree | 42e26ecacdee54cc9b80fa9956bc956ed692b31f /log_parser.py | |
parent | 20aaa152b25121f992480452a270ba1e0d5b5dd3 (diff) | |
parent | edaccaaf15a526714f3de4e9e044341abd037885 (diff) |
Merge branch 'master' of /var/repos/babel
Diffstat (limited to 'log_parser.py')
-rw-r--r-- | log_parser.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/log_parser.py b/log_parser.py new file mode 100644 index 0000000..f27e2b2 --- /dev/null +++ b/log_parser.py @@ -0,0 +1,53 @@ +sym = '◙'.encode('utf-8') +f = open('log_6', 'rb') + +lines = [] +for line in f: + if line.startswith(b'\x1b'): + line = line.replace(sym, b'x') + line = line.replace(b'\x1b[', b'') + line = line.replace(b'm', b'') + line = line.replace(b'\n', b'') + line = ''.join(' ' if chr(i).isdigit() else 'x' for i in line) + lines[-1].append(tuple(len(i) for i in line.split(' ') if i)) + else: + lines.append([]) + continue + +f.close() +# f = open('log_6.py', 'w') +# f.write(str(walls)) +# f.close() + +def print_wall(wall): + for row in wall: + print('|'.join(' '.join(('.',) * stone) for stone in row)) + +walls = tuple(set(i) for i in lines if i) +n = len(next(iter(next(iter(walls))))) +h = (n // 2) + 1 + +for wall in []: #walls: + if tuple(range(1, n + 1)) in wall: + print_wall(wall) + print() + + +def for_stone(s): + counts = {w: 0 for w in range( (n - 1) * h + 1 )} + for wall in walls: + pos = 0 + os = set() + for stone_index in range(n): + for row in wall: + os.add(sum(row[:row.index(s)])) + for c in os: + counts[c] += 1 + return counts + +all_counts = [for_stone(i + 1) for i in range(n)] + +for sz, counts in enumerate(all_counts): + for xpos, count in sorted(counts.items(), key=lambda i: -i[1]): + sz + 1, xpos, count + print(f'{sz + 1} {xpos} {count}') |