52 lines
1.2 KiB
Python
Executable File
52 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
|
|
from sys import argv, exit
|
|
|
|
if len(argv) != 3:
|
|
print("Usage: %s [input file] [output file]" % argv[0])
|
|
exit(1)
|
|
|
|
with open(argv[1], 'r') as inf:
|
|
lines = inf.readlines()
|
|
|
|
def find_first_arrow():
|
|
global lines
|
|
for i in xrange(len(lines)):
|
|
if '->' in lines[i]:
|
|
return i
|
|
return -1;
|
|
|
|
def get_hash_map(fai):
|
|
global lines
|
|
hash_map = {}
|
|
current_id = 0
|
|
for i in xrange(1, fai):
|
|
h = lines[i][:-3]
|
|
if h not in hash_map:
|
|
hash_map[h] = current_id
|
|
current_id += 1
|
|
lines[i] = lines[i].replace(h, str(hash_map[h]))
|
|
return hash_map
|
|
|
|
def perform_replacements(fai, hash_map):
|
|
global lines
|
|
|
|
for i in xrange(fai, len(lines) - 1):
|
|
hashes = lines[i][:-4].split(' -> ')
|
|
lines[i] = lines[i].replace(hashes[0], str(hash_map[hashes[0]]))
|
|
lines[i] = lines[i].replace(hashes[1], str(hash_map[hashes[1]]))
|
|
|
|
|
|
first_arrow_index = find_first_arrow();
|
|
if (first_arrow_index == -1):
|
|
print("Error: file is improper graph")
|
|
exit(2);
|
|
|
|
hash_map = get_hash_map(first_arrow_index)
|
|
|
|
perform_replacements(first_arrow_index, hash_map)
|
|
|
|
with open(argv[2], 'w') as outf:
|
|
for line in lines:
|
|
outf.write(line)
|