Skip to content

Instantly share code, notes, and snippets.

@likejazz
Created March 1, 2018 11:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save likejazz/7ba74179a446bfa779238a14a9424613 to your computer and use it in GitHub Desktop.
Save likejazz/7ba74179a446bfa779238a14a9424613 to your computer and use it in GitHub Desktop.
import os
import sys
import time
def generate(in_data, out_data):
for i in range(len(in_data)):
print('Generating:', i + 1, file=sys.stderr)
sys.stdout = open('testcase/input%02d.txt' % (i + 1), 'w')
print(in_data[i])
sys.stdout.close()
sys.stdout = open('testcase/output%02d.txt' % (i + 1), 'w')
print(out_data[i])
sys.stdout.close()
def executes(in_data):
for i in range(len(in_data)):
start = time.time()
cmd = 'python3 %s < testcase/input%02d.txt > testcase/result%02d.txt ' % (filename, i + 1, i + 1)
# print(cmd, file=sys.stderr)
os.system(cmd)
end = time.time()
# compare each file
with open('testcase/output%02d.txt' % (i + 1)) as f1, open('testcase/result%02d.txt' % (i + 1)) as f2:
for line1, line2 in zip(f1, f2):
if line1 == line2:
correct = True
else:
correct = False
print('Time taken to execute this TC %02f [%s]' % (end - start, correct), file=sys.stderr)
# --
try:
os.mkdir('testcase')
except OSError:
pass
in_data = []
out_data = []
filename = "hackerrank.py"
# TC in/out data
in_data.append("""5 3
1 2 100
2 5 100
3 4 100
""")
out_data.append("200")
in_data.append("""5 4
1 2 100
2 5 100
3 4 100
3 4 100
""")
out_data.append("300")
# --
generate(in_data, out_data)
executes(in_data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment