NAME

     xpyraminx - Pyramid X widget


SYNOPSIS

     /usr/games/xpyraminx   [-geometry   [{width}][x{height}][{+-
     }{xoff}[{+-}{yoff}]]] [-display [{host}]:[{vs}]] [-[no]mono]
     [-[no]{reverse|rv}]    [-{foreground|fg}     {color}]     [-
     {background|bg}    {color}]    [-{border|bd}   {color}]   [-
     face{0|1|2|3} {color}]  [-{size  {int}  |  sticky}]  [-{mode
     {int}  | both}] [-[no]orient] [-[no]practice] [-delay msecs]
     [-{font|fn} {fontname}] [-username {string}]


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 comibinations.

     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  different  combina-
     tions).

     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 Mef-
     fert  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 flexabil-
     ity.

     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 turn-
     ing 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 "prac-
     tice").  This is good for learning moves and experimenting.

     Click "mouse-right", or press "R" or "r" keys  to  randomize
     (this must be done first to set a new record).

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

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

     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  "facets",  if  at  all  (i.e.   those
     "facets" 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 disabled 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 "S" or "s" keys to start auto-solver.  Only  works  on
     1x1x1, 2x2x2, and 3x3x3 pyrmaminxs in Period 3 mode.

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

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

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

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

     Press "Esc" key to hide program.

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

     Use the key pad, "R" keys, or arrow  keys  to  move  without
     mouse clicks.
     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,  otherwise  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<number  of  "facets" per edge>} @
          (<Number   of   moves>/{<Record   number   of    moves>
          <username>|"NEVER noaccess"|"practice"}) - <Comment>
     If there is no record of the  current  puzzle,  it  displays
     "NEVER noaccess".


OPTIONS

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

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

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

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

     -{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").

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

     -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.

     -size <int>
             This option allows  you  to  change  the  number  of
             facets 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").

     -delay msecs
             This option specifies the number of milliseconds  it
             takes  to  move a tile or a group of tiles one space
             (resource name "delay").

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

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


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

     The format is not standard.  The reason  for  this  is  that
     this  is  simple  to produce and the standard notation is no
     good for variable number of "facets" 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
          "facets" to be oriented>
          sticky: 0-1 <0 false, 1 true; if 1 then  some  "facets"
          move together>
          practice: 0-1 <0 false, 1 true>
          moves: 0-MAXINT <total number of moves>

          startingPosition: <2 dimensional array of face  "facet"
          position, each face has size * size "facets", if orient
          mode then orientation 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  trian-
     gle 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 counter-
     clockwise.
     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 "facets"
     (usually 0=B, 1=R, 2=Y, 3=G).  Bring up xpyraminx,  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,  Ban-
     tam 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,  pyram-
     ids, dodecahedrons and God knows what else, Scientific Amer-
     ican, 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), xrubik(6), xskewb(6),  xdino(6),  xoct(6),  xmball(6),
     xmlink(6),   xpanex(6),   xcubes(6),  xtriangles(6),  xhexa-
     gons(6), xabacus(6)


COPYRIGHTS

     (Reg.) Copyright 1994-2004, David Albert Bagley


BUG REPORTS AND PROGRAM UPDATES

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

     The latest version is currently at:
          ftp://ftp.tux.org/pub/tux/bagleyd/xpuzzles
          ftp://ibiblio.org/pub/Linux/games/strategy