TARGET = 77
results = {}
def gameResult( x, y ):
if (x,y) in results: return results[x,y]
if x + y >= TARGET: return 0
nextCodes = [ gameResult( x+1, y ), gameResult( x*2, y ),
gameResult( x, y+1 ), gameResult( x, y*2 ) ]
negative = [c for c in nextCodes if c <= 0]
if negative:
res = -max(negative) + 1
else:
res = -max(nextCodes)
results[x,y] = res
return res
X = 7
for S in range(TARGET-X-1,0,-1):
r = gameResult( X, S )
print( "{:d} {:d}".format(S, r) )
# your code goes here
VEFSR0VUID0gNzcKcmVzdWx0cyA9IHt9ICAgICAgICAgICAgICAKZGVmIGdhbWVSZXN1bHQoIHgsIHkgKToKICBpZiAoeCx5KSBpbiByZXN1bHRzOiByZXR1cm4gcmVzdWx0c1t4LHldICAgICAKICBpZiB4ICsgeSA+PSBUQVJHRVQ6IHJldHVybiAwCiAgbmV4dENvZGVzID0gWyBnYW1lUmVzdWx0KCB4KzEsIHkgKSwgZ2FtZVJlc3VsdCggeCoyLCB5ICksCiAgICAgICAgICAgICAgICBnYW1lUmVzdWx0KCB4LCB5KzEgKSwgZ2FtZVJlc3VsdCggeCwgeSoyICkgXQogIG5lZ2F0aXZlID0gW2MgZm9yIGMgaW4gbmV4dENvZGVzIGlmIGMgPD0gMF0KICBpZiBuZWdhdGl2ZToKICAgIHJlcyA9IC1tYXgobmVnYXRpdmUpICsgMQogIGVsc2U6CiAgICByZXMgPSAtbWF4KG5leHRDb2RlcykKICByZXN1bHRzW3gseV0gPSByZXMgICAgICAgICAgICAgICAgICAgICAgICAKICByZXR1cm4gcmVzCgpYID0gNwpmb3IgUyBpbiByYW5nZShUQVJHRVQtWC0xLDAsLTEpOgogIHIgPSBnYW1lUmVzdWx0KCBYLCBTICkKICBwcmludCggIns6ZH0gezpkfSIuZm9ybWF0KFMsIHIpICkKIyB5b3VyIGNvZGUgZ29lcyBoZXJl