Jonathan. Frech’s WebBlog

Animating the Quantum Drunkard’s Walk (#186)

Jonathan Frech

A recent PPCG challenge titled The Quantum Drunkard’s Walk was about a tiny drunken person for which quantum mechanics apply and who — being drunk — will ran­dom­ly walk in one of the four cardinal directions each step they take.
As they ex­pe­ri­ence the strange world of quanta, they can simultaneously take every path at once and their paths influence each oth­er. The challenge then asked to output all possible positions the quantum drunkard could occupy, all paths they could take in ASCII rep­re­sent­ation.

The ques­tion also states this problem’s equivalence to a cellular automaton, when one removes the story boilerplate.
Cells in this cellular automaton are square and can occupy one of three states: empty, awake or sleeping. Each iteration, all cells change according to three rules.

Being code golf, the aim was to come up with a minimally sized source code; my attempt required 214 bytes and prints a nested array containing one-length strings (characters), as this output method is cheaper than concatenating all characters to one string.

python quantum.py⁠¹ -rmi 200

However, one user took the challenge idea a bit further and created an animated gif showing the walk’s, or cellular automaton’s, progression over time with an increasing num­ber of iterations. My Python program shown in this post does exactly that, generating an animated gif showing the automaton’s progression. I even im­ple­ment­ed rainbow support, possibly improving the automaton’s visual appearance.
Python source code can be downloaded and seen below.

I use the Python Imaging Library to produce all frames and use a shell call to let ImageMagick convert all frames to an animated gif. Animation pa­ram­e­ters are taken via shell arguments, a full list of features follows (also avail­able via the -h flag).

python quantum.py -s 25 -md 50

Source code: animating-the-quantum-drunkards-walk.py


[1][2020-08-07] quantum.py was renamed to animating-the-quantum-drunkards-walk.py.