Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Hacking Math Workout with OCR
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
import os
import time
import math
import re
def getx(n):
if n in ('1', '4', '7'):
return 50
elif n in ('2', '5', '8', '0'):
return 100
else:
return 200
def gety(n):
if n in ('1', '2', '3'):
return 150
elif n in ('4', '5', '6'):
return 200
elif n in ('7', '8', '9'):
return 250
else:
return 300
sqrt = re.compile(r'([0-9]+)')
percent = re.compile(r'([0-9]+)\%0f([0-9]+)')
print "Waiting for device!"
device = MonkeyRunner.waitForConnection()
print "Connected to device!"
dummy = raw_input('press enter to start')
prev_question = ''
for i in range(300):
filename = "%d.png" % i
device.takeSnapshot().getSubImage((10, 10, 220, 40)).writeToFile(filename, 'png')
question = os.popen("./ocr.sh %s" % filename).read()
try:
if '+' not in question and '-' not in question and '/' not in question and '*' not in question and '%' not in question and 'i' not in question:
result = int(question[0:-1]) * int(question[0:-1])
elif '%' in question:
result = int(percent.search(question).group(1)) * int(percent.search(question).group(2)) / 100;
else:
result = eval(question)
except:
continue
if i > 0 and prev_question == question:
continue
print "%s = %d" % (question, result)
result_str = str(result)
if '.' in question and '.' not in result_str:
result_str += '.0'
if 'm' in question:
result_str = sqrt.search(result_str).group(1)
time.sleep(0.1)
for ch in result_str:
device.touch(getx(ch), gety(ch), 'DOWN_AND_UP')
time.sleep(0.1)
prev_question = question
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment