Wednesday’s answers for knotted toroids:


Unknotting a 2-holed torus.

Having one torus eat another.

Removing one toroid hoop from another toroid.


Colossal Gardner, ch. 20

Doughnuts: Linked and Knotted

Before I get started on the Gardner chapter, I want to put down some thoughts here on topology. I had never really heard about topology as a field of mathematics when I was in school, and it wasn’t until maybe the mid-1980’s that I encountered the whole doughnut-coffee cup equivalence thing. But, in the last year, I’ve been running into it more often, in the writings of George Gamow and Martin Gardner. One reason for topology attracting a physicist’s attention is in its relationship to Einstein’s statement that space is warped. If this statement is indeed true, then topology can possibly help explain what the universe really looks like to an outsider (i.e. – someone standing outside our universe).

(All rights belong to their owners. Images used here for review purposes only. Escher’s Circle Limit III.)

At the same time, though, we have M. C. Escher’s Circle Limit III woodcut (blog entry #14), which illustrates what a hyperbolic universe could look like. Again, within that universe, the lengths of the fish are all the same, it’s just that you the inhabitant, and all your measuring devices, get proportionately smaller as you get closer to the rim of the disk. So, think about that – if space is warped, and anyone living within that space gets warped simultaneously, you can’t tell through direct measurements that anything is going on because your rulers warp, too.

Ok, why bring this up? Because gravity is not a force, it’s a side effect of mass. If mass warps space, and space remains “flat” in the absence of mass, then the contraction of space around a point centered within a given mass can be thought of as being like the reciprocal of the hyperbolic world of Circle Limit III. Things get smaller as you get closer to the center of the “disk.” What we call “gravity” then is the result of this warping, where the distances between three adjacent parallel (from our perspective) lines (in my above figure, say three vertical lines running through x = 1, 2 and 3) aren’t equal. The energy then to go in one direction is not the same as for going in the opposite direction because the spacing between the lines is smaller in one direction than in the other. This warpage is perceived as gravity only in that we have no other way of seeing what is happening to us at this scale. The farther away we move from this mass, the less differential in distances between adjacent parallel lines, and less “pull” to the center of the mass that we experience. “Weightlessness” is where the “real” distances between three adjacent parallel lines are more or less equal. To an outside observer, people within pinched space would look smaller than they would when “weightless.”

One reason I don’t like the traditional drawings of gravity wells is that they’re shown in polar coordinates around the mass, as if there really is a gravity “well” (or energy hole) of some kind. I think a pinched rectangular grid would be a better choice, especially if you animate two or more masses (like two orbiting black holes, or our Earth and moon orbiting the Sun). You’d be able to visualize gravity waves better this way, I’d expect. If I ever figure out how to draw this kind of animation, I will. Anyway, the problem with developing a Grand Unified Theory is not one of figuring out how to relate gravity to the weak and strong forces, but how to tie the distortion of space via a charge-neutral mass to those other charged forces. M-Theory, and the application of 10-, 11-dimensional space might not be that far off. (Yes, I know my ideas are not original and/or new. But, they are mine.)

(Making a torus by rotating a circle around an axis.)

Ok, so, doughnuts to you. Martin begins by introducing the torus as a circle rotated around an axis that doesn’t intersect the circle, and he draws parallels with coffee cups, rubber bands and a sphere with one handle. He then mentions that a rubber model of a surface cannot be deformed in 3D space to make ALL topologically equivalent models. That is, a Mobius strip has a “handedness” that you can’t alter through stretching and twisting. This “handedness” disappears in 4D space, though.

After talking about turning a torus with a hole in it inside out, Martin continues to the idea of tori with knots tied into them. The above illustration shows the two types of trefoil knots possible – an outside knot, and an inside knot. One way of visualizing the inside knot is to take a wood block and drill a hole through it in the knot shape. He adds that it is not possible for a torus to have both an inside and outside knot, which would be similar to the pseudo knot at the above right. Untying the outer knot simultaneously unties the inner knot, showing that the model is topologically identical to an unknotted torus, elongated to look like a garden hose.

R. Bing wrote a paper in 1965, entitled “Mapping a 3-Sphere onto a Homotopy 3-Sphere,” where he showed that the top right cube with a hole (fig. 20.4) and a second hole knotted around it is topologically the same as the top left cube with two straight holes (fig. 20.4). Because in this system the end points of the holes can be moved around easily, the solution (fig. 20.5) is to first deform the right side hole to look like a single line (mainly to make the proof easier to follow), then run one end of the hole up the side of the other one, around the top of the cube, and then along the side and back to the bottom.

We then get examples of two-hole tori, and there are a lot of varieties of these.

The addendum talks about intrinsic and extrinsic properties of a surface, and states that the two above surfaces are equivalent. There’s a lot here if you’re interested in topology, so it’s either better to buy the book, or refer to the wiki article.

Puzzles for this week:

Can you untie the below left torus to get the figure on the right?

Arigato Mister Roboto

Almost 1 year ago, I wrote about building a RoboDesign Kit robot, from Cutt. At the time, the main problem I had was in getting a cable to connect my laptop to the robot. The kit was designed for a 9-pin serial cable running from the COM ports, and modern PCs don’t use COM ports anymore. I asked for a 9-pin serial to USB converter cable from home (couldn’t find anything like this in Japan) and received the 6′ cable from D-Tech in December. The next issue was whether I’d be able to get updated software from TiColla, but that turned out to be a dead end, since the kit came out in 2006, and the software isn’t supported anymore.

(TiCollo hardware assignment screen.)

So, I dither about a lot, and then I get distracted, and then I have a lot of books from Christmas to read, including the Crypto Contest book and Martin Gardner’s Colossal Book of Mathematical Puzzles, and time just slips by me. Finally, before my birthday, I knuckle down and break out the kit manual again. I install the programming software off the CD, plug in the USB adapter cable, and see what I’ve got. Amazingly, the CD-ROM software runs right away, the cable driver is recognized and installed, and the robot itself turns on (after I run to the 100 yen shop to buy 4 C-cell batteries). With nothing better to do, I set up the TiCollo environment so the robot is configured to know that it’s got the 2 DC motors and 2 contact switches, then I move the icons around to create a short test program to turn on one motor for 1 second. I set the switches to download the program to the robot, turn it on, and click “send.” The LEDs on the board don’t flicker, but TiCollo says the program downloaded. I turn the power switch off, change the second switch to “run program,” turn it back on, and press the “go” button.

(TiCollo’s programming environment is icon based.)

Nothing. I try again. Nothing. I change the switches and try again, and the robot jerks forward a bit then turns off. I change the program again, but I get the same jerky motion. I keep messing around with the switches, checking the connections, and even trying more complex programs, but the robot seems crippled somehow. Finally I decide that the kit is broken and I did what I could do with it. It was fun to build, but I’d hadn’t gotten my hopes up that it would still be functional after so long. Great, time to put it out for recycling.

More time goes by. I get more books for my birthday, and that keeps me REALLY busy through August. But, when I get to the Prolog Programming book, I feel frustrated. Prolog is interesting, but I can’t find the kind of AI example programs I was hoping would be online, and the examples I do find are for other flavors of Prolog that don’t run under Gnu-Prolog without massive rewrites. I spend a week learning Prolog, then have nothing that I really want to use it for. I’d thought about trying my hand at playing with symbolic logic as described in the Smullyan book on the Godel incompleteness theorem, but I really need examples to work from, and I can’t find anything.

So, I put the Prolog book away, and I return to the idea of cleaning out stuff from the apartment to make more room, bringing me back to the robot still sitting in its little corner. And there are two things still bugging me about it. The environment software kept defaulting to 9600 baud when transmitting the program to the robot, and I’d been wondering if that speed was too high for the cable. To check, I bring the robot and cable back out, hook everything up, and run the TiColla software again. The only option in the send screen is to deactivate 9600 baud mode, but I have no idea what that means. I send the program – no change from before. That leaves the second thing – 9-pin serial cables often had the send and receive pins cross wired. I don’t know if my USB adapter cable is cross wired or straight through. And I don’t have any way of checking. Before I give up, though, I start inspecting all the switches and jumpers on the microcontroller board to see if I can find any clues. And, stenciled next to one switch on the interface board, I read “Cross” – “Straight.” It’s currently on straight, so I set it to cross and try downloading the test program one more time. And what happens? The LEDs flicker madly, and when I press the “go” button, the robot goes exactly the way its supposed to go. I load the obstacle avoidance program, run the robot, and watch as it backs up and goes in a new direction when the feeler switches get bumped.

Well. I now have a choice. I can either throw the thing away like I’d been planning to, or I can make it do tricks. Decisions, decisions…

Actually, I’d hadn’t soldered in the infrared LEDs to the sensor interface boards, or attached those to the the robot frame yet. Those are needed for the bulk of the programs in the book, so I take care of that, which takes about 15 minutes, mainly because of how the hardware is designed to mount the front “bumper” to the main frame. Then, I write up a small program to test the IR sensors, and that doesn’t work. The LEDs are supposed to be infrared, so presumably you can’t visually tell if they’re on. But, I found a photo of the kit online, and that showed the LEDs as glowing bright blue, which bothers me (if IR LEDs had a visible component, it would be reddish, so I suspect the glow was photoshopped in). Then I go back to the book again, and discover a separate wiring instruction stating that to use the LEDs, you need to solder a jumper point on both boards. I do that, and still no change. I mess with the kit a lot more, and it seems that one of the two photo-transistors is more light sensitive than the other one, which gives me hope that by changing the potentiometer settings I can get them to be equally light sensitive, and that works a little bit. I tape sheets of printer paper together and lay down a track with black electrical tape, and the line follower program recognizes the tape just enough to be teasing, but the tape apparently is too glossy, and the photo-transistors generally can’t tell the difference between that and the paper.

Finally I give up and go back to just playing with the motors, loops, and contact switches. Then I run into a limitation in TiColla, which keeps flagging me if the program gets too long. That’s bizarre, because there are longer programs in the book for the soccer playing robot (which requires a plastic soccer ball with IR LEDs inside, so I can’t use the robot in actual play because I don’t have the IR ball, or a second robot to act as a goalie). I assume the problem is in the software, which I can’t update. Now, yeah, I have to give up and say that I had a better run with this kit than I’d expected. I still have the wall avoider, and I can write limited logo turtle-style pattern runners. I’ll show the kit off to my students, and move on to the next distraction.

Just as a side note, the maker of the kit, Japan Robotech, still has a website presence, and their current machines are built around the Arduino.

Knotty answers

Treat the above knot as one piece of rope with no loose ends. Move the ring from the bottom knot to the top one without untying the rope. (The solution is in fig. 19.9.)

Colossal Gardner, ch. 19

Have you noticed that I often start out with “Gardner starts out by saying…”? No? Maybe I shouldn’t have mentioned it. Anyway, Gardner starts out by saying “To a topologist knots are closed curves embedded in three-dimensional space.” The knot is defined as “trivial” if you can model it projected on a plane as a curve with no crossing points. That is, the curve is not knotted. “Links are two or more closed curves that can not be separated without passing through one another.” Gardner also makes mention of Lee Neuwirth’s The Theory of Knots (1979, Scientific American). Most of the math in this chapter can be found in the wikipedia article, so I’m not going to repeat it here.

(All rights belong to their owners. Images used for review purposes only. Three examples of nonalternating knots with 8 crossings.)

First, though, knots can be classified by the number of their crossings, and whether they are alternating or nonalternating. That is, if you follow the knot along the string in one direction or the other, the string will alternate going over and under at the crossings. Nonalternating knots don’t alternate. You can also divide them as prime or composite. A prime knot can not be manipulated to make two or more separate knots. Gardner gives the square and granny knots as examples of composites, because they can be changed to two side-by-side trefoils. The square knot is a combination of two trefoils of opposite handed-ness, and the granny is the product of two trefoils of the same handedness. Both are alternating. Gardner challenges the reader to diagram a square knot with 6 alternate crossings (the minimum).

(A two-strand braid that goes around two “holes”.)

Knots can also be invertible and noninvertible. That is, paint an arrow on a knotted rope to give the curve a direction. If you can manipulate the rope to keep the same structure but the arrow pointing the other way, the knot is invertible. According to Gardner, all knots of 7 or fewer crossings are invertible, as are all but one 8-knot and four 9-knots. Hale F. Trotter released a paper in Topology, 1963 titled “Non-invertible Knots Exist”. Trotter discovered an infinite family of pretzel knots that don’t invert – pretzel knots can be drawn on the surface of a two-hole torus without any crossings. An example is given above.

The figure here is of the simplest noninvertible knot, an amphicheiral 8-knot, proved by Akio Kawauchi in 1979. (Amphicheiral means that it can be manipulated into its mirror image.) It is the only noninvertible 8-knot.

The addendum talks about all the new advances in knot theory since his article originally ran in 1983. One of the big discoveries was that certain knot concepts (specifically the Jones polynomial) could be understood in terms of statistical mechanics and quantum theory. For more information, check out Journal of Knot Theory and Its Ramifications.

Finally, the puzzle:
Treat the above knot as one piece of rope with no loose ends. Move the ring from the bottom knot to the top one without untying the rope.


Programming in Prolog comments

All rights belong to their owners. Images used here for review purposes only.)

