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

           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 "R" or "r" keys to read a saved puzzle.

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

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

           Press "E" or "e" 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 #: <direction> <control> <face> <position>
           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 cannot 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-2017, David A. Bagley

## BUG REPORTS AND PROGRAM UPDATES

           Send bugs (or their reports, or fixes) to the author:
                  David A. Bagley, <bagleyd AT verizon.net>

           The latest version is currently at:
                  http://www.sillycycle.com/puzzles.html
                  http://ibiblio.org/pub/Linux/games/strategy

    V8.0.6                            23 Mar 2017                     XPYRAMINX(6)