Multisource grid solving by Dom

import sys
import string
from collections import deque

base62_str = string.digits + string.ascii_uppercase + string.ascii_lowercase
all_data = sys.stdin.read().split('\n')
for line in all_data:
    data = line.split()
    row = len(data)
    col = len(data[0])
    dist = [[-2] * col for _ in range(row)]

    q = deque()

    for r in range(row):
        for c in range(col):
            if data[r][c] == '-':
                dist[r][c] = -1
            elif data[r][c] == '0':
                dist[r][c] = 0
                q.append((r, c))
                
    def valid(r, c):
        if r < 0 or r >= row or c < 0 or c >= col:
            return False
        return dist[r][c] == -1

    while q:
        r, c = q.popleft()
        for dr, dc in [(-1, 0), (1, 0), (0, 1), (0, -1)]:
            nr, nc = r + dr, c + dc
            if valid(nr, nc):
                dist[nr][nc] = dist[r][c] + 1
                q.append((nr, nc))

    ans = []
    for r in range(row):
        ans.append(''.join(data[r][c] if dist[r][c] <=0 or dist[r][c] >= len(
            base62_str) else base62_str[dist[r][c]] for c in range(col)))
    print(' '.join(ans))
    

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

To protect the system from spam, please input your favorite sport (hint: I believe its name must start with 'g', case insensitive)

download

return to the top page