def make_rover(x, y):
    return {"x": x, "y": y, "coins": 100, "items": []}

def move(rover, dx, dy):
    rover["x"] += dx
    rover["y"] += dy

def spend(rover, amount):
    if type(amount) is not int or not 0 < amount <= rover["coins"]:
        return False
    rover["coins"] -= amount
    return True

def pick(rover, item):
    rover["items"].append(item)

def distance(a, b):
    dx = a["x"] - b["x"]
    dy = a["y"] - b["y"]
    return (dx * dx + dy * dy) ** 0.5

a = make_rover(0, 0)
b = make_rover(3, 4)
move(a, 1, 1)
spend(a, 30)
pick(a, "apple")
print("a:", a["x"], a["y"], a["coins"], a["items"])
print("b:", b["x"], b["y"], b["coins"], b["items"])
