NAME

     xrubik - Magic cube X widgets


SYNOPSIS

     /usr/games/xrubik    [-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|4|5}   {color}]   [-size{x|y|z}    {int}]    [-
     [no]orient]   [-[no]practice]   [-delay  msecs]  [-{font|fn}
     {fontname}] [-userName {string}] [-scoreFile {filename}]  [-
     scores] [-version]


DESCRIPTION

     The original puzzle has 9 squares per face (size = 3).   The
     puzzle  was  designed  by  Erno Rubik and called the Rubik's
     Cube.  This has 8!*12!*3^8*2^12/12 or 4.3 * 10^19  different
     combinations.

     The Pocket Cube has 4 squares  per  face  (size  =  2)  also
     designed  by  Erno Rubik.  This has 7!*3^6 or 3,674,160 dif-
     ferent combinations.

     Rubik's Revenge has 16 squares per  face  (size  =  4)  also
     designed  by  Erno Rubik.  This has 7!*3^6*24!*24!/(4!)^6 or
     7.4 * 10^46 different combinations.

     5x5x5 Cube.   This  has  8!*12!*3^7*2^10*(24!)^3/(4!)^12  or
     2.83 * 10^74 different combinations.

     There is also the Magic Domino 3x3x2 cube which has (8!)^2/4
     or 406,425,600 combinations.

     A physical 6x6x6 cube is possible but to my knowledge no one
     has been too successful in building one.  7x7x7 is also pos-
     sible, but here one must make the center most cubes  smaller
     than  the outside cubes, so the corners do not fall off when
     turned.


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.  The pieces will then turn towards where the mouse but-
     ton 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
     the puzzle (this must be done first to set a new record).

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

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

     Press "x" key to increase the number of "cubies" along the x
     axis.

     Press "X" key to decrease the number of "cubies" along the x
     axis.

     Press "y" key to increase the number of "cubies" along the y
     axis.

     Press "Y" key to decrease the number of "cubies" along the y
     axis.

     Press "z" key to increase the number of "cubies" along the z
     axis.

     Press "Z" key to decrease the number of "cubies" along the z
     axis.

     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  "cubies",  if  at  all  (i.e.   those
     "cubies" not on a corner or edge).  This does add complexity
     so there are 2 sets of records.

     Press "S" or "s" keys to start auto-solver.  Only  works  on
     1x1x1,  2x2x2,  and  3x3x3  cubes  (3x3x3 cube in non-orient
     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 the Rubik2d as:
       /     Counterclockwise

       8     Up
       ^
     4<5>6   Left, Clockwise, Right
       v
       2     Down

     Key pad for Rubik3d, use must use your intuition (is this  a
     cop  out  or  what?).   The  key  pad is defined differently
     depending on which side of the cube your mouse  is  pointing
     at.   One  thing that stays the same is "5" is Clockwise and
     "/" is Counterclockwise.

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

     The title is in the following format (non-motif version):
          xrubik{2|3}d<dimension>: {1|2|3|4|5|6<cubes per edge on
          x-axis>x{1|2|3|4|5|6<cubes     per     edge    on    y-
          axis>x{1|2|3|4|5|6<cubes  per  edge   on   z-axis>}   @
          (<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 noaccess".


OPTIONS

     -geometry {+|-}X{+|-}Y
             This option sets the initial position of  the  rubik
             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  rubik  window  in
             reverse video (resource name "reverse").

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

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

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

     -face{0|1|2|3|4|5} <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.
             On  the  2-D  version,  the faces are ordered top to
             bottom and left to right on the  "t"  configuration.
             The sideways "t" or "+-" configuration is physically
             consistent with the former, so it is ordered "0,  1,
             2,  3, 5, 4".  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  cube  (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.

     -sizex <int>
             This option allows  you  to  change  the  number  of
             "cubies"  on  a  edge  along  x-axis  (resource name
             "sizex").

     -sizey <int>
             This option allows  you  to  change  the  number  of
             "cubies"  on  a  edge  along  y-axis  (resource name
             "sizey").

     -sizez <int>
             This option allows  you  to  change  the  number  of
             "cubies"  on  a  edge  along  z-axis  (resource name
             "sizez").

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

     -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  xrubik  you
             have.


RECORDS

     You must randomize the puzzle before a record is set, other-
     wise 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 is that this is sim-
     ple  to  produce  and  the  standard notation is no good for
     variable number of "cubies".

     Rubik2d with default colors, not randomized (front  is  face
     2) :
       0       R     Red
     1 2 3   Y W G   Yellow, White, Green
       4       O     Orange
       5       B     Blue

          sizex: 1-6 <the number of cubes per row along x-axis>
          sizey: 1-6 <the number of cubes per row along y-axis>
          sizez: 1-6 <the number of cubes per row along z-axis>
          orient: 0-1 <0 false,  1  true;  if  1  then  lines  on
          "cubies" to be oriented>
          practice: 0-1 <0 false, 1 true>
          moves: 0-MAXINT <total number of moves>

          startingPosition: <2  dimensional  array  of  face  and
          cubie  position, each face has size * size "cubies", if
          orient  mode  then  orientation  number  follows   face
          number: 0 up, 1 right, 2 down, and 3 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  in  the
     upper left.
     Direction is represented as 0 up, 1 right, 2 down, 3 left, 5
     clockwise, and 7 counterclockwise.
     Control is represented as 0 or 1, 1 if  the  whole  cube  is
     moved  at  once  (here  position does not matter), 0 if not.
     The xrubik record keeper does not count a control move as  a
     move, but here we do.
     If you have a Rubik's Cube  you  can  not  solve  (2x2x2  or
     3x3x3)  enter  it  in  rubik.log  file.  Have size = 2 or 3,
     orient = 0, practice = 0, randomized = 1, and moves = 0  and
     the number representation for the color of the "cubie" faces
     (usually 0=R, 1=Y, 2=W, 3=G, 4=O, 5=B).   Bring  up  xrubik,
     hit  'g'  so  it will get your configuration and then 's' to
     solve your cube and then 'w' to write out the  steps.   Then
     examine your rubik.log file.


REFERENCES

     Inside Rubik's Cube and Beyond by Christoph  Bandelow,  Bir-
     khauser, 1982. pp 44, 45, 88, 89

     Magic Cubes 1996 Catalog of Dr. Christoph Bandelow.

     The Simple Solution To Rubik's Cube, James G.  Nourse,  June
     1981

     Rubik's Cube Newsletter by Ideal Aug 1982 Vol.1 No. 2

     Rubik's Cube The Solution, Ideal Toy Corporation, 1981

     Rubik's Revenge Puzzle The Solution, Ideal Toy  Corporation,
     1982


SEE ALSO

     X(1), xskewb(6), xdino(6), xpyraminx(6), xoct(6), xmball(6),
     xmlink(6),   xpanex(6),   xcubes(6),  xtriangles(6),  xhexa-
     gons(6), xabacus(6)


COPYRIGHTS

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

     Michael  B.  Martin,  <martinm@sps1.phys.vt.edu>  wrote   an
     independent  program  cubist10.c--  for IBM PC.  I added the
     auto-solve code into xrubik, with his permission.


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