Question 4: A Python solution 

import subprocess

rows = [[" " for y in range(1024)] for x in range(512)]
r, c = 0, 0

command = ['unzip', '-p', '04-hansel-and-gretel.zip', 'path.txt']
for byte in subprocess.check_output(command):
    cmd = chr(byte)
    if cmd == 'N': r -= 1
    if cmd == 'S': r += 1
    if cmd == 'W': c -= 1
    if cmd == 'E': c += 1
    if cmd == '*': rows[r][c] = '#'

for row in rows:
    print(''.join(row))