# xpyraminx

## SYNOPSIS

           /usr/games/xpyraminx                                         [-geometry
           [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]]                 [-display
           [{host}]:[{vs}]]   [-[no]mono]   [-[no]{reverse|rv}]  [-{foreground|fg}
           {color}] [-{background|bg} {color}]  [-face{0|1|2|3}  {color}]  [-{bor-
           der|bd}  {color}]  [-delay  msecs] [-[no]sound] [-moveSound {filename}]
           [-{font|fn} {fontname}] [-{size {int} | sticky}] [-{mode {int} | both}]
           [-[no]orient]  [-[no]practice]  [-userName {string}] [-scoreFile {file-
           name}] [-scores] [-version]

## DESCRIPTION

           The original puzzle has 9 triangles per face (size = 3) and has  period
           3  turning (i.e. the face or points turn in 120 degree intervals).  The
           puzzle was designed by Uwe Meffert and called the Pyraminx.   This  has
           2^5*3^8*6!/2 or 75,582,720 different combinations.

           Another  puzzle  Senior  Pyraminx  3x3x3  exists  only on paper, it has
           period 2 turning (i.e.  edges turn with 180 degree intervals)  but  the
           corners  would fall off unless it had some tricky mechanism.  (This may
           be the same as the Master Pyraminx which has  446,965,972,992,000  dif-
           ferent combinations).

           Another  puzzle (which was not widely distributed), the Junior Pyraminx
           (and similarly the Junior Pyraminx Star, a  octahedron  formed  by  two
           tetrahedra, this has 7!*3^6 or 3,674,160 different combinations), has 4
           triangles (size = 2) per face.  This puzzle has been recently  reissued
           by  Meffert  as  Pyramorphix  (http://www.mefferts-puzzles.com). At the
           time I designed this computer puzzle thought that it had only period  2
           turning (i.e the edges rotate).  It turns out the puzzle has a period 4
           turning (edges turn with 90 degree intervals) which makes it  analogous
           to  the  2x2x2 Rubik's cube.  This puzzle makes various non-tetrahedral
           shapes.  The puzzle contained here has no period 4 turning flexability.

           One  is  able to simulate Halpern's Tetrahedron or Pyraminx Tetrahedron
           (period 3 turning and sticky mode).   Also one is able to simulate  one
           with variant turning (period 2 turning and sticky mode).

## FEATURES

           Press "mouse-left" button to move a piece.  Release "mouse-left" button
           on a piece on the same face and in the same row (but  not  an  adjacent
           piece  or  the  move  is ambiguous).  The pieces will then turn towards
           where the mouse button was released.

           Click "mouse-center", or press "P" or "p" keys to toggle  the  practice
           mode (in practice mode the record should say "practice").  This is good
           for learning moves and experimenting.

           Click "mouse-right", or press "Z" or "z" keys, to randomize the  puzzle
           (this must be done first to set a new record).

           Press "G" or "g" keys to get a saved puzzle.

           Press "W" or "w" keys to save (write) a puzzle.

           Press "U" or "u" keys to undo a move.

           Press "R" or "r" keys to redo a move.

           Press "C" or "c" keys to clear the puzzle.

           Press  "S"  or  "s"  keys  to  start auto-solver.  Only works on 1x1x1,
           2x2x2, and 3x3x3 facets in Period 3 mode.

           Press "O" or "o" keys to toggle the orient mode.  One has to orient the
           faces  in  orient  mode,  besides  getting all the faces to be the same
           color.  To do this one has to get the lines to be oriented in the  same
           direction, this only matters with center pieces, if at all (i.e.  those
           pieces not on a corner or edge).  This does add complexity so there are
           2 sets of records.

           Press  "2", "3", "B", or "b" keys (not the keypad 2, 3) to change modes
           to Period 2, Period 3, or Both.

           Press "Y" or "y" keys to toggle sticky mode (increase/decrease is  dis-
           abled here if sticky mode is on).
           "Sticky"  and "Period 2" turning allows only the edges to turn, and the
           2 center rows turn together. It is as if the middle cut  of  the  three
           cuts did not exist.
           "Sticky" and "Period 3" turning allows only the faces to turn, it is as
           if the middle cut of the three cuts did not exist.
           Beware, the "Sticky" mode is a hack and much could be done  to  improve
           its look.

           Press "I" or "i" keys to increase the number of pieces.

           Press "D" or "d" keys to decrease the number of pieces.

           Press ">" or "." keys to speed up the movement of pieces.

           Press "<" or "," keys to slow down the movement of pieces.

           Press "@" key to toggle the sound.

           Press "Esc" key to hide program.

           Press "Q", "q", or "CTRL-C" keys to kill program.

           Use the key pad or arrow keys to move without the mouse.
           Key pad is defined for Pyraminx as:
             /     Counterclockwise

             8 9   Up, Upper Right
             ^
           4<5>6   Left, Clockwise, Right
             v
           1 2     Lower Left, Down

           Use  the shift keys to access "Period 3" turns from "Both" mode, other-
           wise it assumes "Period 2" turning.  Faces and points turn  in  "Period
           3" and edges (2 points) turn in "Period 2".

           Use the control key and the left mouse button, keypad, or arrow keys to
           move the whole tetrahedron.  This is not recorded as a turn.

           The title is in the following format (non-motif version):
                  xpyraminx.{2|3|both<turning modes>}:  {1|2|3|4|5|6|7|sticky<num-
                  ber of pieces per edge>} @ (<Number of moves>/{<Record number of
                  moves> <user name>|"NEVER noaccess"|"practice"}) - <Comment>
           If there is no record of the current puzzle, it displays  "NEVER  noac-
           cess".

## OPTIONS

           -geometry {+|-}X{+|-}Y
                   This  option  sets  the initial position of the pyraminx window
                   (resource name "geometry").

           -display host:dpy
                   This option specifies the X server to contact.

           -[no]mono
                   This option allows you to display  the  pyraminx  window  on  a
                   color screen as if it were monochrome (resource name "mono").

           -[no]{reverse|rv}
                   This  option  allows  you to see the pyraminx window in reverse
                   video (resource name "reverseVideo").

           -{foreground|fg} color
                   This option specifies the foreground  of  the  pyraminx  window
                   (resource name "foreground").

           -{background|bg} color
                   This  option  specifies  the  background of the pyraminx window
                   (resource name "background").

           -face{0|1|2|3} <color>
                   This option allows you to change the color of a face  (resource
                   name  "faceColorN").  In mono-mode, color is represented as the
                   first letter of the color name. The faces are  ordered  top  to
                   bottom  and  left  to  right.  If you has two colors that begin
                   with the same letter you should have one in uppercase  and  one
                   in  lowercase  to distinguish them in mono-mode. You can change
                   the colors of the faces to make a  stupid  pyraminx  (i.e.  all
                   White  or  in  mono-mode  all "W").  Unfortunately, it will not
                   normally say its solved when its  randomized.   This  would  be
                   cheating.

           -{border|bd} color
                   This  option  specifies  the  border color of the pieces in the
                   pyraminx window (resource name "borderColor").

           -delay msecs
                   This option specifies the number of milliseconds  it  takes  to
                   move pieces (1-50) (resource name "delay").

           -[no]sound
                   This  option specifies if sliding pieces should make a sound or
                   not (resource name "sound").

           -moveSound filename
                   This option specifies the file  for  the  move  sound  for  the
                   twisting of the puzzle (resource name "moveSound").

           -{font|fn} ontname
                   This option specifies the font that will be used (resource name
                   "font").

           -size <int>
                   This option allows you to change the number of pieces on a edge
                   (resource name "size").

           -sticky This  option  allows  you to set the sticky mode (resource name
                   "sticky").

           -mode <int>
                   This option allows you to set the turning mode  (resource  name
                   "mode").

           -both   This option allows you to set the turning mode to both period 2
                   and period 3 (resource name "mode" set at 4).

           -[no]orient
                   This option allows you to access the orient mode (resource name
                   "orient").

           -[no]practice
                   This  option  allows  you to access the practice mode (resource
                   name "practice").

           -userName string
                   This option specifies the user name for  any  records  made  or
                   else it will get your login name (resource name "userName").

           -scoreFile filename
                   Specify  an alternative score file (resource name "scoreFile").

           -scores This option lists all the recorded scores and then exits.

           -version
                   This option tells you what version of xpyraminx you have.

## RECORDS

           You must randomize the puzzle before a  record  is  set,  otherwise  an
           assumption  of  cheating  is  made  if  it  is solved after a get or an
           auto-solve.

## SAVE FORMAT

           Here is the format for the xpyraminx configuration, starting  position,
           and  the movement of its pieces.  The format is not standard.  The rea-
           son for this is that this is simple to produce and the  standard  nota-
           tion  is  not easily scalable for variable number of pieces and turning
           modes.

           Pyraminx with default colors, not randomized:
           0     B     Blue
             1     R   Red
           2     Y     Yellow
             3     G   Green

                  size: 1-7 <number of triangles in the same  orientation  as  the
                  face per row>
                  mode: 2-4 <period 2 turning, period 3 turning, or both (4)>
                  orient:  0-1  <0  false, 1 true; if 1 then lines on pieces to be
                  oriented>
                  sticky: 0-1 <0 false,  1  true;  if  1  then  some  pieces  move
                  together>
                  practice: 0-1 <0 false, 1 true>
                  moves: 0-MAXINT <total number of moves>

                  startingPosition:  <2  dimensional array of face piece position,
                  each face has size * size pieces, if orient mode  then  orienta-
                  tion number follows face number: 0 up, 1 upper right, 2 right, 3
                  down, 4 lower left, and 5 left>

           This is then followed by the moves, starting from 1.
                  move #: <face> <position> <direction> <control>
           Each turn is with respect to a face and position.
           Position is 0 to size * size - 1.  Position 0 is the triangle  furthest
           from the center, increasing clockwise.
           Direction  is represented 0 up, 1 upper right, 2 right, 3 down, 4 lower
           left, 5 left, 9 clockwise, and 15 counterclockwise.
           Control is represented as 0 or 1, 1 if the whole tetrahedron  is  moved
           at  once  (here  position  does  not  matter), 0 if not.  The xpyraminx
           record keeper does not count a control move as a move, but here we  do.

           If  you have a Pyraminx you can not solve (2x2x2 or 3x3x3), enter it in
           pyraminx.log file.  Have size = 2 or 3, mode = 3, orient = 0,  practice
           =  0,  randomized  = 1, and moves = 0 and the number representation for
           the color of the pieces (usually 0=B, 1=R, 2=Y, 3=G).  Bring up xpyram-
           inx,  hit  'g'  so it will get your configuration and then 's' to solve
           your pyraminx and then 'w' to write out the steps.  Then  examine  your
           pyraminx.log file.

## REFERENCES

           James  G  Nourse,  The Simple Solutions to Cubic Puzzles, Bantam Books,
           New York, November 1981, pp 8-15.

           Mastering the Magic Pyramid by Tom  Werneck,  Evans  Brothers  Limited,
           London, 1981. pp 109-111.

           Douglas  R. Hofstadter, Beyond Rubik's Cube: spheres, pyramids, dodeca-
           hedrons and God knows what else, Scientific  American,  July  1982,  pp
           16-31.

           John Ewing & Czes Kosniowski, Puzzle it Out: Cubes, Groups and Puzzles,
           Cambridge University Press, New York, 1982, pp 60-61.

           Magic Cubes 1996 Catalog of Dr. Christoph Bandelow.

## SEE ALSO

           X(1), xcubes(6), xtriangles(6),  xhexagons(6),  xmlink(6),  xbarrel(6),
           xpanex(6),  xmball(6),  xoct(6),  xrubik(6), xskewb(6), xdino(6), xaba-
           cus(6)

## COPYRIGHTS

           (R) Copyright 1994-2010, David A. Bagley

## BUG REPORTS AND PROGRAM UPDATES

           Send bugs (or their reports, or fixes) to the author:
                  David A. Bagley, <bagleyd@tux.org>

           The latest version is currently at:
                  http://www.tux.org/~bagleyd/puzzles.html
                  ftp://ibiblio.org/pub/Linux/games/strategy

    V7.6                              21 Jan 2010                     XPYRAMINX(6)