Further refactor the main harness. Print average time for each solution.

This commit is contained in:
Arthur O'Dwyer
2017-04-16 00:55:18 -07:00
parent 3103f54ada
commit 77bfaaf5a7
2 changed files with 10 additions and 7 deletions

View File

@ -43,10 +43,12 @@ def runTrial(answers):
else: else:
answer = None answer = None
finalTemperature = temperature.value finalTemperature = temperature.value
print 'Answered %s (time %d, final temperature %.1f)' % (answer, coderack.codeletsRun, finalTemperature) finalTime = coderack.codeletsRun
answers[answer] = answers.get(answer, {'count': 0, 'tempsum': 0}) print 'Answered %s (time %d, final temperature %.1f)' % (answer, finalTime, finalTemperature)
answers[answer] = answers.get(answer, {'count': 0, 'tempsum': 0, 'timesum': 0})
answers[answer]['count'] += 1 answers[answer]['count'] += 1
answers[answer]['tempsum'] += finalTemperature answers[answer]['tempsum'] += finalTemperature
answers[answer]['timesum'] += finalTime
def run(initial, modified, target, iterations): def run(initial, modified, target, iterations):
@ -55,7 +57,6 @@ def run(initial, modified, target, iterations):
for i in xrange(iterations): for i in xrange(iterations):
runTrial(answers) runTrial(answers)
for answer, d in answers.iteritems(): for answer, d in answers.iteritems():
d['avgtemp'] = d['tempsum'] / d['count'] d['avgtemp'] = d.pop('tempsum') / d['count']
d.pop('tempsum') d['avgtime'] = d.pop('timesum') / d['count']
for answer, d in sorted(answers.iteritems(), key=lambda kv: kv[1]['avgtemp']): return answers
print '%s: %d (avg temp %.1f)' % (answer, d['count'], d['avgtemp'])

View File

@ -18,7 +18,9 @@ def main(program, args):
else: else:
initial, modified, target = args initial, modified, target = args
iterations = 1 iterations = 1
copycat.run(initial, modified, target, iterations) answers = copycat.run(initial, modified, target, iterations)
for answer, d in sorted(answers.iteritems(), key=lambda kv: kv[1]['avgtemp']):
print '%s: %d (avg time %.1f, avg temp %.1f)' % (answer, d['count'], d['avgtime'], d['avgtemp'])
return 0 return 0
except ValueError: except ValueError:
print >> sys.stderr, 'Usage: %s initial modified target [iterations]' % program print >> sys.stderr, 'Usage: %s initial modified target [iterations]' % program