Programming in Prolog, by William Clocksin and Christopher Mellish.
Back in the mid-80’s, I tried making it as an SF writer. I wrote 2.5 novels and a handful of short stories, but only one book sold, and I moved on to other things. But at that time. I wanted to do a hard SF story involving AI research. I interviewed a couple computer science professors at the University of Minnesota to find out what the state of the art was at the time, and what languages they used in their work. I was pretty disappointed to learn that they were strictly theorists, and if they wrote any code at all, it would be tiny snippets just to check some theoretical point they were writing about in a paper. So I tried to do the research on my own, from books on Lisp and Prolog, but there was very little on the market then, and I didn’t have access to a computer that had either interpreter installed. Fast-forward to 2017. I asked for a book on Prolog for my birthday, and I was happy to get Programming in Prolog in with my other presents.

Ok, so how to start? First, what is Prolog?, for anyone unfamiliar with it… Prolog (PROgramming in LOGic) is a facts and rules-based system that is completely unlike languages like C, C++, Java or Visual Basic. You don’t have a flow structure as you normally do, with if-then, do-while or for-loop control structures. Instead, you specify “facts” and then use rules to answer questions about those facts. Variables start with an upper case letter, facts and rules start with lower case letters; otherwise, names can be a mix of upper and lower case letters, the digits 0-9, and the underscore character. You create the names of the facts and rules as you use them. You don’t need single quotes unless a fact is to start with an upper case letter, or you want to use other characters in the string. And, all rules and facts end with a period (‘.’).


