Well, you can lift state (x, y, dx, dy) to input as the "solution" does it (has (time) as input) and call it stateless as well. Lift window width and height and you won't have a bug with jumps on resize as a bonus.
As another bonus you can make it non-linear, ie. having some basic non-linear physics.
As another bonus you can make it non-linear, ie. having some basic non-linear physics.