Visualize the Euclidean algorithm
JavaScript (ES6), 128 124 bytes



t=0
f=
(a,b,o,c,d)=&gt;setInterval(e=&gt;{e=[b,d,a,c];o.data=`-0
-0`.replace(/./g,c=&gt;c.repeat(e.pop()));c|d?c=d=0:a&gt;b?a-=c=b:b-=d=a},1e3)
&lt;form&gt;&lt;input id=a&gt;&lt;input id=b&gt;&lt;button onclick=clearTimeout(t),t=f(+a.value,+b.value,o.firstChild)&gt;Go!&lt;/button&gt;&lt;pre id=o&gt;