Cyclic Quine

A classic Quine is a program which outputs its own source code.
At first, such a program’s existence seems weird if not impossible, as it has to be so self-referential that it knows about itself everything, including how to know about itself. However, writing quines is possible, if not trivial.

A cyclic quine therefore is a program which outputs source code which differs from its own source code, yet outputs the original source code when run (the cycle length could be greater than one). So when running source codes \Psi and \Phi, they output source codes \Phi and \Psi.

Therefore, when one saves the first program as q0.py and the second as q1.py, one can create both source codes from one another (the following bash commands will not change the files’ contents).

$ python q0.py > q1.py
$ python q1.py > q0.py
$ python q0.py | python > q0.py
$ python q0.py | python | python | python | python > q1.py

j=0;Q,q="j=1;Q,q={}{}{}.replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)".replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)
j=1;Q,q="j=1;Q,q={}{}{}.replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)".replace(str(j),str(int(not(int(j)))),1),chr(34);print Q.format(q,Q,q)

Double-Slit Experiment

Light is a fascinating thing in our universe. We perceive it as color, warmth and vision. Yet it does things one may not expect it to do. One of the experiments that called for a better physical model of light was the double slit experiment. In this experiment, a laser is shone through two closely adjacent slits and projected on the screen behind. Using old physical models, one would expect to see one or maybe two specs of light on the screen, when in reality there appear alternating dark and bright spots.

To explain why this seemingly strange phenomenon is occurring, one can either see light as photons and comprehend that a photon presumably follows every possible path there is in the entire universe and then — through it being observed — randomly chooses one path and thus creates stripes (according to the theory of quantum mechanics) or one can see light as simply being a wave.

For more information on the double-slit experiment, I refer to this Wikipedia entry.

The animation shown below describes light as a wave. The green vectors represent the light wave’s phase at the points on the light beam, the yellow vector represents the addition of both of the slit’s light beam’s phase when hitting the screen and the red dots at the screen represent the light’s brightness at that point (defined by the yellow vector’s length).
To create the animation, Python and a Python module called PIL were used to create single frames which were then stitched together by ImageMagick to create an animated gif.

Double-Slit Simulation (probably loading...)


# Jonathan Frech, 18th of January 2017
#          edited 19th of January 2017
#          edited 22nd of January 2017
#          edited 27th of January 2017

Continue reading

MicroCounter

Being a big fan of Python, I recently got a MicroPython Board.
MicroPython is a simple to use micro controller which runs Python 3. To put code onto it, you simple mount it as you would do with a USB flash drive, copy your main.py to it and restart your MicroPython.
As a simple “Hello world.” program, I wrote this counting script. Every time you press the built-in button, it counts up by one. Using the four built-in LEDs and binary number representation, this counter can count from 0 to 15 and then wraps back.

MicroCounter Counting


# Python 3 Code, MicroPython Implementation
# Jonathan Frech  9th of September, 2016
#         edited 23rd of September, 2016

Continue reading