Above is a QR code that indicates the time. It updates every second. Click on it to make it fullscreen. The message in it has three characters: the first represents hours, the middle represents minutes, and the third represents seconds. To get the time, look up the characters in the table below.
Code | Number |
---|---|
A | 0 |
B | 1 |
C | 2 |
D | 3 |
E | 4 |
F | 5 |
G | 6 |
H | 7 |
I | 8 |
J | 9 |
K | 10 |
L | 11 |
M | 12 |
N | 13 |
O | 14 |
P | 15 |
Q | 16 |
R | 17 |
S | 18 |
T | 19 |
U | 20 |
V | 21 |
W | 22 |
X | 23 |
Y | 24 |
Z | 25 |
a | 26 |
b | 27 |
c | 28 |
d | 29 |
e | 30 |
f | 31 |
g | 32 |
h | 33 |
i | 34 |
j | 35 |
k | 36 |
l | 37 |
m | 38 |
n | 39 |
o | 40 |
p | 41 |
q | 42 |
r | 43 |
s | 44 |
t | 45 |
u | 46 |
v | 47 |
w | 48 |
x | 49 |
y | 50 |
z | 51 |
0 | 52 |
1 | 53 |
2 | 54 |
3 | 55 |
4 | 56 |
5 | 57 |
6 | 58 |
7 | 59 |
8 | 60 |
9 | 61 |
The number 60 rarely appears, but it does when there is a leap second. The number 61 is there just in case.
The little white square that are scattered on the outside of the QR code are leftovers. Every QR code uses both black and white squares, but because the background is black, only the white squares are animated. When one QR code has fewer white than the previous, the extra white squares are moved outside the QR code. If they still are not used by the next QR code, then they remain on the outside. They are never removed from this page until you close it or go somewhere else.
This is a project through which I can practice combinatorial optimization. On each refresh, the squares must change their formation. The code that controls which square goes where is a great place to practice things like the assignment problem. Each square can go to any location, and each location can take any square. A square is a worker, and a location is a job. The cost of a worker doing a job is the distance from the worker’s current location to the new location. Minimizing the total distance that is traveled by all squares upon each refresh is a case of the assignment problem.