male_name(‘John Jr.’).
female_name(‘mary sue’).

Above, I have two of what’s called predicates – male_name, and female_name. (Predicates are the leading part of the line.) And, 5 facts stating that “john,” “John,” and “John Jr.” are names for boys and men; and that “mary” and “mary sue” are names for girls and women. I could add more facts to include more names.

A rule is a predicate that is followed by “:-“, and whatever statements I need for whatever I’m trying to do. Predicates separated by a comma are to be read as predicate1 AND predicate2, etc. Semicolons represent OR statements.

is_male(X) :- male_name(X).
is_female(X) :- female_name(X).

The two above rules are just simple examples. If I type,

?- is_male(john).
?- is_female(john).

The first question will return “yes”, and the second will return “no”. Combining the above 5 facts and 2 rules, I have a database. I can ask questions of the database, or I can add a lot more sophisticated rules to do things that are more useful, from parsing English sentences, differentiating math equations, or analyzing customer spending habits.

If I modified the above facts,

man(john, 43).
man(dave, 35).
man(jim, 25).
woman(mary, 28).
woman(sue, 31).

age(X, Y) :- man(X, Y).
age(X, Y) :- woman(X, Y).

And typed in the question,

age(john, X).
age(mary, X).

The first question would tell Prolog to check the database for a fact regarding “john,” and if it’s found, to print out the value of his age as “X = 43.” There would only be one match this time, and the program would wait for the user to tell it to check for the next match. The second question would fail in checking the men’s listings for “mary,” but would return “X = 28” for the matching fact in the “woman’s” section. Again, the program would wait for the user to decide if they want to go to the next match, and then end because there is only the one match. I could combine the two rules with “;” (OR)…

