<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Pyraminx scrambler (Uniform Random-State)</title>
<script language="JavaScript1.1" type="text/javascript">
<!--
/* Base script written by Jaap Scherphuis, jaapsch a t yahoo d o t com */
/* Javascript written by Syoji Takamatsu, , red_dragon a t honki d o t net */
/* Random-State modification by Lucas Garron (lucasg a t gmx d o t de / garron.us) in collaboration with Michael Gottlieb (mzrg.com)*/
/* Version 1.0*/
var seqlen = 20;
var numcub = 5;
var colorString = "gryb"; //In dlburf order. May use any colours in colorList below
// list of available colours
var colorList = new Array(
'g', "green", "green",
'r', "red", "red",
'y', "yellow", "yellow",
'b', "blue", "blue",
'w', "white", "white",
'o', "#ff8000","orange", // 'orange' is not an official html colour name
'p', "purple", "purple",
'0', "gray", "grey" // used for unrecognised letters, or when zero used.
);
// layout
var layout = new Array(
1,2,1,2,1,0,2,0,1,2,1,2,1,
0,1,2,1,0,2,1,2,0,1,2,1,0,
0,0,1,0,2,1,2,1,2,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,2,1,2,1,0,0,0,0,
0,0,0,0,0,1,2,1,0,0,0,0,0,
0,0,0,0,0,0,1,0,0,0,0,0,0
);
var seq = new Array(); // move sequences
var colmap = new Array(); // color map
var colors = new Array(); //stores colours used
function parse() {
var s = "";
var urlquery = location.href.split("?")
if(urlquery.length > 1) {
var urlterms = urlquery[1].split("&")
for( var i = 0; i < urlterms.length; i++) {
var urllr = urlterms[i].split("=");
if(urllr[0] == "len") {
if(urllr[1]-0 >= 1 )
seqlen = urllr[1] - 0;
}
else if(urllr[0] == "num") {
if(urllr[1] - 0 >= 1 )
numcub = urllr[1] - 0;
}
else if(urllr[0] == "col") {
if(urllr[1].length==4)
colorString = urllr[1];
}
}
}
// expand colour string into 6 actual html color names
for(var k = 0; k < 6; k++){
colors[k+1] = colorList.length - 3; // gray
for( var i = 0; i < colorList.length; i += 3) {
if( colorString.charAt(k) == colorList[i]) {
colors[k+1] = i; // not use index 0
break;
}
}
}
}
parse();
function scramble()
{
var i, j, n, ls, t;
for( n = 0; n < numcub; n++){
seq[n] = new Array();
colmap[n] = new Array(
1,1,1,1,1,0,2,0,3,3,3,3,3,
0,1,1,1,0,2,2,2,0,3,3,3,0,
0,0,1,0,2,2,2,2,2,0,3,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,4,4,4,4,4,0,0,0,0,
0,0,0,0,0,4,4,4,0,0,0,0,0,
0,0,0,0,0,0,4,0,0,0,0,0,0
);
i = 0;
var f2e=[[],[3,2,1,2,3,1,1,2,0,1,1,2,0,2],[3,2,1,2,0,2,1,1,0,2,3,1,0,2],[0,1,2,2,0,2,2,1,0,2,1,1,0,1,1,2],[1,1,0,2,3,2,0,1,3,1,1,2],[1,2,3,1,1,1,3,2],[0,2,3,2,1,1,0,2,3,1,0,2,1,2],[0,1,3,2,2,2,0,2,3,2,2,1,3,2],[1,1,0,1,1,2,0,2],[1,2,3,2,1,1,3,1],[0,2,3,2,1,1,0,2,3,1,1,2,0,2],[1,2,3,2,0,2,1,1,0,2,3,1,0,2],[3,1,1,2,3,2,1,1],[3,1,1,1,0,1,1,2,0,2,3,2],[0,1,3,2,0,1,1,2,3,1,0,1,1,1],[1,2,0,2,3,2,1,1,0,2,3,1,0,2],[0,1,1,1,0,2,1,2],[1,1,0,2,3,1,0,1,3,2,1,2],[3,2,0,2,1,1,0,2,3,1,0,2,1,2],[3,1,2,2,0,1,3,2,2,1,0,2],[0,1,3,1,0,1,1,1,3,2,0,1,1,2],[0,2,1,1,3,1,0,1,3,2,1,2],[3,1,1,1,0,2,3,2,1,2,0,1],[3,2,0,1,1,2,3,2,1,1,3,2,0,2],[0,2,1,1,3,2,0,1,3,1,1,2],[3,1,1,2,0,2,1,2,0,1,3,2,1,2],[2,2,1,1,0,2,2,1,0,1,1,2],[0,1,1,2,3,1,1,1,0,2,3,2],[0,2,1,1,0,2,1,2,0,2],[3,2,1,2,0,2,1,2,0,1,3,1,1,2],[0,1,1,1,3,2,1,1,3,1,1,1,0,2],[1,2,0,1,3,1,0,2,3,2,1,1],[1,2,0,2,1,2,0,1,1,2],[0,2,3,1,1,1,0,1,3,2,1,2],[0,1,3,2,1,2,3,1,1,1,0,2],[0,1,1,2,3,1,0,2,3,2,1,1],[0,2,1,1,0,1,1,2],[1,1,0,2,3,1,0,2,3,2,0,2,1,2],[0,1,3,2,1,2,3,1,1,2,0,2,1,2],[0,1,1,2,3,1,0,1,3,2,0,1,1,1],[0,1,1,1,3,2,0,1,3,1,0,1,1,2],[0,1,1,2,3,2,1,1,0,2,3,1],[1,1,3,1,0,2,1,2,0,1,3,2],[2,1,1,1,0,2,2,2,0,1,1,2],[0,1,3,2,0,2,3,1],[0,1,2,2,0,1,1,1,2,1,0,1,1,2],[3,2,0,1,1,1,3,1,1,2,0,2],[0,2,1,2,3,1,1,2,0,1,3,2,1,2],[1,1,0,1,3,2,1,2,0,2,3,1],[0,1,3,2,1,1,0,1,3,1,0,1,1,2],[1,2,3,1,0,2,1,2,3,2,0,1,1,2],[1,2,3,2,0,1,1,1,3,1,0,2],[0,1,3,2,0,2,1,2,3,1,1,1],[3,1,1,1,0,1,3,1,1,2,3,1,0,2],[3,1,0,2,1,2,0,1,3,2,1,1],[1,1,3,1,1,1,0,2,3,2,1,1,0,1],[0,1,1,1,3,2,0,2,3,1,1,2],[3,1,1,1,3,1,0,1,1,2,3,1,0,2],[3,2,0,1,1,1,3,1,0,2,1,2],[3,1,0,2,1,2,3,2,0,1,1,1],[0,1,1,1,0,1,1,2,0,1],[3,1,0,1,1,2,3,2,1,1,0,2],[1,1,3,2,0,2,1,2,3,1,0,1],[1,2,0,1,3,2,1,1,3,1,0,2],[3,1,0,1,3,2,0,2],[1,2,3,1,1,2,0,1,3,2,1,2,0,2],[0,1,3,2,1,1,3,1,1,2,0,2],[0,1,1,1,3,1,0,2,1,1,3,2,1,1],[1,1,3,2,0,1,3,1,1,2,0,2],[1,2,3,1,0,1,1,1,3,2,0,2],[0,2,3,2,0,2,1,1,3,1,0,2,1,2],[1,1,0,1,1,1,3,1,1,1,0,2,3,2],[1,2,3,1,0,1,3,2,1,2,0,2,1,2],[3,1,1,1,0,1,3,2,1,2,0,2],[3,2,0,2,1,2,3,1,0,1,1,1],[1,2,0,2,3,2,0,2,1,1,3,1,0,2],[3,1,0,1,1,1,3,2,0,2,1,2],[1,1,3,1,0,1,3,2,1,2,0,2],[0,1,3,2,1,1,3,1,0,2,1,2],[1,2,3,2,0,2,1,2,3,1,0,1,1,2],[1,1,0,2,1,1,0,1,1,1],[1,2,0,2,3,1,0,2,3,2,1,1,0,2],[0,1,3,1,1,1,0,1,3,2,0,1,1,2],[0,1,1,2,3,2,1,1,3,1,0,2],[0,2,1,2,0,1,1,1],[3,2,0,2,1,2,3,1,1,2,0,1,1,2],[0,1,3,1,0,2,3,2],[0,1,3,1,1,1,0,2,1,1,3,2,1,1],[0,1,3,2,1,1,0,1,3,1,1,2,0,1],[0,2,1,2,3,1,0,1,1,1,3,2],[1,1,3,2,0,1,1,2,3,1,0,2],[0,1,3,2,1,2,3,2,1,1,0,2,3,2],[0,2,1,2,0,1,1,2,0,1,1,2,0,2],[0,2,1,2,3,1,0,1,3,2,1,1],[1,1,0,1,3,2,1,2,3,1,0,2],[1,2,3,2,1,1,0,1,3,1,0,2],[0,2,1,2,0,2,1,2,0,2,1,2],[0,2,1,2,3,2,0,1,1,1,3,1],[0,1,3,1,1,1,0,2,3,2,1,2],[1,2,0,2,3,2,1,2,3,1,0,1,1,2],[1,1,0,2,1,2,0,1],[0,2,1,1,3,1,0,2,3,2,0,2,1,2],[1,1,0,1,3,1,0,1,3,2,0,1,1,2],[0,2,1,2,3,2,1,2,3,1,0,1,1,2],[1,2,0,2,1,1,0,1],[3,1,1,1,0,2,1,1,3,2,1,1,0,1],[3,2,1,1,0,1,3,1,0,2,1,2],[2,1,1,2,3,1,2,2,1,1,3,2],[3,1,1,2,0,2,3,2,1,1,0,1],[1,2,3,1,0,2,1,1,0,1,3,2],[3,2,1,1,0,1,3,1,1,2,0,2],[0,2,3,2,1,2,3,2,0,1,1,1,3,2],[1,1,0,1,1,1,0,1,1,1,0,1],[1,2,3,2,0,2,1,1,3,1,0,1],[1,1,0,1,3,1,1,2,0,2,3,2],[3,2,1,2,0,1,1,2,3,1,0,2,1,2],[3,1,1,2,3,2,0,2,1,1,0,1],[1,2,3,1,0,2,3,2,1,1,0,1],[0,2,3,2,1,2,3,1,0,1,1,1],[3,2,1,1,3,2,0,1,3,2,1,2,0,2]];
var l4e=[[],[1,1,3,2,1,2,3,2,1,1,3,2,1,2],[1,1,3,1,1,2,3,1,1,1,3,1,1,2],[3,1,0,1,3,2,1,1,3,2,1,2,3,1,0,2],[1,2,3,1,0,2,3,1,0,1,3,2,1,1,3,2],[0,1,3,2,1,1,3,2,1,2,3,1,0,2,3,1],[0,1,3,1,1,1,3,2,1,2,0,2],[1,2,0,2,3,2,0,1,3,1,1,1],[2,2,1,2,3,2,1,1,3,1,2,1],[0,1,1,1,3,1,1,2,3,2,0,2],[1,2,3,2,0,2,3,1,0,1,1,1],[2,2,3,2,1,2,3,1,1,1,2,1],[1,1,0,2,3,1,0,1,3,2,0,1,1,2,0,2],[3,2,1,1,3,2,1,2,3,1,0,2,3,1,0,1],[0,2,1,1,3,2,1,2,3,1,1,2,0,1,1,1],[3,1,0,2,3,1,0,1,1,1,3,2,2,1,3,2,2,2,1,2],[3,2,0,2,2,2,3,1,2,2,0,2,2,2,0,2],[3,1,0,1,2,1,0,1,2,1,3,2,2,1,0,1],[1,1,3,2,1,2,0,2,3,2,0,1,3,2],[3,2,1,1,3,2,1,2,0,2,3,2,0,1],[3,1,1,1,3,2,1,2,0,2,3,2,0,1,3,1],[3,2,0,2,3,1,0,1,1,1,3,1,1,2,3,2],[3,1,0,2,3,1,0,1,1,1,3,1,1,2],[0,2,3,1,0,1,1,1,3,1,1,2,3,1],[3,2,0,2,2,2,3,1,2,1,0,1],[0,1,1,2,2,1,0,1,2,2,0,1,1,1],[3,1,1,2,0,1,1,1,0,1,3,2,0,1],[3,1,0,1,1,1,0,1,3,2,0,2,1,2,0,2],[3,1,0,2,3,2,0,1],[1,1,3,1,1,2,3,1,0,2,3,1,0,1],[0,1,1,2,0,2,1,1],[3,1,0,2,2,2,3,2,2,1,3,2,0,1,3,1],[3,2,0,2,3,1,0,1],[0,2,2,1,0,2,2,2,0,2],[3,1,1,1,3,2,1,2,3,1,0,2,3,2,0,1],[3,1,0,2,3,1,2,2,3,1,2,1,0,1],[0,2,3,1,0,1,1,1,3,2,1,2],[3,2,1,1,3,1,2,2,1,1,2,1,1,1],[3,2,1,1,3,1,1,2,3,1,1,1,3,2,1,2],[0,1,1,1,0,1,3,1,0,2,1,2,0,2,3,2],[1,1,3,2,1,2,3,1],[3,1,0,2,3,1,0,1,3,2,1,1,3,1,1,2,3,1],[3,1,0,1,2,1,0,1,2,2,0,1,3,2],[3,1,1,1,3,2,2,1,3,2,2,2,1,2,3,1],[3,1,1,1,3,1,1,2,3,1],[3,2,1,2,0,1,1,1,0,2,3,1],[1,2,2,2,1,2,2,2,3,2,2,2,1,2,3,1],[3,1,1,1,2,1,3,1,2,2,3,1,1,2],[3,2,1,1,3,1,1,2],[1,2,0,1,1,1,0,2],[0,2,3,2,0,1,3,2,1,1,3,2,1,2],[3,2,1,1,2,1,3,1,2,2,3,1,1,2,3,2],[3,1,1,1,2,1,3,2,2,2,1,2],[3,2,0,1,1,2,0,2,1,2,3,1,1,2],[1,2,0,1,2,2,1,2,2,1,1,2,0,2],[3,2,1,2,0,2,1,2,3,1,1,1,0,1,1,1],[3,1,1,1,3,2,1,2],[3,2,0,2,3,1,0,1,3,2,1,1,3,1,1,2],[1,1,2,2,1,1,2,1,1,1],[3,2,1,1,3,2,2,1,3,2,2,2,1,2],[0,2,3,1,0,1,3,2],[3,2,1,2,2,2,1,2,2,1,1,2,3,1],[3,2,1,1,3,2,1,2,3,1,0,2,3,2,0,1,3,2],[3,2,0,2,3,1,2,2,3,1,2,1,0,1,3,2],[1,1,3,2,1,2,0,2,3,1,0,1],[3,1,0,2,3,2,0,1,3,2,0,2,3,1,0,1],[3,1,0,2,3,2,2,1,0,2,2,2,0,2],[1,2,0,2,1,2,3,2,1,1,0,1,1,1,3,1],[3,2,0,2,3,2,0,1,3,2],[0,1,2,1,0,1,2,1,3,1,2,1,0,1,3,2],[3,1,0,1,1,2,0,2,1,1,3,2],[3,2,0,2,2,2,3,2,2,1,3,2,0,1],[3,2,1,1,3,2,1,2,3,2],[0,1,2,1,0,1,2,2,0,1],[0,1,1,1,2,2,1,1,0,1,2,1,0,1,1,1],[1,1,3,2,2,1,3,2,2,2,1,2,3,2],[1,1,3,1,1,2,3,2],[3,1,0,2,2,2,3,2,2,2,0,2,2,2,0,2],[3,1,1,2,0,1,1,1,0,2,3,2],[1,1,2,1,3,1,2,2,3,1,1,2,3,1],[3,1,1,1,3,2,1,1,0,1,1,1,0,2],[3,2,0,1,1,1,0,1,3,1,0,2,1,2,0,2],[3,2,0,2,2,2,3,2,2,1,0,1,3,2],[3,1,1,1,3,2,1,2,3,2,1,1,3,1,1,2],[0,2,3,2,0,1,3,1],[3,2,0,1,1,2,0,2,1,1,3,1],[3,2,1,1,2,1,3,1,2,1,1,1,2,1,1,1],[0,2,2,2,3,2,2,1,3,2,0,1,3,2],[3,1,0,2,3,1,0,1,3,1],[1,2,0,2,2,1,0,2,1,2,2,2,1,2,0,2],[1,2,2,2,1,2,2,1,1,2],[0,2,3,1,2,2,3,1,2,1,0,1,3,1],[3,2,0,2,3,1,0,2,1,2,0,2,1,1],[3,1,1,1,2,1,3,1,2,2,1,2,3,1],[3,1,1,2,0,2,1,2,3,2,1,1,0,1,1,1],[3,2,0,2,3,1,0,1,3,1,0,2,3,2,0,1]];
var AUFs=[3,1,0,2,7,5,4,6];
seq[n]=f2e[Math.floor(Math.random()*120)].concat(l4e[Math.floor(Math.random()*96)]);
for(var i=0;i<8;i++){
var dir=Math.floor(Math.random()*3);
if(dir>0)
seq[n]=seq[n].concat([AUFs[i],dir]);
}
}
}
function scramble_color()
{
for( var n = 0; n < numcub; n++){
for(var i = 0; i < seq[n].length; i += 2) {
switch(seq[n][i]) {
case 0: // L
rotate3(n, 14,58,18, seq[n][i + 1]);
rotate3(n, 15,57,31, seq[n][i + 1]);
rotate3(n, 16,70,32, seq[n][i + 1]);
rotate3(n, 30,28,56, seq[n][i + 1]);
break;
case 1: // R
rotate3(n, 32,72,22, seq[n][i + 1]);
rotate3(n, 33,59,23, seq[n][i + 1]);
rotate3(n, 20,58,24, seq[n][i + 1]);
rotate3(n, 34,60,36, seq[n][i + 1]);
break;
case 2: // B
rotate3(n, 14,10,72, seq[n][i + 1]);
rotate3(n, 1,11,71, seq[n][i + 1]);
rotate3(n, 2,24,70, seq[n][i + 1]);
rotate3(n, 0,12,84, seq[n][i + 1]);
break;
case 3: // U
rotate3(n, 2,18,22, seq[n][i + 1]);
rotate3(n, 3,19, 9, seq[n][i + 1]);
rotate3(n, 16,20,10, seq[n][i + 1]);
rotate3(n, 4, 6, 8, seq[n][i + 1]);
break;
case 4: // l
rotate3(n, 30,28,56, seq[n][i + 1]);
break;
case 5: // r
rotate3(n, 34,60,36, seq[n][i + 1]);
break;
case 6: // b
rotate3(n, 0,12,84, seq[n][i + 1]);
break;
case 7: // u
rotate3(n, 4, 6, 8, seq[n][i + 1]);
break;
}
}
}
}
function rotate3(n, v1, v2, v3, clockwise)
{
var tmp;
if(clockwise == 2) { // un
tmp = colmap[n][v3];
colmap[n][v3] = colmap[n][v2];
colmap[n][v2] = colmap[n][v1];
colmap[n][v1] = tmp;
}
else {
tmp = colmap[n][v1];
colmap[n][v1] = colmap[n][v2];
colmap[n][v2] = colmap[n][v3];
colmap[n][v3] = tmp;
}
}
function scramblestring(n)
{
var s = "", i;
for(i = 0; i < seq[n].length; i += 2) {
s += "LRBUlrbu".charAt(seq[n][i]);
if( seq[n][i + 1] == 2 )
s += "'";
s += " ";
}
do {} while (s != (s=s.replace(/(.) \1 /g,"$1' ").replace(/(.)' \1' /g,"$1 ").replace(/(.)' \1 /g,"").replace(/(.) \1' /g,"")));
return s;
}
function draw_triangle(pat, color, val)
{
var s = "";
if(pat == 1) {
s += "<table border=0 cellpadding=0 cellspacing=0>";
s += "<tr><td colspan=12 width=12 height=2 bgcolor=" + colorList[colors[color] + 2] + ">" + val+ "</td></tr>";
for(var i = 1; i <= 5; i++) {
s += "<tr>";
s += "<td colspan=" + i + " width=" + i + " height=2 bgcolor=silver></td>";
s += "<td colspan=" + (12 - i * 2) + " width=" + (12 - i * 2) + " height=2 bgcolor=" + colorList[colors[color] + 2] + "></td>";
s += "<td colspan=" + i + " width=" + i + " height=2 bgcolor=silver></td>";
s += "</tr>";
}
s += "</table>";
}
else if(pat == 2) {
s += "<table border=0 cellpadding=0 cellspacing=0>";
for(var i = 5; i >= 1; i--) {
s += "<tr>";
s += "<td colspan=" + i + " width=" + i + " height=2 bgcolor=silver></td>";
s += "<td colspan=" + (12 - i * 2) + " width=" + (12 - i * 2) + " height=2 bgcolor=" + colorList[colors[color] + 2] + "></td>";
s += "<td colspan=" + i + " width=" + i + " height=2 bgcolor=silver></td>";
s += "</tr>";
}
s += "<tr><td colspan=12 width=12 height=2 bgcolor=" + colorList[colors[color] + 2] + ">" + val+ "</td></tr>";
s += "</table>";
}
else {
s += " ";
}
return s;
}
function imagetable(n)
{
var x,y;
var s = "<table border=0 cellpadding=0 cellspacing=0>";
for(var y = 0; y < 7; y++) {
s += "<tr>";
for(var x = 0; x < 13; x++) {
s += "<td>";
s += draw_triangle(layout[y * 13 + x], colmap[n][y * 13 + x] , "");
s += "</td>";
}
s += "</tr>";
}
s += "</table>";
return s;
}
//-->
</script>
</head>
<body bgcolor="white">
<form name="frm">
<table border=1 cellpadding=0 cellspacing=0 width="100%"><tr>
<td colspan=3 bgcolor='#00c0c0'>
<table width="100%"><tr>
<td bgcolor=white align=center rowspan=2><img src="pyraminx.gif" width=163 height=142 alt=""></td>
<td><font face="Arial" size=3>Number of scrambles:</font><input name=num size="4" maxlength="2"></td>
<td><font face="Arial" size=3>Uniform Random-State Scrambles<br>Generated <script language="JavaScript1.1" type="text/javascript">
var d = new Date();
document.write (d.toUTCString());
</script></font></td>
<td><font face='Arial' size=3>Colours (LFRD):</font><input name="col" size="6" maxlength="6"></td>
<td><input type="submit" value="Scramble!"></td>
</tr>
<tr><td colspan="5">Note:<br>Small letter: Rotate a vertex piece, Capital letter: Rotate two layers at once.</td></tr>
</table></td></tr>
<script language="JavaScript1.1" type="text/javascript">
<!--
document.frm.num.value = numcub;
document.frm.col.value = colorString;
scramble();
scramble_color();
for( var i = 0; i < numcub; i++) {
document.writeln("<tr><td align='center'><font face='Arial' size='3'><b>"+eval(eval(i)+1)+".</b></font></td><td><font face='Arial' size='3'><b> "+scramblestring(i)+"</b></font></td><td bgcolor='silver' align='center'>" +imagetable(i)+ "</td></tr>");
}
//-->
</script>
</table></form>
<font face="Arial" size="2">version: February 6, 2009</font>
</body>
</html>