In this appendix all states and transformations of the solution process have been collected. For each state, a computer processable file was generated (about its format see the section at the bottom), which is accessible by clicking on the respective state number (all state files together in one compressed ZIP can be downloaded here). For each transformation, the link defined on it references the step in the solution process, where this operation was performed and described in detail.

State #1 .TXT (initial layout: 30 squares, 1 sun, 1 star):

State #1

Transformation #1 (duplicate layer #1 and rotate it 90° clockwise):

Transformation #1

State #2 .TXT (58 squares, 2 suns, 2 stars):

State #2

Transformation #2 (duplicate layer #2 and rotate it 90° clockwise):

Transformation #2

State #3 .TXT (86 squares, 3 suns, 3 stars):

State #3

Transformation #3 (duplicate layer #3 and rotate it 90° clockwise):

Transformation #3

State #4 .TXT (112 squares, 4 suns, 4 stars):

State #4

Transformation #4 (duplicate whole pattern and reflect it to the Y axis):

Transformation #4

State #5 .TXT (control phase: 192 squares, 8 suns, 8 stars):

State #5

Transformation #5 (move corner items toward center by √8 units (2 in both directions)):

Transformation #5

State #6 .TXT (192 squares, 8 suns, 8 stars):

State #6

Transformation #6 (move middle items toward center by 5 units):

Transformation #6

State #7 .TXT (192 squares, 8 suns, 8 stars):

State #7

Transformation #7 (remove corner items):

Transformation #7

State #8 .TXT (128 squares, 8 suns, 8 stars):

State #8

Transformation #8 (fold items and "fringes" to their inner edges):

Transformation #8

State #9 .TXT (80 squares, 4 suns, 8 stars):

State #9

Transformation #9 (fold top items):

Transformation #9

State #10 .TXT (72 squares, 4 suns, 8 stars):

State #10

Transformation #10 (fold right items):

Transformation #10

State #11 .TXT (61 squares, 4 suns, 8 stars):

State #11

Transformation #11 (fold bottom items):

Transformation #11

State #12 .TXT (49 squares, 4 suns, 8 stars):

State #12

Transformation #12 (fold left items):

Transformation #12

State #13 .TXT (37 squares, 4 suns, 8 stars):

State #13

Transformation #13 (remove the inner and the redundant elements):

Transformation #13

State #14 .TXT (final figure: 7 squares, 1 sun, 2 stars):

State #14

State file format

The Palenque state file (PQS) describes a state in the transformational process. It is a 7-bit ASCII text (no special characters are used), where the newline is always represented exclusively by the line feed (0x0A) character (Unix mode).

The first line of the file contains the "PQS" string, a space (0x20) separator, and the zero padded, two characters long state number (e.g. PQS 03).

After an empty line, the coordinate system and its content is described in 51 rows and 51 columns, where each cell is represented by one of the following characters:

Character ASCII code Meaning
. 0x2E Empty cell
x 0x78 Origin (only if empty)
Q 0x51 A square cell
S 0x53 Center cell of a sun symbol
s 0x73 Non-center cell of a sun symbol
R 0x52 Center cell of a star symbol
r 0x72 Non-center cell of a star symbol

After an empty line, the item statistics follow in 3 lines for the Q, S and R items consecutively, for each line with the format:

  1. one character item type identifier (Q, S or R);
  2. space separator;
  3. the number of the items of this type in three characters, with zero padding (e.g. 032);
  4. for each item (from top to down and from left to right) its coordinates in 8 characters, with the following format:
    1. space separator;
    2. X coordinate in 3 characters: sign (+/-) and zero padded value in two characters (0 is represented as +00);
    3. comma separator;
    4. Y coordinate in the same format as X.

Note: The state files were generated with the help of the StateAnalyzer class of the PalenqueAnimation application. In order to create the files, at first the ENABLED field of the class must be set to true, and then each frame (or at least one per state) must be rendered by the FrameRenderer class. (For this purpose, running once the test1() method in the FrameRendererTest class could be the easiest way.)