age(X, Y) :- man(X, Y) ; woman(X, Y).

Actually, the way Prolog works, it’s looking for a rule that can be satisfied by one or more of the facts in the database. If it is satisfied (i.e. – it finds man(john, Y)), then it displays the current findings, and pauses for instructions to look again. If the rule isn’t satisfied, then Prolog looks at the next fact, or the next part of the rule following the current comma or semicolon. If X = “mary”, then the first rule never gets satisfied for man(mary, Y). Prolog then goes to the next rule and tries again. It is satisfied with woman(mary, Y) (where “Y” receives the value of 28), and that rule passes.

The hardest part about learning Prolog, at the beginning, is having to slog through all the non-intuitive terminology. That is, “john” is an “atom”. “man,” “woman” and “age” are predicates. Predicates plus whatever is to the right are clauses. Feh.

This brings me to the book. Programming in Prolog first came out in 1981, and the 5th edition was published in 2003, with updates and corrections. And even after all this time, the example programs still have typos that prevent them from running as-is.  To an extent, the typos are relatively innocuous, such as having missing periods at the end of lines (which is ironic, since the book has a section on debugging and the authors specifically warn against dropping periods). Having the typos does force the reader to do an extra level of debugging, especially if they’re not really good typists. In most cases, but there are sections of code that look right but still don’t don’t do what the book says they’re supposed to. The authors have an expectation that readers are taking computer science classes and can ask their teachers or TAs for help with code in the book that is just wrong, which obviously is not always the case. An example here is for a replacement the authors offer for “listing.” (which prints out the user’s current database).

