Tonight, I took the Chinese Wooden Puzzle with
me and showed it at TkkrLab. Jurjen
suggested an extra condition (besides all pieces of the same colour touching
each other) that the pieces of each colour should both touch the bottom and
the top edge. He played with it for some time, and then concluded that it is
probably not possible because some black coloured pieces need to be horizontal
and will use too much space at the bottom and the top edge to leave enough
room for the other pieces. He did arrive at a solution that he considered his best possible result. Then
Annabel arrived, and when she heard of the extra
condition, she could not help giving it a try, and she did find
the following solution:
When I arrived at home, I quickly found another solution, basically by swapping the red and yellow pieces, and
rearrange some of the white pieces. I also started thinking about how to
implement a program that will find all possible solutions. I guess that there
are about ten to a hundred solutions.
I wrote a program to find all the solutions to
the Chinese Wooden Puzzle where pieces of each
colour touch both the bottom and the top edge. The green and purple pieces are
excluded, because they are very limited in the way the can be placed. I have
no idea if the program is correct, but the six 'unique' solutions that it
found, do include the two solutions that were found yesterday. Presuming that the result is correct, my estimate of ten to a
hundred solutions was too high and too low. Too high in the sense that there
are only six 'unique' solutions, where 'unique' is defined not taking into
account mirroring and two pieces of the same colour that could be rearranged
without affecting the visual appearance of the solution. It was too low in the
sense that the program returned 104 non-unique solutions. The six unique
solutions are given below, excluding the green and purple pieces, which could
be placed on both sides in various combinations, resulting in a total of 36
unique solutions for all colours.
I worked on a simpler implementation of the
algorithm to find Chinese Wooden Puzzle
solutions where all colours touch both the bottom and top edge. The reason for
this was to verify the result of two days ago. I also
hoped that the simple algorithm would be faster. That actually did not seem to
be the case. But the program did return the same solutions as the previous one.
I then used it to find all other solutions for 'smaller' Chinese Wooden Puzzles
for all combinations of colours and number of pieces per colour. I combined all
the results in to a single page.
In the past weeks, I worked on perfecting the various programs for generating
Fractal Jigsaw puzzles and combining them
into a single program with seven different
functions. The usage is:
The first two functions gen_ec_hc and gen_ec can be used to
generate an Exact Cover. The function
gen_ec_hc generates a Exact Cover based on a hard coded set of pieces.
With gen_ec one can specify a range for the size of pieces and with
the -con option, if 'empty' connections should be generated, without
which the number of possible solutions is strongly reduced. The command
gen_ec -con -range=2-3 is equivalent to gen_ec_hc. The
option -with_name causes each piece to receive a unique number,
which is required for some other the other functions. The other commands work
on the output of an Exact Cover solver, that lists the names of the selected
rows appended with a vertical bar. (I adapted Exact Coverprogram such that
it can be used in a pipe command.) The normalize function normalizes
the solutions and the -minimal option filters out all double solutions
with respect to the six symmetries of the board. The used_pieces
function can be used to filter the solutions on the pieces used. With the
option -max=n and -min=n it is possible to
limit the number of pieces in the solution, where the specified values are
included. Often it happens that a piece is included more than once. To limit
the number of times a piece is repeated, the option -max_occ=n
can be used, and to limited the total number of supplemental occurances, the
option -sup_occ=n can be used. This function returns on each
line a list of numbers of the pieces separated by commas, and sorted from low
to high. To find combinations of pieces that have a low number of solutions,
the resulted can be piped into sort | uniq -c | sort.
The filter command, can be used to return the rows that match a list
of numbers of pieces as produced by the used_pieces command. The
function print can be used to print a solution for each line of the
input. An example of the output generated by this function is:
The function svg produces an SVG file on the output. The options can be used to modify the appearance.
The option -depth=n, with values 1 to and including 4,
specifies the recursion depth of the fractal. The default value is 2. The
options -border_rad=n and -border_d=n can be
used to change the border around the puzzle. The first option specifies the
relative radius of the circle parts of the border. The default value is 1.5.
The second option specifies the size of the triangle from which the radius is
offset. The default value is 1.7. Note that the sum of the values determines
the distance of the border to the center of the puzzle. The option
-colour=c can be used to specify a colour (should be valid SVG
stroke colour). The default value is red. The option
-stroke_width=n can be used to specify the stroke width. The
default value is 2. The option -side_length=n can be used to
specify the length of the triangles of the pieces. The default value is 100.
Note that most programs that can import SVG files (such as Inkscape) can change the stroke with and stroke colour easily in
preperation of sending the design to a laser cutter. The SVG file matching the above print output is this. There is still room for improvement of the program with respect to
possible options and some details.
I received the two volumes book Documenta 7, edited by Saskia Bos,
written in German and English, published by D + V Paul Dierichs in 1982,
ISBN:9783920453026, from 'De Terechte Kronkel', which I bought last Wednesday
for € 10.00. The Documenta 7 exhibition also included some works by Peter Struycken. There are a lot of errors in the reproductions of his
works. Many of the reproductions are mirrored, rotated and/or labelled
incorrectly.
At 17:40, I bought the book Austrian Heartbeats - A Contemporary Music Travel Guide to Austria,
edited by Franz Hergovich and Robert Rotifer, written in English, published
by Verlag für Moderne Kunst, Nürnberg in 2014, translated by
Robert Rotifer from Austrian Heartbeats - Reiseführer für
aktuelle Musik aus Österreich written in German,
ISBN:9783869844930,
from thrift store Het Goed for
€ 1.50. This is a typical example of a little book that I cannot
resist buying, although I know I will never read it completely, simply because
it an odd type of book.
Arrived at Wintergo. I did bring the Fractal
Jigsaw puzzle that Annabel made for me
last Friday with a lasercutter according to the selected design. It appears
that due to the fine cutting line, the pieces easily get stuck when the are
not moved exactly parallel to each other. Getting the pieces out of the
puzzle is almost harder than to put them in. Probably have to try again with
a simpler design or by making the cutting line broader, for example by using
two cutting lines and remove the thin material in between.
In the afternoon, I played a game of Go against Henk and
I won with a slight margin. After the state as shown above, we continued
playing to see if the 'dead' group in the bottom right corner could still be
used to kill the white group around it. This appeared not to be the case.
This morning, I played my second game against Rob and
I lost with 72½ points with white. About half way the game, I knew that
my position was lost, nevertheless, I did not resign, but continued playing
till the end. In the last ten moves, I was still able to gain about ten
points, due to an error of my opponent. We played for almost two hours, which
I found quite an achievement, to stay concentrated till the end, after a night
sleeping on a strange bed.
This morning, I played my final game of the tournament against Francien. In
the middle of the game, it looked like I was winning, but I guess I became
a little over confident and played to quickly without thinking much. I did not
notice that six of my stones could be captured, and that by capturing those
stones some dead stones of Francien would become alive and one of my groups
could die. When Francien noticed this, she captured the stones, and things
turned to my disadvantage. I still tried to attack a weak group of Francien,
but again, I played too quickly and did not play a required defending stone,
and I decided to resign.
This months interesting links