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}]
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>
<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 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").
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