list1(X) :-
clause(X, Y),
output_clause(X, Y),

output_clause(X, true) :- !, write(X). (1)
output_clause(X, Y) :- write((X :- Y)). (2)

In the above code, the predicate “clause” searches the user’s database space for any predicate that matches “X” and returns the rest of the clause to “Y”. output_clause is then used to print out the full clause data. output_clause (1) is satisfied if the body of the clause is just the word “true”. output_clause (2) is satisfied otherwise, and the text appears on the screen in the form “list1(X) :- list1(X) :- clause(X, Y), output_clause(X, Y), write(‘.’), nl, fail.” (nl is new line.)

if you entered the question,
?- list1(list1).

In theory. In reality, “clause” doesn’t work on predicates by default, and I have yet to find any way that it DOES work. Meaning that the above code for list1() doesn’t do anything for me, and I couldn’t find anyone on the net willing to help.

The book starts out with an overview of Prolog, gives some example applications, and slowly adds new concepts such as list handling, structures, sentence parsing, and searching “maps” to find the shortest distances between two points. Then, when you get about 2/3’s of the way through, things get a lot more theoretical and “blue sky,” to the point where the only one who’d be interested in it is a student in a computer science course. I did read all 300 pages of the book, but by the end I was just shrugging, “who cares.” Another point is that although the authors state that Prolog is poorly suited to number manipulation, and works better with parsing lists and sentences, an inordinate number of the examples are for number manipulation (finding Pythagorean triples, and finding primes).

The authors make a big point about how most Prolog implementations aren’t strictly standard compliant, and how the standards don’t specify how interpreters are supposed to behave in certain situations. So, there’s no guarantee for how any given program will run under any given implementation of Prolog. This made it difficult to pick a Prolog package to download and install. I finally settled on GNU Prolog, because it’s free, and it’s close to the standard. Unfortunately, the online documentation is very terse, and the examples that come with the package aren’t commented well, if at all. (And there’s no example code showing how to use “clause”.) On the other hand, GNU-Prolog is used in a number of university programming courses, and they do have some online examples of the homework that are better than the examples in the Clocksin book. So, trying to learn on my own was not a completely hopeless cause.

At first, on opening this book, I was pretty excited that Prolog is used for symbolic logic, as described in the Raymond Smullyan book on Godel’s incompleteness theorem, but Clocksin and Mellish don’t talk about this application at all. I assumed that I could find example code on the net somewhere, but I haven’t been successful so far. At the moment, I’m not sure how to proceed from here. I’d like to take on some kind of larger Prolog project, but there are other things I want to do with my time, too. I did go through all of the examples with the GNU Prolog install just to see what they do, and I grabbed some of the more interesting code off the university sites. As of right now, though, I’m putting Prolog on the back burner.

Klein Bottle Answer

Answer for the Klein Bottle puzzle:
How to cut the paper Klein bottle to make one long Mobius band: Try cutting along the figure-8-like crease lines, and retape the slot when necessary because in 4-D space, the slot isn’t really there.

Colossal Gardner, ch. 18

We now enter the realm of Topology, starting with Klein Bottles and Other Surfaces. Gardner begins by describing a sheet of paper as being a two-sided surface with a single edge, topologically speaking. Folding up the paper doesn’t change its nature. If the paper is a rubber sheet instead, stretching it into other shapes is irrelevant. He then introduces the chromatic number and the Betti number. The chromatic number is “the maximum number of regions that can be drawn on the surface in such a way that each region has a border in common with every other region. If each region is given a different color, each color will border on every other color.” For the square sheet, the chromatic number is 4. It is also 4 for a tube, a sphere, and all of the other shapes given in chapter 18 of his book. The Betti number, in turn, is “the maximum number of cuts that can be made without dividing the surface into two separate pieces. If the surface has edges, each cut must be a “crosscut” that goes from a point on one edge to anther point on an edge. If the surface is closed (has no edges), each cut must be a “loop cut”: a cut in the form of a simple closed curve.” For our square sheet of paper, the Betti number is 0.

Taking the square sheet and attaching two of its edges together to make a tube, we still have two surfaces, but now we get 2 edges, a chromatic number of 4 and a Betti number of 1 (a crosscut from one edge to the other turns it back into a square, but there’s still only one piece of paper). If you fold the square along the diagonal and join the facing edges (making a triangle pocket) together, there are still two surfaces (inside and outside) but no edges, a chromatic number of 4 and a Betti number of 0 again.

(All rights belong to their owners. Images used here for review purposes only. Folding a paper square to make a mobius surface.)

Folding the square as shown above and joining the touching edges with tape gives you a Mobius surface. If you do it right, you won’t be able to open it out. It will have 1 surface, 1 edge, a Betti number of 1, and a chromatic number of 6. If you just fold the paper in half, tape the edges lengthwise, and then in quarters and tape the “mouths” together, you get a torus (or doughnut), which is two-sided, no-edged, with a chromatic number of 7 and a Betti number of 2.

(Making a paper Klein bottle.)

Gardner next gets into a discussion of the Klein surface, and instructions for simulating one with a square of paper. Start by folding the paper as shown above and tape the long edges together to make a tube. Cut a slot in one face as shown at the solid line and fold the tube at the dotted line, A. Carefully pass the opposite end of the tube through the slit until that end is flush with the top end of the tube, then tape the edges together all the way around the ring. You can now use this model to demonstrate that the Betti number is 2: cutting the bottle in half vertically gives you two mirror-image Mobius bands, or make a different cut and get one long Mobius band (that’s this week’s puzzle).

(Topological invariants of 7 basic surfaces.)

The above chart shows a topology summary. The squares in the first column on the left show how to tape the edges together to make the shapes. The second column shows one way of coloring each shape to get the maximum chromatic number. Gardner suggests coloring the paper identically on both sides as if the ink bled through the paper, because we’re supposed to be thinking of the sheet as having zero thickness.

In the addendum, Gardner gives a shout-out to Acme Klein Bottles.


The Moscow Puzzles

(All rights belong to their owners. Images used here for review purposes only.)

The Moscow Puzzles, by Boris A. Kordemsky, Edited by Martin Gardner (320 pages)
This is one more book I received for my birthday, and is also related to Martin Gardner. Kordemsky (1907-1999) was a Russian high school teacher, and math and science writer. He wrote over 70 books and popular math articles, making him one of the more prolific Russian writers of recreational mathematics. The above book specifically represents a collection of 359 math puzzles, published in 1956. It was eventually translated into English by Dr. Albert Parry, then cleaned up, with units and references converted to feet, inches, dollars, etc., where allowed by the puzzle, by Martin Gardner. My copy states that it was published in 1971 by Charles Scribner’s Sons, but the amazon link says that this book came out June, 2017, from PMA publishing. I’m assuming it’s a reprint, but the copyright information on the flyleaf is confusing. Anyway, many of the puzzles here had also been made popular by Henry Dudeney and Sam Loyd, but Kordemsky put his own twists on them.

Martin states that in editing the puzzles he wanted to maintain their Russian feel as much as possible, and I think he’d succeeded. In fact, I really like the way the set-ups of the individual puzzles work, with references to steam locomotives, dacha, worker’s collectives and lathe workers – there’s a strong sense of someone living in the 1950’s Soviet Union talking about the people around them.

When I was in high school in the 70’s, my math teacher tried to get the class to learn how to solve problems on our own by posting similar problems on a flip chart tablet, and only telling us if our answers were right or not. Some of those problems mimic the ones in the Moscow Problems book, but I was never able to figure them out myself – I just wanted the solutions to be handed to me.

Going through this book now, I’m getting about 1/3 of the problems correct, but I’m not actively sitting down with a sheet of paper and a pencil to solve everyone of them on my own. I’m more interested in the theory behind the puzzles. However, there are two problems in specific that I really like – the impossible dovetail joint, and “a swimmer and a hat.” I’ve seen pictures of the dovetail joint on the net before, and I like seeing it showing up here in the book along with the solution. But, what makes the “swimmer” puzzle fascinating is that it’s a variation on George Gamow’s boat and whiskey bottle puzzle intended to demonstrate the importance of relative frames of reference, although Kordemsky doesn’t tie his version to special relativity.

When I was looking over the customer reviews for The Moscow Puzzles on the page, I was struck by just how shallow the negative comments were. Most of the readers gave the book 5 stars, but there was a small number of people that gave it one star, either because they were math teachers unable to figure out how to steal the problems for use in their own classes, or because some of the puzzles used props (like coins, dominoes, or cardboard cutout figures) that they were too lazy to gather together, or make themselves. And, yes, many of the puzzles use old-fashioned or cultural-specific references (e.g. – steam locomotives, or rebuilding the country after WW II), which would need to be updated or altered to be relatable for modern American children. But still, those complaints are awfully petty. Anyway, if you’re an adult and you like learning, then these puzzles are still fun pastimes. Additionally, yeah, not all puzzles are strictly paper and pencil things. You can treat them as games, with boards and playing pieces, and even play against friends or family members. Or, cut out some of the figures and give them to children to play with. Mathematics does have that branch called “game theory,” after all.

(Back cover.)

Towards the end of the book, I did start skipping over puzzles that I had less interest in, and my accuracy rate plummeted below 1 out of 6 puzzles. Especially for the dominoes, and memorization tricks puzzles. But, things picked back up when I got to the second to the last chapter, with instructions on how to create any sized magic squares. And with the last chapter, which was a hodge-podge of prime numbers, the Fibonacci series, and figurate numbers. With the figurate numbers, which relate to the regular polygons, Kordemsky hints at the canon ball stacking problem that appears in Gardner’s Colossal Mathematics book, without actually giving the problem itself. Really, though, the best part of reading these kinds of books is that they sometimes refer to other, older subjects that require that I look them up on wikipedia, often leading to stuff that I like that I didn’t know existed before. A case in point is a sums-of-the-squares problem Kordemsky mentions that appears on the blackboard of a 1895 painting by Russian Bogdanov-Belsky, titled “A Difficult Problem” (according to Dr. Albert Parry’s translation). The problem, and the painting itself are shown below. I think it’s interesting.

The problem on the blackboard:
(10^2 + 11^2 + 12^2 + 13^2 + 14^2)/365 = ?

(Mental Calculation, In Public School, by Bogdanov-Belsky, 1895. From the wikiart page. )

Answer for the Escher chapter:

What’s going on in the Three Spheres woodcut print?
Each “sphere” is a flat disk. The top one is upright, the middle one is folded in the center, and the bottom one is lying flat on the table.

If you want to know more about Escher’s works, you can either look at the wiki article, or visit the official website.