Skip to content

Instantly share code, notes, and snippets.

@DigiMancer3D
Last active December 2, 2025 06:12
Show Gist options
  • Select an option

  • Save DigiMancer3D/2467521621aa1453369ce904ecc24b01 to your computer and use it in GitHub Desktop.

Select an option

Save DigiMancer3D/2467521621aa1453369ce904ecc24b01 to your computer and use it in GitHub Desktop.
Let's find Omni Shapes or Polyominoes!
<!DOCTYPE HTML>
<html id='html'>
<style>
html{
background-color: black;
color: silver;
overflow-x: none;
overflow-y: auto;
}
button{
color: silver;
background-color: rgba(0,0,0,0);
border-color: silver;
border-width: 0.28vw;
border-radius: 48%;
padding:0.89vw;
margin:0.31vw;
}
</style>
<body style='align:center;text-align:center;'>
<div style='align:center;width:85vw;padding-left:2.5vw;padding-right:2.5vw;margin-left:5vw;margin-right:5vw;'>
<span id='counting' style="display:none" title="Don't mind me, I'm counting">0</span>
<h1>Finding OMNI Patterns</h1>
<span id='dufftext' style='display:none;'></span>
</br></br>
<span id='display'></span>
</br></br>
<div id='output' style='align:center;' ></div>
</br></br>
<span id='duff'></span>
</br></br>
<span id='notes'></span>
</br></br>
<div id='rulebox' style='display:none'>
<h3 style='display:block' id='words1' onclick='document.getElementById("rulecont").innerHTML=document.getElementById(&#039;rules&#039;).innerHTML;this.style.display="none";document.getElementById("words2").style.display="block";' title='I show rules when clicked'>See Rules</h3>
<h3 id='words2' style='display:none' onclick='document.getElementById("rulecont").innerHTML="";this.style.display="none";document.getElementById("words1").style.display="block";' title='I hide rules when clicked'>Hide Rules</h3>
<span id='rulecont' title='I display rules'></span>
<span id='rules' style='display:none' title='You should not be able to see me'>I'm Rules
</br></br>
<h3 id='close' onclick='document.getElementById("rulecont").innerHTML="";document.getElementById("words2").style.display="none";document.getElementById("words1").style.display="block";' title='I hide rules when clicked'><sup>[close]</sup></h3></br></span>
</div>
<span id='history' style='display:none' title='I define the grid size'>0</span>
<span id='rc' style='display:none' title='I show where in the round-count we are at'>0</span>
<span id='sc' style='display:none' title='I show where in a sub-count we are at'>1</span>
<span id='am' style='display:none' title='I show algo-moves needing to be done'></span>
<span id='rh' style='display:none' title='I show algo-moves that have been done'></span>
<span id='reflections' style='display:none'></span>
<div id='creatornotes' style='text-align:center;align:center;'><hr id='pagehr' style='width:31%;opacity:0.33;'><sup><a href='https://github.com/DigiMancer3D/omni_shapes' rel='noopener noreferrer' target='_blank' style='color:grey;text-decoration:none;' title='click to visit this Git Repo'><b>Made by 3Douglas <q><i>3D</i></q> Pihl</b></sup></br></br><sub><a href='https://twitter.com/@Z0M8I3D' rel='noopener noreferrer' target='_blank' style='color:green;text-decoration:none;' title='click to visit on xTwitter'><i>@<b>Z0M8I3D</b></i></a></sub></br></br></div>
</body>
<script>
var countme = 0;
var huh = 0;
var cc = document.getElementById('counting').innerHTML;
document.getElementById('history').innerHTML = 9; <!-- graph initator -->
if(document.getElementById('notes').innerHTML.toString().search(/start/gm) < 0){
beginbrosiv();
}
function beginbrosiv(){
countme = 0;
huh = 0;
<!-- no-history & null-history catch -->
if(document.getElementById('history').innerHTML.search(/\d/g) < 0 || document.getElementById('history').innerHTML <= 0){
document.getElementById('history').innerHTML = 9;
}
document.getElementById('display').innerHTML = "<h3><b>Welcome to OMNI Shape Finder for finding Polyominoes!</br></br>To begin, click on any ZERO below and it is recommended to try starting from the center or a corner</br><sub>The walls wrap around</br><sup><i>so be careful</i></sup></sub></b><hr style='width:33vw;border-color:rgba(192,192,192,0.4);'></h3>";
var rows = ["Pick a number <span id='numof'>AT</span> [ <span id='bank' style='color:limegreen' title='Your Current Pick Number Limitor'>0</span> ]!!"];
document.getElementById('output').innerHTML = '';
document.getElementById('counting').innerHTML = 0;
cc = document.getElementById('counting').innerHTML;
var tc = document.getElementById('history').innerHTML; //Number(graphlen)
var uff = '', uffda = '', uff1 = '', uffda1 = '', uff2 = '', uffda2 = '', uff3 = '', uffda3 = '', uff4 = '', uffda4 = '', uff5 = '', uffda5 = '', uff6 = '', uffda6 = '', uff7 = '', uffda7 = '', uff8 = '', uffda8 = '';
for(var i = 1; i <= Number(tc); i++){
for(var e = 1; e <= Number(tc); e++){
uff = uffda;
uffda = uff + "" + "<span id='o"+i+"o"+e+"' onclick='colorme(&#034;o"+i+"o"+e+"&#034;&#44;0);' style='color:silver;' title=' "+i+":"+e+" '>0</span>, ";
}
rows.push(uffda + "!");
uff = '';
uffda = '';
}
rows.push("<sup>Interactive Proof Builder</sup>!!");
for(var i = 1; i <= Number(tc); i++){
for(var e = 1; e <= Number(tc); e++){
uff1 = uffda1;
uffda1 = uff1 + "" + "<span id='b"+i+"b"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda1 + " &nbsp;&nbsp;&nbsp;");
uff1 = '';
uffda1 = '';
for(var e = 1; e <= Number(tc); e++){
uff2 = uffda2;
uffda2 = uff2 + "" + "<span id='d"+i+"d"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda2 + " &nbsp;&nbsp;&nbsp;");
uff2 = '';
uffda2 = '';
for(var e = 1; e <= Number(tc); e++){
uff3 = uffda3;
uffda3 = uff3 + "" + "<span id='q"+i+"q"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda3 + " &nbsp;&nbsp;&nbsp;");
uff3 = '';
uffda3 = '';
for(var e = 1; e <= Number(tc); e++){
uff6 = uffda6;
uffda6 = uff6 + "" + "<span id='r"+i+"r"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda6 + "!");
uff6 = '';
uffda6 = '';
}
rows.push("<span style='width:100%;text-align:justify;'><sup style='padding-right:1.5vw;padding-left:0.5vw;'>90Rotate Right</sup>&nbsp;<sup style='padding-right:1.5vw;padding-left:1.5vw;'>90Rotate Right & X-Mirror</sup>&nbsp;<sup style='padding-right:1.5vw;padding-left:1.5vw;'>([max]Y-Y)+1</sup><sup style='padding-left:1.5vw;padding-right:0.5vw;'>180deg Rotate Left</sup>!<sup style='padding-right:0.5vw;padding-left:4.5vw;'>Y-Mirror XY-Swap</sup>&nbsp;<sup style='padding-left:4.5vw;padding-right:4.5vw;'>XY-Swap</sup>&nbsp;<sup style='padding-right:3.5vw;padding-left:3.5vw;'>Y-Mirrored</sup><sup style='padding-left:4.5vw;padding-right:4.5vw;'>XY-Mirrored</sup></span>!!");
for(var i = 1; i <= Number(tc); i++){
for(var e = 1; e <= Number(tc); e++){
uff5 = uffda5;
uffda5 = uff5 + "" + "<span id='a"+i+"a"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda5 + " &nbsp;&nbsp;&nbsp;");
uff5 = '';
uffda5 = '';
for(var e = 1; e <= Number(tc); e++){
uff4 = uffda4;
uffda4 = uff4 + "" + "<span id='c"+i+"c"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda4 + " &nbsp;&nbsp;&nbsp;");
uff4 = '';
uffda4 = '';
for(var e = 1; e <= Number(tc); e++){
uff7 = uffda7;
uffda7 = uff7 + "" + "<span id='f"+i+"f"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda7 + " &nbsp;&nbsp;&nbsp;");
uff7 = '';
uffda7 = '';
for(var e = 1; e <= Number(tc); e++){
uff8 = uffda8
uffda8 = uff8 + "" + "<span id='p"+i+"p"+e+"' style='color:black;' title=' "+i+":"+e+" '>&#9632</span>, ";
}
rows.push(uffda8 + "!");
uff8 = '';
uffda8 = '';
}
rows.push("<span style='width:100%;text-align:justify;'><sup style='padding-right:2.5vw;padding-left:0.5vw;'>90Rotate Right & Y-Mirror</sup>&nbsp;<sup style='padding-right:3.5vw;padding-left:1.5vw;'>90 deg Rotate Left</sup>&nbsp;<sup style='padding-left:1.5vw;padding-right:3.5vw;'>Proof Map</sup>&nbsp;<sup style='padding-right:1.5vw;padding-left:3.5vw;'>([max]X-X)+1</sup>!<sup style='padding-right:3.5vw;padding-left:0.5vw;'>XY-Mirror XY-Swap</sup>&nbsp;<sup style='padding-right:3.5vw;padding-left:2.5'>X-Mirrored XY-Swap</sup>&nbsp;<sup style='padding-left:2.5vw;padding-right:2.5vw;'>XY-Unchanged</sup>&nbsp;<sup style='padding-right:0.5vw;padding-left:2.5vw;'>X-Mirrored</sup></span>!!");
rows.push("<span id='nulli' style='display:none'></span>!<span id='nulle' style='display:none'></span>!<span style='align:left;text-align:left;'>XY-Unchanged (iPB)</span>!Rol: <span id='newi'></span><span id='isep'></span><span id='endi'></span>!Col: <span id='newe'></span><span id='esep'></span><span id='ende'></span>!");
rows.push("<span id='nulli1' style='display:none'></span>!<span id='nulle1' style='display:none'></span>!<span style='align:left;text-align:left;'>X-Mirrored (Xm)</span>!Rol: <span id='newi1'></span><span id='isep1'></span><span id='endi1'></span>!Col: <span id='newe1'></span><span id='esep1'></span><span id='ende1'></span>!");
rows.push("<span id='nulli2' style='display:none'></span>!<span id='nulle2' style='display:none'></span>!<span style='align:left;text-align:left;'>Y-Mirrored (Ym)</span>!Rol: <span id='newi2'></span><span id='isep2'></span><span id='endi2'></span>!Col: <span id='newe2'></span><span id='esep2'></span><span id='ende2'></span>!");
rows.push("<span id='nulli3' style='display:none'></span>!<span id='nulle3' style='display:none'></span>!<span style='align:left;text-align:left;'>XY-Mirrored (Xm Ym)</span>!Rol: <span id='newi3'></span><span id='isep3'></span><span id='endi3'></span>!Col: <span id='newe3'></span><span id='esep3'></span><span id='ende3'></span>!");
rows.push("<span id='nulli4' style='display:none'></span>!<span id='nulle4' style='display:none'></span>!<span style='align:left;text-align:left;'>XY-Mirrored XY-Swap (Xm Ym X>Y>X)</span>!Rol: <span id='newi4'></span><span id='isep4'></span><span id='endi4'></span>!Col: <span id='newe4'></span><span id='esep4'></span><span id='ende4'></span>!");
rows.push("<span id='nulli5' style='display:none'></span>!<span id='nulle5' style='display:none'></span>!<span style='align:left;text-align:left;'>Y-Mirrored XY-Swap (Ym X>Y>X)</span>!Rol: <span id='newi5'></span><span id='isep5'></span><span id='endi5'></span>!Col: <span id='newe5'></span><span id='esep5'></span><span id='ende5'></span>!");
rows.push("<span id='nulli6' style='display:none'></span>!<span id='nulle6' style='display:none'></span>!<span style='align:left;text-align:left;'>X-Mirrored XY-Swap (Xm X>Y>X)</span>!Rol: <span id='newi6'></span><span id='isep6'></span><span id='endi6'></span>!Col: <span id='newe6'></span><span id='esep6'></span><span id='ende6'></span>!");
rows.push("<span id='nulli7' style='display:none'></span>!<span id='nulle7' style='display:none'></span>!<span style='align:left;text-align:left;'>XY-Swap (X>Y>X)</span>!Rol: <span id='newi7'></span><span id='isep7'></span><span id='endi7'></span>!Col: <span id='newe7'></span><span id='esep7'></span><span id='ende7'></span>!");
rows.push("!< <span id='pointer' style='color:rgba(120,120,255,1.0);' title='Full Open-Face Counter'>"+countme+"</span> >&nbsp;&nbsp;( <span id='lengthis' style='color:rgba(227,187,167,1.0)' title='Current Length'>0</span> ) { <span id='altsare' style='color:rgba(255,127,30,1.0)' title='Current Atl-Moves Found'>0</span> }!");
document.getElementById('output').innerHTML = "<div id='graphs'>"+rows.toString().replace(/,/gm, " ").replace(/!/gm, "</br>")+"</div>";
document.getElementById('pointer').innerHTML = countme;
} //end of beginbrosiv() function
function colorme(id,gen){
var graphlen = document.getElementById('history').innerHTML;
var onemore = Number(document.getElementById('history').innerHTML) + 1;
var cc = Number(document.getElementById('counting').innerHTML);
var toggle = Number(document.getElementById('pointer').innerHTML);
var that = document.getElementById(id).innerHTML;
var at = document.getElementById(id).style.color;
var opensides = 3; <!-- change opensides as sides close -->
var col = parseInt(id.split('o')[1]);
var row = parseInt(id.split('o')[2]);
var cup = Number(col) - 1; //above clicked
var cdown = Number(col) + 1; //below clicked
//cleft finds to user's right side of object <!-- does this mean these need to be flipped? -->
//cright finds to user's left side of object <!-- upgrade UPGRADE Upgrade I'm here im here i'm here I'm Here IM HERE I"M HERE -->
var cleft = Number(row) + 1; //left of clicked
var cright = Number(row) - 1; //right of clicked
var cu = '', cd = '', cl = '', cr = '', cus = '', cds = '', cls = '', crs = '', tempcount = 1;
var bank = Number(document.getElementById('bank').innerHTML);
var hist = document.getElementById('history').innerHTML;
var preendi = 0, preende = 0, preendi1 = 0, preende1 = 0, preendi2 = 0, preende2 = 0, preendi3 = 0, preende3 = 0, preendi4 = 0, preende4 = 0, preendi5 = 0, preende5 = 0, preendi6 = 0, preende6 = 0, preendi7 = 0, preende7 = 0;
do{
if(cup <= 0){
cup = Math.abs(Number(cup) + Number(graphlen));
}
if(cup >= onemore){
cup = Math.abs(Number(cup) - Number(graphlen));
}
}while(cup > Number(graphlen) || cup < 1);
do{
if(cdown <= 0){
cdown = Math.abs(Number(cdown) + Number(graphlen));
}
if(cdown >= onemore){
cdown = Math.abs(Number(cdown) - Number(graphlen));
}
}while(cdown > Number(graphlen) || cdown < 1);
do{
if(cleft <= 0){
cleft = Math.abs(Number(cleft) + Number(graphlen));
}
if(cleft >= onemore){
cleft = Math.abs(Number(cleft) - Number(graphlen));
}
}while(cleft > Number(graphlen) || cleft < 1);
do{
if(cright <= 0){
cright = Math.abs(Number(cright) + Number(graphlen));
}
if(cright >= onemore){
cright = Math.abs(Number(cright) - Number(graphlen));
}
}while(cright > Number(graphlen) || cright < 1);
if(cup > 0 && cup < onemore){
cu = document.getElementById("o"+cup+"o"+row).innerHTML;
cus = document.getElementById("o"+cup+"o"+row).style.color;
//<!--extends purple (takes)-->
if (Number(gen) >= 2 && cus === "orange") {
var purpleTouch = false;
var greenTouch = false;
var pcup = document.getElementById("o"+cup+"o"+row); // Self orange
if (pcup && pcup.style.color !== "green") { // Safe self
// Neighbor up from orange
var nup = Number(cup) - 1;
do { if (nup <= 0) { nup = Math.abs(Number(nup) + Number(graphlen)); } if (nup >= onemore) { nup = Math.abs(Number(nup) - Number(graphlen)); } } while (nup > Number(graphlen) || nup < 1);
var nel = document.getElementById("o"+nup+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor down from orange
var ndown = Number(cup) + 1;
do { if (ndown <= 0) { ndown = Math.abs(Number(ndown) + Number(graphlen)); } if (ndown >= onemore) { ndown = Math.abs(Number(ndown) - Number(graphlen)); } } while (ndown > Number(graphlen) || ndown < 1);
nel = document.getElementById("o"+ndown+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor left from orange
var nleft = Number(row) + 1;
do { if (nleft <= 0) { nleft = Math.abs(Number(nleft) + Number(graphlen)); } if (nleft >= onemore) { nleft = Math.abs(Number(nleft) - Number(graphlen)); } } while (nleft > Number(graphlen) || nleft < 1);
nel = document.getElementById("o"+cup+"o"+nleft);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor right from orange
var nright = Number(row) - 1;
do { if (nright <= 0) { nright = Math.abs(Number(nright) + Number(graphlen)); } if (nright >= onemore) { nright = Math.abs(Number(nright) - Number(graphlen)); } } while (nright > Number(graphlen) || nright < 1);
nel = document.getElementById("o"+cup+"o"+nright);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
if (purpleTouch && !greenTouch) {
cu = "0";
cus = "silver"; // Leap for purple
}
}
}
}
else {
cu === '2';
}
if(cdown > 0 && cdown < onemore){
cd = document.getElementById("o"+cdown+"o"+row).innerHTML;
cds = document.getElementById("o"+cdown+"o"+row).style.color;
//<!--extendeds purple (takes)-->
if (Number(gen) >= 2 && cds === "orange") {
var purpleTouch = false;
var greenTouch = false;
var pcup = document.getElementById("o"+cdown+"o"+row); // Self orange
if (pcup && pcup.style.color !== "green") { // Safe self
// Neighbor up from orange
var nup = Number(cd) - 1;
do { if (nup <= 0) { nup = Math.abs(Number(nup) + Number(graphlen)); } if (nup >= onemore) { nup = Math.abs(Number(nup) - Number(graphlen)); } } while (nup > Number(graphlen) || nup < 1);
var nel = document.getElementById("o"+nup+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor down from orange
var ndown = Number(cup) + 1;
do { if (ndown <= 0) { ndown = Math.abs(Number(ndown) + Number(graphlen)); } if (ndown >= onemore) { ndown = Math.abs(Number(ndown) - Number(graphlen)); } } while (ndown > Number(graphlen) || ndown < 1);
nel = document.getElementById("o"+ndown+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor left from orange
var nleft = Number(row) + 1;
do { if (nleft <= 0) { nleft = Math.abs(Number(nleft) + Number(graphlen)); } if (nleft >= onemore) { nleft = Math.abs(Number(nleft) - Number(graphlen)); } } while (nleft > Number(graphlen) || nleft < 1);
nel = document.getElementById("o"+cup+"o"+nleft);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor right from orange
var nright = Number(row) - 1;
do { if (nright <= 0) { nright = Math.abs(Number(nright) + Number(graphlen)); } if (nright >= onemore) { nright = Math.abs(Number(nright) - Number(graphlen)); } } while (nright > Number(graphlen) || nright < 1);
nel = document.getElementById("o"+cup+"o"+nright);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
if (purpleTouch && !greenTouch) {
cu = "0";
cus = "silver"; // Leap for purple
}
}
}
}
else {
cd === '2';
}
if(cleft > 0 && cleft < onemore){
cl = document.getElementById("o"+col+"o"+cleft).innerHTML;
cls = document.getElementById("o"+col+"o"+cleft).style.color;
//<!--extendeds purple (takes)-->
if (Number(gen) >= 2 && cls === "orange") {
var purpleTouch = false;
var greenTouch = false;
var pcup = document.getElementById("o"+cleft+"o"+row); // Self orange
if (pcup && pcup.style.color !== "green") { // Safe self
// Neighbor up from orange
var nup = Number(cup) - 1;
do { if (nup <= 0) { nup = Math.abs(Number(nup) + Number(graphlen)); } if (nup >= onemore) { nup = Math.abs(Number(nup) - Number(graphlen)); } } while (nup > Number(graphlen) || nup < 1);
var nel = document.getElementById("o"+nup+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor down from orange
var ndown = Number(cup) + 1;
do { if (ndown <= 0) { ndown = Math.abs(Number(ndown) + Number(graphlen)); } if (ndown >= onemore) { ndown = Math.abs(Number(ndown) - Number(graphlen)); } } while (ndown > Number(graphlen) || ndown < 1);
nel = document.getElementById("o"+ndown+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor left from orange
var nleft = Number(row) + 1;
do { if (nleft <= 0) { nleft = Math.abs(Number(nleft) + Number(graphlen)); } if (nleft >= onemore) { nleft = Math.abs(Number(nleft) - Number(graphlen)); } } while (nleft > Number(graphlen) || nleft < 1);
nel = document.getElementById("o"+cup+"o"+nleft);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor right from orange
var nright = Number(row) - 1;
do { if (nright <= 0) { nright = Math.abs(Number(nright) + Number(graphlen)); } if (nright >= onemore) { nright = Math.abs(Number(nright) - Number(graphlen)); } } while (nright > Number(graphlen) || nright < 1);
nel = document.getElementById("o"+cup+"o"+nright);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
if (purpleTouch && !greenTouch) {
cu = "0";
cus = "silver"; // Leap for purple
}
}
}
}
else {
cl === '2';
}
if(cright > 0 && cright < onemore){
cr = document.getElementById("o"+col+"o"+cright).innerHTML;
crs = document.getElementById("o"+col+"o"+cright).style.color;
//<!--extendeds purple (takes)-->
if (Number(gen) >= 2 && crs === "orange") {
var purpleTouch = false;
var greenTouch = false;
var pcup = document.getElementById("o"+cright+"o"+row); // Self orange
if (pcup && pcup.style.color !== "green") { // Safe self
// Neighbor up from orange
var nup = Number(cup) - 1;
do { if (nup <= 0) { nup = Math.abs(Number(nup) + Number(graphlen)); } if (nup >= onemore) { nup = Math.abs(Number(nup) - Number(graphlen)); } } while (nup > Number(graphlen) || nup < 1);
var nel = document.getElementById("o"+nup+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor down from orange
var ndown = Number(cup) + 1;
do { if (ndown <= 0) { ndown = Math.abs(Number(ndown) + Number(graphlen)); } if (ndown >= onemore) { ndown = Math.abs(Number(ndown) - Number(graphlen)); } } while (ndown > Number(graphlen) || ndown < 1);
nel = document.getElementById("o"+ndown+"o"+row);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor left from orange
var nleft = Number(row) + 1;
do { if (nleft <= 0) { nleft = Math.abs(Number(nleft) + Number(graphlen)); } if (nleft >= onemore) { nleft = Math.abs(Number(nleft) - Number(graphlen)); } } while (nleft > Number(graphlen) || nleft < 1);
nel = document.getElementById("o"+cup+"o"+nleft);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
// Neighbor right from orange
var nright = Number(row) - 1;
do { if (nright <= 0) { nright = Math.abs(Number(nright) + Number(graphlen)); } if (nright >= onemore) { nright = Math.abs(Number(nright) - Number(graphlen)); } } while (nright > Number(graphlen) || nright < 1);
nel = document.getElementById("o"+cup+"o"+nright);
if (nel && nel.style.color === "purple") { purpleTouch = true; }
if (nel && nel.style.color === "green") { greenTouch = true; }
if (purpleTouch && !greenTouch) {
cu = "0";
cus = "silver"; // Leap for purple
}
}
}
}
else {
cr === '2';
}
if(countme === 0){ <!-- inital click -->
document.getElementById('display').innerHTML = "</br></br>Good&nbsp;Luck</br>";
document.getElementById('numof').innerHTML = "AT or ABOVE";
document.getElementById(id).style = "color:green";
document.getElementById(id).innerHTML = "&#9633";
document.getElementById('counting').innerHTML = Number(cc) + 1;
document.getElementById('bank').innerHTML = Number(document.getElementById('bank').innerHTML) + 1;
if(cu === "0" && cus === "silver"){
document.getElementById("o"+cup+"o"+row).style = "color:blue";
document.getElementById("o"+cup+"o"+row).innerHTML = tempcount;
tempcount = Number(tempcount) + 1;
}
if(cl === "0" && cls === "silver"){
document.getElementById("o"+col+"o"+cleft).style = "color:blue";
document.getElementById("o"+col+"o"+cleft).innerHTML = tempcount;
tempcount = Number(tempcount) + 1;
}
if(cd === "0" && cds === "silver"){
document.getElementById("o"+cdown+"o"+row).style = "color:blue";
document.getElementById("o"+cdown+"o"+row).innerHTML = tempcount;
tempcount = Number(tempcount) + 1;
}
if(cr === "0" && crs === "silver"){
document.getElementById("o"+col+"o"+cright).style = "color:blue";
document.getElementById("o"+col+"o"+cright).innerHTML = tempcount;
tempcount = Number(tempcount) + 1;
}
opensides = Number(tempcount);
countme = Number(toggle) + Number(opensides);
document.getElementById('pointer').innerHTML = countme;
document.getElementById('nulle').innerHTML = id.split(/o/gm)[2] + ",";
document.getElementById('nulli').innerHTML = id.split(/o/gm)[1] + ",";
document.getElementById('nulle1').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulli1').innerHTML = id.split(/o/gm)[1] + ",";
document.getElementById('nulle2').innerHTML = id.split(/o/gm)[2] + ",";
document.getElementById('nulli2').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulli3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ","; //adj row adj col
document.getElementById('nulli4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulle5').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ","; //nom row adj col
document.getElementById('nulli5').innerHTML = id.split(/o/gm)[1] + ",";
document.getElementById('nulle6').innerHTML = id.split(/o/gm)[2] + ","; //adj row nom col
document.getElementById('nulli6').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle7').innerHTML = id.split(/o/gm)[1] + ","; //flipped row/col from og setup
document.getElementById('nulli7').innerHTML = id.split(/o/gm)[2] + ",";
document.getElementById('newe').innerHTML = id.split(/o/gm)[2] + "[";
document.getElementById('newi').innerHTML = id.split(/o/gm)[1] + "[";
document.getElementById('newe1').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + "[";
document.getElementById('newi1').innerHTML = id.split(/o/gm)[1] + "[";
document.getElementById('newe2').innerHTML = id.split(/o/gm)[2] + "[";
document.getElementById('newi2').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + "[";
document.getElementById('newe3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + "[";
document.getElementById('newi3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + "[";
document.getElementById('newe4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + "["; //adj row adj col
document.getElementById('newi4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + "[";
document.getElementById('newe5').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + "["; //nom row adj col
document.getElementById('newi5').innerHTML = id.split(/o/gm)[1] + "[";
document.getElementById('newe6').innerHTML = id.split(/o/gm)[2] + "["; //adj row nom col
document.getElementById('newi6').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + "[";
document.getElementById('newe7').innerHTML = id.split(/o/gm)[1] + "[";
document.getElementById('newi7').innerHTML = id.split(/o/gm)[2] + "[";
for(teeth = 0; teeth <= 7; teeth++){ <!-- caps visual bracket (used in filtering) -->
if(teeth === 0){
document.getElementById('esep').innerHTML = "]";
document.getElementById('isep').innerHTML = "]";
}
else{
document.getElementById('esep'+teeth).innerHTML = "]";
document.getElementById('isep'+teeth).innerHTML = "]";
}
}
document.getElementById('endi').innerHTML = Number(id.split(/o/gm)[1]);
document.getElementById('ende').innerHTML = Number(id.split(/o/gm)[2]);
document.getElementById('ende1').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1);
document.getElementById('endi1').innerHTML = Number(id.split(/o/gm)[1]);
document.getElementById('ende2').innerHTML = Number(id.split(/o/gm)[2]);
document.getElementById('endi2').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1);
document.getElementById('endi3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1);
document.getElementById('ende3').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1);
document.getElementById('endi4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1); //adj row adj col
document.getElementById('ende4').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1);
document.getElementById('endi5').innerHTML = Number(id.split(/o/gm)[1]); //nom row adj col
document.getElementById('ende5').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1);
document.getElementById('endi6').innerHTML = Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1); //adj row nom col
document.getElementById('ende6').innerHTML = Number(id.split(/o/gm)[2]);
document.getElementById('endi7').innerHTML = Number(id.split(/o/gm)[2]);
document.getElementById('ende7').innerHTML = Number(id.split(/o/gm)[1]);
document.getElementById('lengthis').innerHTML = 1;
finder(id.split(/o/gm)[2],id.split(/o/gm)[1],gen);
}
else{
document.getElementById('display').innerHTML = " Your Length so far is: "+document.getElementById('lengthis').innerHTML+"</br></br> &nbsp; Alt-Moves found so far are: "+document.getElementById('altsare').innerHTML+" </br></br>";
document.getElementById('numof').innerHTML = "ABOVE";
if(gen >= 1){ //this should keep that above CC for non-null generations running through
var hym1 = Math.abs(Number(that) - Number(cc));
that = Math.abs(Number(that) + Number(Number(hym1) + 1));
}
if(Number(that) <= toggle && at !== /(green|rgba\(175\,\d+\,175\,\d\))/ && Number(that) >= Number(cc)){ //add in the new open-box colors as needed
var colorbe = '';
if(gen >= 1){ //generational color rules
var colormod = Math.abs(47 - Number(Math.abs(Number(gen)*1.314).toString().split(/\./g)[0]));
colorbe = "color:rgba(175,"+colormod+",175,1)";
}
//as you add in more color rules, add that color to the at !== list above this
else{ //this should always be the last resort which is first pick (gen0)
colorbe = "color:green";
}
document.getElementById(id).style = colorbe; //picks based on color rules
document.getElementById(id).innerHTML = "&#9633";
if(gen === 0){ //we only want to consider new placements by user as this, all others should keep within it's counted limit
document.getElementById('counting').innerHTML = Number(that);
document.getElementById('bank').innerHTML = Number(that);
if(cu === "0" && gen === 0){ //keep double gen check
document.getElementById("o"+cup+"o"+row).style = "color:blue";
document.getElementById("o"+cup+"o"+row).innerHTML = tempcount + Number(toggle - 1);
tempcount = Number(tempcount) + 1;
}
if(cl === "0" && gen === 0){ //keep double gen check
document.getElementById("o"+col+"o"+cleft).style = "color:blue";
document.getElementById("o"+col+"o"+cleft).innerHTML = tempcount + Number(toggle - 1);
tempcount = Number(tempcount) + 1;
}
if(cd === "0" && gen === 0){ //keep double gen check
document.getElementById("o"+cdown+"o"+row).style = "color:blue";
document.getElementById("o"+cdown+"o"+row).innerHTML = tempcount + Number(toggle - 1);
tempcount = Number(tempcount) + 1;
}
if(cr === "0" && gen === 0){ //keep double gen check
document.getElementById("o"+col+"o"+cright).style = "color:blue";
document.getElementById("o"+col+"o"+cright).innerHTML = tempcount + Number(toggle - 1);
}
opensides = Number(tempcount);
document.getElementById('sc').innerHTML = Number(document.getElementById('lengthis').innerHTML); // Set sc to current length for sim depth
countme = Number(toggle) + Number(opensides);
document.getElementById('pointer').innerHTML = countme;
var pree = document.getElementById('nulle').innerHTML;
var prei = document.getElementById('nulli').innerHTML;
preendi = document.getElementById('endi').innerHTML;
preende = document.getElementById('ende').innerHTML;
var pree1 = document.getElementById('nulle1').innerHTML;
var prei1 = document.getElementById('nulli1').innerHTML;
preendi1 = document.getElementById('endi1').innerHTML;
preende1 = document.getElementById('ende1').innerHTML;
var pree2 = document.getElementById('nulle2').innerHTML;
var prei2 = document.getElementById('nulli2').innerHTML;
preendi2 = document.getElementById('endi2').innerHTML;
preende2 = document.getElementById('ende2').innerHTML;
var pree3 = document.getElementById('nulle3').innerHTML;
var prei3 = document.getElementById('nulli3').innerHTML;
preendi3 = document.getElementById('endi3').innerHTML;
preende3 = document.getElementById('ende3').innerHTML;
var pree4 = document.getElementById('nulle4').innerHTML;
var prei4 = document.getElementById('nulli4').innerHTML;
preendi4 = document.getElementById('endi4').innerHTML;
preende4 = document.getElementById('ende4').innerHTML;
var pree5 = document.getElementById('nulle5').innerHTML;
var prei5 = document.getElementById('nulli5').innerHTML;
preendi5 = document.getElementById('endi5').innerHTML;
preende5 = document.getElementById('ende5').innerHTML;
var pree6 = document.getElementById('nulle6').innerHTML;
var prei6 = document.getElementById('nulli6').innerHTML;
preendi6 = document.getElementById('endi6').innerHTML;
preende6 = document.getElementById('ende6').innerHTML;
var pree7 = document.getElementById('nulle7').innerHTML;
var prei7 = document.getElementById('nulli7').innerHTML;
preendi7 = document.getElementById('endi7').innerHTML;
preende7 = document.getElementById('ende7').innerHTML;
document.getElementById('nulle').innerHTML += id.split(/o/gm)[2] + ",";
document.getElementById('nulli').innerHTML += id.split(/o/gm)[1] + ",";
document.getElementById('nulle1').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulli1').innerHTML += id.split(/o/gm)[1] + ",";
document.getElementById('nulle2').innerHTML += id.split(/o/gm)[2] + ",";
document.getElementById('nulli2').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle3').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulli3').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle4').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ","; //adj row adj col
document.getElementById('nulli4').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ",";
document.getElementById('nulle5').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) + ","; //nom row adj col
document.getElementById('nulli5').innerHTML += id.split(/o/gm)[1] + ",";
document.getElementById('nulle6').innerHTML += id.split(/o/gm)[2] + ","; //adj row nom col
document.getElementById('nulli6').innerHTML += Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) + ",";
document.getElementById('nulle7').innerHTML += id.split(/o/gm)[1] + ","; + ",";
document.getElementById('nulli7').innerHTML += id.split(/o/gm)[2] + ",";
document.getElementById('newi').innerHTML += Number(Number(id.split(/o/gm)[1]) - Number(prei.split(/\,/gm)[huh])) + ",";
document.getElementById('newe').innerHTML += Number(Number(id.split(/o/gm)[2]) - Number(pree.split(/\,/gm)[huh])) + ",";
document.getElementById('newi1').innerHTML += Number(Number(id.split(/o/gm)[1]) - Number(prei1.split(/\,/gm)[huh])) + ",";
document.getElementById('newe1').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(pree1.split(/\,/gm)[huh])) + ",";
document.getElementById('newi2').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(prei2.split(/\,/gm)[huh])) + ",";
document.getElementById('newe2').innerHTML += Number(Number(id.split(/o/gm)[2]) - Number(pree2.split(/\,/gm)[huh])) + ",";
document.getElementById('newi3').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(prei3.split(/\,/gm)[huh])) + ",";
document.getElementById('newe3').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(pree3.split(/\,/gm)[huh])) + ",";
document.getElementById('newi4').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(prei4.split(/\,/gm)[huh])) + ","; //adj row adj col
document.getElementById('newe4').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(pree4.split(/\,/gm)[huh])) + ",";
document.getElementById('newi5').innerHTML += Number(Number(id.split(/o/gm)[1]) - Number(prei5.split(/\,/gm)[huh])) + ","; //nom row adj col
document.getElementById('newe5').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(pree5.split(/\,/gm)[huh])) + ",";
document.getElementById('newi6').innerHTML += Number(Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(prei6.split(/\,/gm)[huh])) + ","; //adjust row norm col
document.getElementById('newe6').innerHTML += Number(Number(id.split(/o/gm)[2]) - Number(pree6.split(/\,/gm)[huh])) + ",";
document.getElementById('newi7').innerHTML += Number(Number(id.split(/o/gm)[2]) - Number(prei7.split(/\,/gm)[huh])) + ",";
document.getElementById('newe7').innerHTML += Number(Number(id.split(/o/gm)[1]) - Number(pree7.split(/\,/gm)[huh])) + ",";
document.getElementById('endi').innerHTML = Number(Number(preendi) + Number(Number(id.split(/o/gm)[1]) - Number(prei.split(/\,/gm)[huh])));
document.getElementById('ende').innerHTML = Number(Number(preende) + Number(Number(id.split(/o/gm)[2]) - Number(pree.split(/\,/gm)[huh])));
document.getElementById('endi1').innerHTML = Number(Number(preende1) + Number(id.split(/o/gm)[1]) - Number(pree1.split(/\,/gm)[huh]));
document.getElementById('ende1').innerHTML = Number(Number(preendi1) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(prei1.split(/\,/gm)[huh]));
document.getElementById('ende2').innerHTML = Number(Number(preendi2) + Number(id.split(/o/gm)[2]) - Number(prei2.split(/\,/gm)[huh]));
document.getElementById('endi2').innerHTML = Number(Number(preende2) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(pree2.split(/\,/gm)[huh]));
document.getElementById('ende3').innerHTML = Number(Number(preende3) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(pree3.split(/\,/gm)[huh]));
document.getElementById('endi3').innerHTML = Number(Number(preendi3) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(prei3.split(/\,/gm)[huh]));
document.getElementById('ende4').innerHTML = Number(Number(preende4) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(pree4.split(/\,/gm)[huh])); //adj row adj col
document.getElementById('endi4').innerHTML = Number(Number(preendi4) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(prei4.split(/\,/gm)[huh]));
document.getElementById('ende5').innerHTML = Number(Number(preende5) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[2]))+1) - Number(pree5.split(/\,/gm)[huh])); //nom row adj col
document.getElementById('endi5').innerHTML = Number(preendi5) + Number(Number(id.split(/o/gm)[1]) - Number(prei5.split(/\,/gm)[huh]));
document.getElementById('ende6').innerHTML = Number(Number(preende6) + Number(id.split(/o/gm)[2]) - Number(pree6.split(/\,/gm)[huh])); //adjusted row norm col
document.getElementById('endi6').innerHTML = Number(Number(preendi6) + Number(Number(Number(graphlen)-Number(id.split(/o/gm)[1]))+1) - Number(prei6.split(/\,/gm)[huh]));
document.getElementById('ende7').innerHTML = Number(Number(preende7) + Number(id.split(/o/gm)[1]) - Number(pree7.split(/\,/gm)[huh]));
document.getElementById('endi7').innerHTML = Number(Number(preendi7) + Number(id.split(/o/gm)[2]) - Number(prei7.split(/\,/gm)[huh]));
huh = Number(huh)+1;
document.getElementById('lengthis').innerHTML = document.getElementById('newe').innerHTML.toString().split(/\,/gm).length;
finder(id.split(/o/gm)[2],id.split(/o/gm)[1],gen);
} //end if gen === 0
if(gen >= 1){
finder(id.split(/o/gm)[1],id.split(/o/gm)[2],gen);
}
}
}
var pid = "p"+Number(col)+"p"+Number(Number(Number(graphlen)-row)+1), qid = "q"+Number(Number(Number(graphlen)-col)+1)+"q"+row, rid = "r"+Number(Number(Number(graphlen)-col)+1)+"r"+Number(Number(Number(graphlen)-row)+1), aid = "a"+Number(Number(Number(graphlen)-row)+1)+"a"+Number(Number(Number(graphlen)-col)+1), bid = "b"+row+"b"+Number(Number(Number(graphlen)-col)+1), cid = "c"+Number(Number(Number(graphlen)-row)+1)+"c"+Number(col), did = "d"+Number(row)+"d"+Number(col), fid = "f"+Number(col)+"f"+Number(row);
if(document.getElementById(id).style.color === "green" && document.getElementById(id).innerHTML === "□"){<!-- reflections clicks here -->
var colorpicker = '';
if(gen >= 3){ //for some reason 3 is the magic number for real algo-pushes!
colorpicker = "purple"; //gen1
}
//as more click colors are added, add them into the list in the if statement following this
else{
colorpicker = "green"; //gen0
}
document.getElementById(pid).style.color = colorpicker;
document.getElementById(pid).innerHTML = "&#9633";
document.getElementById(qid).style.color = colorpicker;
document.getElementById(qid).innerHTML = "&#9633";
document.getElementById(rid).style.color = colorpicker;
document.getElementById(rid).innerHTML = "&#9633";
document.getElementById(aid).style.color = colorpicker;
document.getElementById(aid).innerHTML = "&#9633";
document.getElementById(bid).style.color = colorpicker;
document.getElementById(bid).innerHTML = "&#9633";
document.getElementById(cid).style.color = colorpicker;
document.getElementById(cid).innerHTML = "&#9633";
document.getElementById(did).style.color = colorpicker;
document.getElementById(did).innerHTML = "&#9633";
document.getElementById(fid).style.color = colorpicker;
document.getElementById(fid).innerHTML = "&#9633";
}
//tryagain popup
document.getElementById('pagehr').style.visibility = "hidden";
document.getElementById('notes').innerHTML = "<span id='tryagain' ></br></br></br></br><hr><h4><i>You May Keep Finding Shapes by Increasing your Graph or just <b>Clear the Graphs</b></i></h4></br><input id='uinp' title='Increase your Graph with the Input & Start Button' placeholder='Input a Graph Length' style='text-align:center;' oninput='this.value=this.value.replace(/[^0-9]/gim,&#034;&#034;);' /><button id='start' onclick='document.getElementById(&#034;pagehr&#034;).style.visibility=&#034;visible&#034;;document.getElementById(&#034;history&#034;).innerHTML=document.getElementById(&#034;uinp&#034;).value;document.getElementById(&#034;am&#034;).innerHTML=&#034;&#034;;document.getElementById(&#034;rh&#034;).innerHTML=&#034;&#034;;document.getElementById(&#034;sc&#034;).innerHTML=1;beginbrosiv();document.getElementById(&#034;pointer&#034;).innerHTML=0;document.getElementById(&#034;tryagain&#034;).remove();'>Start</button></br></br></br></br><button id='cleargraphs' onclick='document.getElementById(&#034;pagehr&#034;).style.visibility=&#034;visible&#034;;document.getElementById(&#034;am&#034;).innerHTML=&#034;&#034;;document.getElementById(&#034;rh&#034;).innerHTML=&#034;&#034;;document.getElementById(&#034;sc&#034;).innerHTML=1;beginbrosiv();document.getElementById(&#034;pointer&#034;).innerHTML=0;document.getElementById(&#034;tryagain&#034;).remove();this.remove();' title='Use this single button to just clear the graphs & keep on keeping-on' >Just&nbsp;Clear&nbsp;the&nbsp;Graphs</button></br></br><hr></br></br></br></span>";
}
//BUG FOUND [UNKNOWN WHERE BUG IS AT SPECIFICALLY]: SYSTEM TAKES A SPOT THAT IS ALREADY GREEN, THE SYSTEM SHOULD NOT TAKE GREEN SPOTS BUT SPOTS AROUND THE GREEN AS NEW MOVES
function finder(id0,id1,gen){
var ngen = document.getElementById('sc').innerHTML; //initiator
var l2r = document.getElementById('nulle').innerHTML.toString().split(/\,/gm);
var u2d = document.getElementById('nulli').innerHTML.toString().split(/\,/gm);
var groupings = [];
var refcheck = document.getElementById('reflections').innerHTML;
//nulli is left-2-right === id0
//nulle is up-2-down === id1
if(l2r[0] === id0 && u2d[0] === id1 && document.getElementById('duff').innerHTML.toString().search("L1") < 0){ <!-- 1st move detected -->
document.getElementById('duff').innerHTML += "&nbsp;<span onclick='checker(1)'><span id='l1' onclick='checker(1)' title='Click to View Found Length-1 OMNI' >L1</span><span id='hl1' style='display:none' >"+id0+"[,]"+id0+"!"+id1+"[,]"+id1+"</span>&nbsp;(<span id='l1v' title='All L1 OMNI Found' style='color:gold' >1</span>)</span>&nbsp;";
}
else{ <!--all other moves-->
var len = document.getElementById('lengthis').innerHTML;
var griff = 0;
do{
var temped = '', tamped = '', rubbish = '', huff = '', nothuff = '';
if(griff === 0 || gen >= 1){ //initial move placement
temped = document.getElementById('newi').innerHTML.split(/\[/)[1] + "!" + document.getElementById('newe').innerHTML.split(/\[/)[1];
var goof1 = '', goof2 = '', sauce = 0, cheese = 0;
if(gen >= 1){ //generation 1 reflow
griff = 7;
goof1 = document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/)[0].split(/\,/g).length - 2;
goof2 = document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g).length - 2;
sauce = Number(id0) - Number(Number(document.getElementById('endi').innerHTML) - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[goof1]));
cheese = Number(id1) - Number(Number(document.getElementById('ende').innerHTML) - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[goof2]));
}
else{
goof1 = document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/)[0].split(/\,/g).length - 1;
goof2 = document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g).length - 1;
}
var nei = '', nee = '';
for(g = 0; g < goof1; g++){
nei += Number(0 - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[g])) + ",";
}
for(g = 0; g < goof2; g++){
nee += Number(0 - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[g])) + ",";
}
if(gen >= 1){ //should be missing piece info
nei += sauce;
nee += cheese;
}
tamped = nei + "!" + nee; //smoothered in sauce & cheese
huff = document.getElementById('newe').innerHTML.toString().split(/\[/)[1] + "!" + document.getElementById('newi').innerHTML.toString().split(/\[/)[1];
nothuff = nee + "!" + nei;
}
else{ //all others
temped = document.getElementById('newi'+griff).innerHTML.split(/\[/)[1].replace(/\,{2}/gm, '') + "!" + document.getElementById('newe'+griff).innerHTML.split(/\[/)[1].replace(/\,{2}/gm, '');
var goof1 = document.getElementById('newi'+griff).innerHTML.split(/\[/)[1].split(/\,{2}/)[0].split(/\,/g).length - 1;
var goof2 = document.getElementById('newe'+griff).innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g).length - 1;
var nei = '', nee = '';
for(g = 0; g < goof1; g++){
nei += Number(0 - Number(document.getElementById('newi'+griff).innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[g])) + ",";
}
for(g = 0; g < goof2; g++){
nee += Number(0 - Number(document.getElementById('newe'+griff).innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[g])) + ",";
}
tamped = nei + "!" + nee;
huff = document.getElementById('newe'+griff).innerHTML.toString().split(/\[/)[1] + "!" + document.getElementById('newi'+griff).innerHTML.toString().split(/\[/)[1];
nothuff = nee + "!" + nei;
}
if (document.getElementById('am').innerHTML.search(/\!\d/g) >= 0 && Number(gen) < Number(document.getElementById('sc').innerHTML)) {
finder(id, Number(gen) + 1); // Recurse for next depth level
}
<!-- next adds to reflections list -->
if(document.getElementById('reflections').innerHTML.toString().search(temped) < 0 && document.getElementById('reflections').innerHTML.toString().search(huff) < 0){
if(document.getElementById('reflections').innerHTML.toString().search(tamped) < 0 && document.getElementById('reflections').innerHTML.toString().search(nothuff) < 0){
if(griff === 0){
rubbish = document.getElementById('newi').innerHTML.toString() + "]" + document.getElementById('endi').innerHTML + "!" + document.getElementById('newe').innerHTML.toString() + "]" + document.getElementById('ende').innerHTML;
}
else{
rubbish = "!!" + document.getElementById('newi'+griff).innerHTML.toString() + "]" + document.getElementById('endi'+griff).innerHTML + "!" + document.getElementById('newe'+griff).innerHTML.toString() + "]" + document.getElementById('ende'+griff).innerHTML;
}
groupings.push(rubbish);
document.getElementById('reflections').innerHTML += ", " + temped + ", " + tamped + ", " + huff + ", " + nothuff;
}
}
griff = Number(griff) + 1; //keep the grift going
}while(griff <= 7);
griff = 0; //griff reset
//BUG FOUND ABSOLUTE OPPOSITES ARE PLACED WHEN THEY SHOULD ONLY BE REFLECTIONS SOMETIMES DOES NOT HAPPEN
if(document.getElementById('duff').innerHTML.search('L'+len) === Number(-1)){ //must not be present already
document.getElementById('duff').innerHTML += "&nbsp;<span onclick='checker("+len+")'><span id='l"+len+"' title='Click to View Found Length-"+len+" OMNI' >L"+len+"</span><span id='hl"+len+"' style='display:none' >"+groupings+"</span>&nbsp;(<span id='l"+len+"v' title='Number of L"+len+" OMNI Found' style='color:white'>"+groupings.length+"</span>)</span>&nbsp;";
if(Number(document.getElementById('lengthis').innerHTML % 5) === 0){ <!-- only allows up to 5 Length Notifiers per line at bottom of page -->
document.getElementById('duff').innerHTML += "</br></br>";
}
}
else{ //if the size exist, just add it in!
if(document.getElementById('l'+len+'v').style.color !== "gold" && document.getElementById('hl'+len).innerHTML.toString().search(groupings) < 0){ //only add in new data to the L# section
document.getElementById('hl'+len).innerHTML += "!!" + groupings;
wasnum = document.getElementById('hl'+len).innerHTML.toString().match(/\!{2}/g).length;
document.getElementById('l'+len+'v').innerHTML = Math.abs(Number(wasnum) + 1);
wasnum = 0;
}
}
}
if(document.getElementById('duff').innerHTML.split(/\W\Wnbsp\W/gm).length > 3){ //looks for L2+ threshold
if(document.getElementById('hl2').innerHTML.split(/\!/gm).length >= 1){ <!-- specifically finds if all dominoies were found -->
document.getElementById('l2v').style.color = 'gold';
document.getElementById('l2v').title = 'All L2 OMNI Found';
}
if(document.getElementById('duff').innerHTML.split(/\W\Wnbsp\W/gm).length > 5){ //looks for L3+ threshold
// <!-- below are the pushes -->
var temprep = ""+id0+"!"+id1+""; //<!-- basic push first var setup (blank_A!B_blank) -->
push(temprep,gen); //<!-- pushes -->
if(document.getElementById('am').innerHTML.search(/\!\d/g) >= 0 && Number(gen) <= Number(document.getElementById('sc').innerHTML)){
if(document.getElementById('am').innerHTML.toString().search(/\!/gm) >= 0){
do{
var jimpuff = document.getElementById('am').innerHTML;
var janepuff = document.getElementById('rh').innerHTML;
var jplen = jimpuff.split(/\!{2}/g).length;
var tprep = "o"+jimpuff.split(/\!{2}/g)[1].split(/\+/)[0]+"o"+jimpuff.split(/\!{2}/g)[1].split(/\+/)[1].split(/\!/)[0]+"";
document.getElementById('rh').innerHTML += "!!" + ""+jimpuff.split(/\!{2}/g)[1].split(/\+/)[0]+"+"+jimpuff.split(/\!{2}/g)[1].split(/\+/)[1].split(/\!/)[0]+"" + "";
ngen = Number(gen) + Number(document.getElementById('sc').innerHTML);
document.getElementById('sc').innerHTML = ngen;
colorme(tprep,ngen); <!-- algo-move pushes -->
document.getElementById('am').innerHTML = jimpuff.replace("!!"+jimpuff.split(/\!{2}/g)[1], ""); //remove what we just "did"
}while(document.getElementById('am').innerHTML.search(/\!/) >= 0);
document.getElementById('sc').innerHTML = 1; //sc reset
}
} //if am not empty end
if (document.getElementById('am').innerHTML.search(/\!\d/g) >= 0 && Number(gen) < Number(document.getElementById('sc').innerHTML)) {
finder(id, Number(gen) + 1); // reaching for Deeper levels
//we are not going deeper to old spots we've seen, this should happen
//BUG FOUND SYSTEM TAKES DOESN'T EXPAND ON ALL OLD PURPLE POISITIONS WHEN POSSIBLE TO IN THE FUTURE BUT DOES CONTINUE TO LOOK FOR NEW POSSIBLE MISSED MOVES
//deeper pushes are only seen in the reflections sections to help readability on the user's end
}
//document.getElementById('notes').innerHTML = ""+jimpuff.split(/\!{2}/g)[jp].split(/\+/)[0]+""+jimpuff.split(/\!{2}/g)[jp].split(/\+/)[1]+""; //debugger
//<!--below this is looking for all of a Length-->
if(document.getElementById('hl3').innerHTML.split(/\!/gm).length >= 3){ //<!-- specifically finds if all triominoes were found -->
document.getElementById('l3v').style.color = 'gold';
document.getElementById('l3v').title = 'All L3 OMNI Found';
}
//add in lext Length check for all there should be a mathematical way to determine if full
//might use wiki for the first 12 (cause they have total sums listed but we only want when new shapes not reflections)
//BUG FOUND NOT ALL CAPS ARE MATHEMATICALLY DETERMINED WHEN THEY SHOULD BE, FIND A WAY MATHS TO DETERMINE POSSIBLE CAP OF L# LENGTH AND ADD IN A WAY TO SHOW WE'VE SURPASSED POSSIBLE CAP (SHOWING POSSIBLY NEW SHAPES)
} //end of L3+ look
document.getElementById('display').innerHTML = " Your Length so far is: "+document.getElementById('lengthis').innerHTML+"</br></br> &nbsp; Alt-Moves found so far are: "+document.getElementById('altsare').innerHTML+" </br></br>";
} //end of L2+ look
} //end of finder funciton
function checker(len){// <!-- views stored OMNIs -->
var lener = document.getElementById('lengthis').innerHTML;
//<!-- automated push below -->
document.getElementById('display').innerHTML = "<h3><hr style='width:25vw'>L"+len+" OMNI:</h3></br>"+document.getElementById('hl'+len).innerHTML.toString().replace(/\[/gm, '[<span id='+len+' title=MOVE_MADE >').replace(/\,/gm, '</span>,<span id='+len+' title=MOVE_MADE >').replace(/\]/gm, '</span>]').replace(/\!/gm, "</br>")+"<hr style='width:25vw'><button onclick='document.getElementById(&#034;display&#034;).innerHTML=&#034;Your Length so far is: "+lener+" &#034;;'>close</button></br>";
//<!-- user push below -->
//document.getElementById('display').innerHTML = "<h3><hr style='width:25vw'>L"+len+" OMNI:</h3></br>"+document.getElementById('hl'+len).innerHTML.toString().replace(/\[/gm, '[<span id='+len+' onclick=push(this.innerHTML) title=CLICK_2_PUSH >').replace(/\,/gm, '</span>,<span id='+len+' onclick=push(this.innerHTML) title=CLICK_2_PUSH >').replace(/\]/gm, '</span>]').replace(/\!/gm, "</br>")+"<hr style='width:25vw'><button onclick='document.getElementById(&#034;display&#034;).innerHTML=&#034;Your Length so far is: "+lener+" &#034;;'>close</button></br>";
//BUG FOUND USER PUSH NEVER WORKED PROPERLY WAS COMMENTED OUT FOR NOW
}
function push(insides,gen){ //insides === X ! Y
document.getElementById('display').innerHTML = "Checking for alternative moves...";
var graphlen = document.getElementById('history').innerHTML;
var oneplus = Number(document.getElementById('history').innerHTML) + 1;
var roundcheck = document.getElementById('rc').innerHTML;
var alpha = 1, tick = 0, colorguide = '';
if(gen === 0){
var x = insides.split(/\!/g)[0];
var y = insides.split(/\!/g)[1];
}
if(gen >= 1){
var x = insides.split(/\!/g)[1];
var y = insides.split(/\!/g)[0];
}
var xpush0 = 0, ypush0 = 0, xpush1 = -1, ypush1 = -1, xpush2 = 1, ypush2 = 1;
var check1 = 0, check2 = 0, check3 = 0, check4 = 0, check5 = 0, check6 = 0, check7 = 0, check8 = 0, wasnum = '';
var newcolor = Math.abs(107 - Number(Math.abs(Number(gen) + 13.69).toString().split(/\./g)[0]));
if(gen >= 1){
colorguide = "purple"; //gen1 [purple]
}
else{
colorguide = "orange"; //gen0 [ornage]
}
check1 = Math.abs(Number(check1) + Number(x) + Number(xpush1));
check2 = Math.abs(Number(check2) + Number(y) + Number(ypush1));
<!-- the above checks top left -->
var qcheck1a = Math.abs(Number(check1)+1);
var qcheck2a = Math.abs(Number(check2)+1);
var qcheck1b = Math.abs(Number(check1)-1);
var qcheck2b = Math.abs(Number(check2)-1);
check3 = Math.abs(Number(check3) + Number(x) + Number(xpush2));
check4 = Math.abs(Number(check4) + Number(y) + Number(ypush2));
<!-- the above checks top right -->
var qcheck3a = Math.abs(Number(check3)+1);
var qcheck4a = Math.abs(Number(check4)+1);
var qcheck3b = Math.abs(Number(check3)-1);
var qcheck4b = Math.abs(Number(check4)-1);
check5 = Math.abs(Number(check5) + Number(x) + Number(xpush1));
check6 = Math.abs(Number(check6) + Number(y) + Number(ypush2));
<!-- the above checks bottom left -->
var qcheck5a = Math.abs(Number(check5)+1);
var qcheck6a = Math.abs(Number(check6)+1);
var qcheck5b = Math.abs(Number(check5)-1);
var qcheck6b = Math.abs(Number(check6)-1);
check7 = Math.abs(Number(check7) + Number(x) + Number(xpush2));
check8 = Math.abs(Number(check8) + Number(y) + Number(ypush1));
<!-- the above checks bottom right -->
var qcheck7a = Math.abs(Number(check7)+1);
var qcheck8a = Math.abs(Number(check8)+1);
var qcheck7b = Math.abs(Number(check7)-1);
var qcheck8b = Math.abs(Number(check8)-1);
var herebe = document.getElementById('lengthis').innerHTML;
var wherebe = 'hl'+herebe, wasbe = '', waslen = '', tolen = '', haslen = '', washas = '', growto = 'l'+herebe+'v';
do{
if(check1 <= 0){
check1 = Math.abs(Number(check1) + Number(graphlen));
}
if(check1 >= oneplus){
check1 = Math.abs(Number(check1) - Number(graphlen));
}
}while(check1 > Number(graphlen) || check1 < 1);
do{
if(check2 <= 0){
check2 = Math.abs(Number(check2) + Number(graphlen));
}
if(check2 >= oneplus){
check2 = Math.abs(Number(check2) - Number(graphlen));
}
}while(check2 > Number(graphlen) || check2 < 1);
do{
if(qcheck1a <= 0){
qcheck1a = Math.abs(Number(qcheck1a) + Number(graphlen));
}
if(qcheck1a >= oneplus){
qcheck1a = Math.abs(Number(qcheck1a) - Number(graphlen));
}
}while(qcheck1a > Number(graphlen) || qcheck1a < 1);
do{
if(qcheck2a <= 0){
qcheck2a = Math.abs(Number(qcheck2a) + Number(graphlen));
}
if(qcheck2a >= oneplus){
qcheck2a = Math.abs(Number(qcheck2a) - Number(graphlen));
}
}while(qcheck2a > Number(graphlen) || qcheck2a < 1);
do{
if(qcheck1b <= 0){
qcheck1b = Math.abs(Number(qcheck1b) + Number(graphlen));
}
if(qcheck1b >= oneplus){
qcheck1b = Math.abs(Number(qcheck1b) - Number(graphlen));
}
}while(qcheck1b > Number(graphlen) || qcheck1b < 1);
do{
if(qcheck2b <= 0){
qcheck2b = Math.abs(Number(qcheck2b) + Number(graphlen));
}
if(qcheck2b >= oneplus){
qcheck2b = Math.abs(Number(qcheck2b) - Number(graphlen));
}
}while(qcheck2b > Number(graphlen) || qcheck2b < 1);
do{
if(check3 <= 0){
check3 = Math.abs(Number(check3) + Number(graphlen));
}
if(check3 >= oneplus){
check3 = Math.abs(Number(check3) - Number(graphlen));
}
}while(check3 > Number(graphlen) || check3 < 1);
do{
if(check4 <= 0){
check4 = Math.abs(Number(check4) + Number(graphlen));
}
if(check4 >= oneplus){
check4 = Math.abs(Number(check4) - Number(graphlen));
}
}while(check4 > Number(graphlen) || check4 < 1);
do{
if(qcheck3a <= 0){
qcheck3a = Math.abs(Number(qcheck3a) + Number(graphlen));
}
if(qcheck3a >= oneplus){
qcheck3a = Math.abs(Number(qcheck3a) - Number(graphlen));
}
}while(qcheck3a > Number(graphlen) || qcheck3a < 1);
do{
if(qcheck4a <= 0){
qcheck4a = Math.abs(Number(qcheck4a) + Number(graphlen));
}
if(qcheck4a >= oneplus){
qcheck4a = Math.abs(Number(qcheck4a) - Number(graphlen));
}
}while(qcheck4a > Number(graphlen) || qcheck4a < 1);
do{
if(qcheck3b <= 0){
qcheck3b = Math.abs(Number(qcheck3b) + Number(graphlen));
}
if(qcheck3b >= oneplus){
qcheck3b = Math.abs(Number(qcheck3b) - Number(graphlen));
}
}while(qcheck3b > Number(graphlen) || qcheck3b < 1);
do{
if(qcheck4b <= 0){
qcheck4b = Math.abs(Number(qcheck4b) + Number(graphlen));
}
if(qcheck4b >= oneplus){
qcheck4b = Math.abs(Number(qcheck4b) - Number(graphlen));
}
}while(qcheck4b > Number(graphlen) || qcheck4b < 1);
do{
if(check5 <= 0){
check5 = Math.abs(Number(check5) + Number(graphlen));
}
if(check5 >= oneplus){
check5 = Math.abs(Number(check5) - Number(graphlen));
}
}while(check5 > Number(graphlen) || check5 < 1);
do{
if(check6 <= 0){
check6 = Math.abs(Number(check6) + Number(graphlen));
}
if(check6 >= oneplus){
check6 = Math.abs(Number(check6) - Number(graphlen));
}
}while(check6 > Number(graphlen) || check6 < 1);
do{
if(qcheck5a <= 0){
qcheck5a = Math.abs(Number(qcheck5a) + Number(graphlen));
}
if(qcheck5a >= oneplus){
qcheck5a = Math.abs(Number(qcheck5a) - Number(graphlen));
}
}while(qcheck5a > Number(graphlen) || qcheck5a < 1);
do{
if(qcheck6a <= 0){
qcheck6a = Math.abs(Number(qcheck6a) + Number(graphlen));
}
if(qcheck6a >= oneplus){
qcheck6a = Math.abs(Number(qcheck6a) - Number(graphlen));
}
}while(qcheck6a > Number(graphlen) || qcheck6a < 1);
do{
if(qcheck5b <= 0){
qcheck5b = Math.abs(Number(qcheck5b) + Number(graphlen));
}
if(qcheck5b >= oneplus){
qcheck5b = Math.abs(Number(qcheck5b) - Number(graphlen));
}
}while(qcheck5b > Number(graphlen) || qcheck5b < 1);
do{
if(qcheck6b <= 0){
qcheck6b = Math.abs(Number(qcheck6b) + Number(graphlen));
}
if(qcheck6b >= oneplus){
qcheck6b = Math.abs(Number(qcheck6b) - Number(graphlen));
}
}while(qcheck6b > Number(graphlen) || qcheck6b < 1);
do{
if(check7 <= 0){
check7 = Math.abs(Number(check7) + Number(graphlen));
}
if(check7 >= oneplus){
check7 = Math.abs(Number(check7) - Number(graphlen));
}
}while(check7 > Number(graphlen) || check7 < 1);
do{
if(check8 <= 0){
check8 = Math.abs(Number(check8) + Number(graphlen));
}
if(check8 >= oneplus){
check8 = Math.abs(Number(check8) - Number(graphlen));
}
}while(check8 > Number(graphlen) || check8 < 1);
do{
if(qcheck7a <= 0){
qcheck7a = Math.abs(Number(qcheck7a) + Number(graphlen));
}
if(qcheck7a >= oneplus){
qcheck7a = Math.abs(Number(qcheck7a) - Number(graphlen));
}
}while(qcheck7a > Number(graphlen) || qcheck7a < 1);
do{
if(qcheck8a <= 0){
qcheck8a = Math.abs(Number(qcheck8a) + Number(graphlen));
}
if(qcheck8a >= oneplus){
qcheck8a = Math.abs(Number(qcheck8a) - Number(graphlen));
}
}while(qcheck8a > Number(graphlen) || qcheck8a < 1);
do{
if(qcheck7b <= 0){
qcheck7b = Math.abs(Number(qcheck7b) + Number(graphlen));
}
if(qcheck7b >= oneplus){
qcheck7b = Math.abs(Number(qcheck7b) - Number(graphlen));
}
}while(qcheck7b > Number(graphlen) || qcheck7b < 1);
do{
if(qcheck8b <= 0){
qcheck8b = Math.abs(Number(qcheck8b) + Number(graphlen));
}
if(qcheck8b >= oneplus){
qcheck8b = Math.abs(Number(qcheck8b) - Number(graphlen));
}
}while(qcheck8b > Number(graphlen) || qcheck8b < 1);
var cname = "o"+check2+"o"+check1;
var qname1a = "o"+qcheck2a+"o"+check1;
var qname2a = "o"+check2+"o"+qcheck1a;
var qname1b = "o"+qcheck2b+"o"+check1;
var qname2b = "o"+check2+"o"+qcheck1b;
var cname2 = "o"+check4+"o"+check3;
var qname3a = "o"+qcheck4a+"o"+check3;
var qname4a = "o"+check4+"o"+qcheck3a;
var qname3b = "o"+qcheck4b+"o"+check3;
var qname4b = "o"+check4+"o"+qcheck3b;
var cname3 = "o"+check6+"o"+check5;
var qname5a = "o"+qcheck6a+"o"+check5;
var qname6a = "o"+check6+"o"+qcheck5a;
var qname5b = "o"+qcheck6b+"o"+check5;
var qname6b = "o"+check6+"o"+qcheck5b;
var cname4 = "o"+check8+"o"+check7;
var qname7a = "o"+qcheck8a+"o"+check7;
var qname8a = "o"+check8+"o"+qcheck7a;
var qname7b = "o"+qcheck8b+"o"+check7;
var qname8b = "o"+check8+"o"+qcheck7b;
wasbe = document.getElementById(wherebe).innerHTML;
waslen = wasbe.split(/\!{2}/).length;
tolen = Number(waslen) - 1;
if(tolen.toString().search(/\-/) >= 0){
tolen = tolen.toString().replace(/\-/, '');
}
wasbe = wasbe.split(/\!{2}/)[0];
haslen = Math.abs(Number(wasbe.split(/\]/)[0].split(/\,/gm).length)); //haslen is real length
washas = Math.abs(Number(haslen) - 2); //2 less than real length
var quiqin = '', kuikin = '', quikin = '', kuiqin = '';
// document.getElementById('notes').innerHTML = wasbe.split(/\]/)[0].split(/\[/)[1].split(/\,/g)[washas]; //debugger
for(sif = 0; sif<washas;sif++){
quiqin += wasbe.split(/\!/)[0].split(/\]/)[0].split(/\[/)[1].split(/\,/g)[sif] + ","; //re-writes insides except last bit
quikin += Number(0 - Number(wasbe.split(/\!/)[0].split(/\]/)[0].split(/\[/)[1].split(/\,/g)[sif])) + ","; //re-writes insides except last bit
if(quikin.search(/\-0/gm) >= 0){
quikin = quikin.replace(/\-0/gm, 0);
}
}
for(qif = 0; qif<washas;qif++){
kuikin += wasbe.split(/\!/)[1].split(/\]/)[0].split(/\[/)[1].split(/\,/g)[qif] + ","; //re-writes insides except last bit
kuiqin += Number(0 - Number(wasbe.split(/\!/)[1].split(/\]/)[0].split(/\[/)[1].split(/\,/g)[qif])) + ","; //re-writes insides except last bit
if(kuiqin.search(/\-0/gm) >= 0){
kuiqin = kuiqin.replace(/\-0/gm, 0);
}
}
if(document.getElementById(cname).innerHTML.toString().search(/\d/) >= 0 && Number(document.getElementById('rc').innerHTML) <= 1 && document.getElementById('l'+document.getElementById('lengthis').innerHTML+'v').style.color !== "gold" || gen >= 1){
if(document.getElementById(qname1a).innerHTML === "□" || document.getElementById(qname2a).innerHTML === "□" || document.getElementById(qname1b).innerHTML === "□" || document.getElementById(qname2b).innerHTML === "□"){
sauce = Number(check2) - Number(Number(document.getElementById('endi').innerHTML) - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
cheese = Number(check1) - Number(Number(document.getElementById('ende').innerHTML) - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
var nohere = ", " + quiqin + "" + sauce + ",!" + kuikin + "" + cheese + ",";
var anihere = ", " + quikin + "" + Number(0 - Number(sauce)) + ",!" + kuiqin + "" + Number(0 - Number(cheese)) + ",";
var nohere2 = ", " + kuikin + "" + cheese + ",!" + quiqin + "" + sauce + ",";
var anihere2 = ", " + kuiqin + "" + Number(0 - Number(cheese)) + ",!" + quikin + "" + Number(0 - Number(sauce)) + ",";
if(document.getElementById('reflections').innerHTML.toString().search(nohere) < 0 && document.getElementById('reflections').innerHTML.toString().search(nohere2) < 0){
document.getElementById(wherebe).innerHTML += "!!" + wasbe.split(/\!/)[0].split(/\[/)[0] + "[" + quiqin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + sauce + "</span>,]" + check2 + "!" + wasbe.split(/\!/)[1].split(/\[/)[0] + "[" + kuikin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + cheese + "</span>,]" + check1;
document.getElementById('reflections').innerHTML += "" + nohere + "" + nohere2;
if(document.getElementById('reflections').innerHTML.toString().search(anihere) < 0 && document.getElementById('reflections').innerHTML.toString().search(anihere2) < 0){
document.getElementById('reflections').innerHTML += "" + anihere + "" + anihere2;
}
wasnum = document.getElementById(wherebe).innerHTML.toString().match(/\!{2}/g).length;
document.getElementById(growto).innerHTML = Math.abs(Number(wasnum) + 1);
wasnum = '';
}
var xer = check2;
var yer = check1;
var changeit = "o"+xer+"o"+yer;
if(document.getElementById(changeit).innerHTML !== "□"){
document.getElementById(changeit).style.color="rgba(255,127,"+newcolor+",1)";
reflections(xer,yer,gen);
document.getElementById('rc').innerHTML = Number(roundcheck + 2);
roundcheck = Number(roundcheck + 2);
document.getElementById('display').innerHTML = "Move Found!";
var oino = document.getElementById('altsare').innerHTML;
document.getElementById('altsare').innerHTML = Number(oino) + 1;
}
//below looks for new potential moves
if(document.getElementById(qname1a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname1a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname2a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname2a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname1b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname1b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname2b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname2b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(tick >= 1){
document.getElementById('am').innerHTML += "!!"+xer+"+"+yer+"!"+tick+"+"+gen;
}
}
tick = 0;
document.getElementById('display').innerHTML = "Checking for alternative moves...";
}
//BUG FOUND NOT FINDING ALL NEW POTENTIAL MOVES BUT ONLY NEW MOVES NEVER CONSIDERED NOT NEW NEVER CONSIDERED EXPANDED ONTO NOR SEEN POSSIBLE EXPANDED PAST OTHERS
if(document.getElementById(cname2).innerHTML.toString().search(/\d/) >= 0 && Number(document.getElementById('rc').innerHTML) < herebe && document.getElementById('l'+document.getElementById('lengthis').innerHTML+'v').style.color !== "gold"){
if(document.getElementById(qname3a).innerHTML === "□" || document.getElementById(qname4a).innerHTML === "□" || document.getElementById(qname3b).innerHTML === "□" || document.getElementById(qname4b).innerHTML === "□"){
sauce = Number(check4) - Number(Number(document.getElementById('endi').innerHTML) - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
cheese = Number(check3) - Number(Number(document.getElementById('ende').innerHTML) - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
var nohere = ", " + quiqin + "" + sauce + ",!" + kuikin + "" + cheese + ",";
var anihere = ", " + quikin + "" + Number(0 - Number(sauce)) + ",!" + kuiqin + "" + Number(0 - Number(cheese)) + ",";
var nohere2 = ", " + kuikin + "" + cheese + ",!" + quiqin + "" + sauce + ",";
var anihere2 = ", " + kuiqin + "" + Number(0 - Number(cheese)) + ",!" + quikin + "" + Number(0 - Number(sauce)) + ",";
if(document.getElementById('reflections').innerHTML.toString().search(nohere) < 0 && document.getElementById('reflections').innerHTML.toString().search(nohere2) < 0){
document.getElementById(wherebe).innerHTML += "!!" + wasbe.split(/\!/)[0].split(/\[/)[0] + "[" + quiqin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + sauce + "</span>,]" + check4 + "!" + wasbe.split(/\!/)[1].split(/\[/)[0] + "[" + kuikin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + cheese + "</span>,]" + check3;
document.getElementById('reflections').innerHTML += ", " + nohere + ", " + nohere2;
if(document.getElementById('reflections').innerHTML.toString().search(anihere) < 0 && document.getElementById('reflections').innerHTML.toString().search(anihere2) < 0){
document.getElementById('reflections').innerHTML += ", " + anihere + ", " + anihere2;
}
wasnum = document.getElementById(wherebe).innerHTML.toString().match(/\!{2}/g).length;
document.getElementById(growto).innerHTML = Math.abs(Number(wasnum) + 1);
wasnum = '';
}
var yer = check4;
var xer = check3;
var changeit = "o"+yer+"o"+xer;
if(document.getElementById(changeit).innerHTML !== "□"){
document.getElementById(changeit).style.color="rgba(255,127,"+newcolor+",1)";
reflections(yer,xer,gen);
document.getElementById('rc').innerHTML = Number(roundcheck + 2);
roundcheck = Number(roundcheck + 2);
document.getElementById('display').innerHTML = "Move Found!";
var oino = document.getElementById('altsare').innerHTML;
document.getElementById('altsare').innerHTML = Number(oino) + 1;
}
//below looks for new potential moves
if(document.getElementById(qname3a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname3a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname4a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname4a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname3b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname3b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname4b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname4b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(tick >= 1){
document.getElementById('am').innerHTML += "!!"+yer+"+"+xer+"!"+tick+"+"+gen;
}
}
tick = 0;
document.getElementById('display').innerHTML = "Checking for alternative moves...";
}
//BUG FOUND NOT FINDING ALL NEW POTENTIAL MOVES BUT ONLY NEW MOVES NEVER CONSIDERED NOT NEW NEVER CONSIDERED EXPANDED ONTO NOR SEEN POSSIBLE EXPANDED PAST OTHERS
if(document.getElementById(cname3).innerHTML.toString().search(/\d/) >= 0 && Number(document.getElementById('rc').innerHTML) < herebe && document.getElementById('l'+document.getElementById('lengthis').innerHTML+'v').style.color !== "gold"){
if(document.getElementById(qname5a).innerHTML === "□" || document.getElementById(qname6a).innerHTML === "□" || document.getElementById(qname5b).innerHTML === "□" || document.getElementById(qname6b).innerHTML === "□"){
sauce = Number(check6) - Number(Number(document.getElementById('endi').innerHTML) - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
cheese = Number(check5) - Number(Number(document.getElementById('ende').innerHTML) - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
var nohere = ", " + quiqin + "" + sauce + ",!" + kuikin + "" + cheese + ",";
var anihere = ", " + quikin + "" + Number(0 - Number(sauce)) + ",!" + kuiqin + "" + Number(0 - Number(cheese)) + ",";
var nohere2 = ", " + kuikin + "" + cheese + ",!" + quiqin + "" + sauce + ",";
var anihere2 = ", " + kuiqin + "" + Number(0 - Number(cheese)) + ",!" + quikin + "" + Number(0 - Number(sauce)) + ",";
if(document.getElementById('reflections').innerHTML.toString().search(nohere) < 0 && document.getElementById('reflections').innerHTML.toString().search(nohere2) < 0){
document.getElementById(wherebe).innerHTML += "!!" + wasbe.split(/\!/)[0].split(/\[/)[0] + "[" + quiqin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + sauce + "</span>,]" + check6 + "!" + wasbe.split(/\!/)[1].split(/\[/)[0] + "[" + kuikin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + cheese + "</span>,]" + check5;
document.getElementById('reflections').innerHTML += ", " + nohere + ", " + nohere2;
if(document.getElementById('reflections').innerHTML.toString().search(anihere) < 0 && document.getElementById('reflections').innerHTML.toString().search(anihere2) < 0){
document.getElementById('reflections').innerHTML += ", " + anihere + ", " + anihere2;
}
wasnum = document.getElementById(wherebe).innerHTML.toString().match(/\!{2}/g).length;
document.getElementById(growto).innerHTML = Math.abs(Number(wasnum) + 1);
wasnum = '';
}
var yer = check5;
var xer = check6;
var changeit = "o"+xer+"o"+yer;
if(document.getElementById(changeit).innerHTML !== "□"){
document.getElementById(changeit).style.color="rgba(255,127,"+newcolor+",1)";
reflections(xer,yer,gen);
document.getElementById('rc').innerHTML = Number(roundcheck + 2);
roundcheck = Number(roundcheck + 2);
document.getElementById('display').innerHTML = "Move Found!";
var oino = document.getElementById('altsare').innerHTML;
document.getElementById('altsare').innerHTML = Number(oino) + 1;
}
//below looks for new potential moves
if(document.getElementById(qname5a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname5a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname6a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname6a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname5b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname5b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname6b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname6b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(tick >= 1){
document.getElementById('am').innerHTML += "!!"+xer+"+"+yer+"!"+tick+"+"+gen;
}
}
tick = 0;
document.getElementById('display').innerHTML = "Checking for alternative moves...";
}
//BUG FOUND NOT FINDING ALL NEW POTENTIAL MOVES BUT ONLY NEW MOVES NEVER CONSIDERED NOT NEW NEVER CONSIDERED EXPANDED ONTO NOR SEEN POSSIBLE EXPANDED PAST OTHERS
if(document.getElementById(cname4).innerHTML.toString().search(/\d/) >= 0 && Number(document.getElementById('rc').innerHTML) < herebe && document.getElementById('l'+document.getElementById('lengthis').innerHTML+'v').style.color !== "gold"){
if(document.getElementById(qname7a).innerHTML === "□" || document.getElementById(qname8a).innerHTML === "□" || document.getElementById(qname7b).innerHTML === "□" || document.getElementById(qname8b).innerHTML === "□"){
sauce = Number(check8) - Number(Number(document.getElementById('endi').innerHTML) - Number(document.getElementById('newi').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
cheese = Number(check7) - Number(Number(document.getElementById('ende').innerHTML) - Number(document.getElementById('newe').innerHTML.split(/\[/)[1].split(/\,{2}/gm)[0].split(/\,/g)[washas]));
var nohere = ", " + quiqin + "" + sauce + ",!" + kuikin + "" + cheese + ",";
var anihere = ", " + quikin + "" + Number(0 - Number(sauce)) + ",!" + kuiqin + "" + Number(0 - Number(cheese)) + ",";
var nohere2 = ", " + kuikin + "" + cheese + ",!" + quiqin + "" + sauce + ",";
var anihere2 = ", " + kuiqin + "" + Number(0 - Number(cheese)) + ",!" + quikin + "" + Number(0 - Number(sauce)) + ",";
if(document.getElementById('reflections').innerHTML.toString().search(nohere) < 0 && document.getElementById('reflections').innerHTML.toString().search(nohere2) < 0){
document.getElementById(wherebe).innerHTML += "!!" + wasbe.split(/\!/)[0].split(/\[/)[0] + "[" + quiqin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + sauce + "</span>,]" + check8 + "!" + wasbe.split(/\!/)[1].split(/\[/)[0] + "[" + kuikin + "" + "<span style='color:"+colorguide+";' title='PUSHED_MOVE'>" + cheese + "</span>,]" + check7;
document.getElementById('reflections').innerHTML += ", " + nohere + ", " + nohere2;
if(document.getElementById('reflections').innerHTML.toString().search(anihere) < 0 && document.getElementById('reflections').innerHTML.toString().search(anihere2) < 0){
document.getElementById('reflections').innerHTML += ", " + anihere + ", " + anihere2;
}
wasnum = document.getElementById(wherebe).innerHTML.toString().match(/\!{2}/g).length;
document.getElementById(growto).innerHTML = Math.abs(Number(wasnum) + 1);
wasnum = '';
}
var yer = check8;
var xer = check7;
var changeit = "o"+yer+"o"+xer;
if(document.getElementById(changeit).innerHTML !== "□"){
document.getElementById(changeit).style.color="rgba(255,127,"+newcolor+",1)";
reflections(yer,xer,gen);
document.getElementById('rc').innerHTML = Number(roundcheck + 2);
roundcheck = Number(roundcheck + 2);
document.getElementById('display').innerHTML = "Move Found!";
var oino = document.getElementById('altsare').innerHTML;
document.getElementById('altsare').innerHTML = Number(oino) +1;
}
//below looks for new potential moves
if(document.getElementById(qname7a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname7a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname8a).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname8a).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname7b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname7b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(document.getElementById(qname8b).innerHTML.toString().search(/\d/) >= 0 && document.getElementById(qname8b).style.color.toString().search('127') >= 0){
tick = Number(tick) + 1;
}
if(tick >= 1){
document.getElementById('am').innerHTML += "!!"+yer+"+"+xer+"!"+tick+"+"+gen;
}
}
tick = 0;
document.getElementById('display').innerHTML = "Checking for alternative moves...";
}
//BUG FOUND NOT FINDING ALL NEW POTENTIAL MOVES BUT ONLY NEW MOVES NEVER CONSIDERED NOT NEW NEVER CONSIDERED EXPANDED ONTO NOR SEEN POSSIBLE EXPANDED PAST OTHERS
document.getElementById('rc').innerHTML = 0;
// document.getElementById('notes').innerHTML = "";
//debugger
}
//<!--the following function just draws the reflections below the IPB based on the alt-moves placed on the IPB-->
function reflections(xer,yer,gen){
var graphlen = document.getElementById('history').innerHTML;
var pid = "p"+Number(xer)+"p"+Number(Number(Number(graphlen)-yer)+1), qid = "q"+Number(Number(Number(graphlen)-xer)+1)+"q"+yer, rid = "r"+Number(Number(Number(graphlen)-xer)+1)+"r"+Number(Number(Number(graphlen)-yer)+1), aid = "a"+Number(Number(Number(graphlen)-yer)+1)+"a"+Number(Number(Number(graphlen)-xer)+1), bid = "b"+yer+"b"+Number(Number(Number(graphlen)-xer)+1), cid = "c"+Number(Number(Number(graphlen)-yer)+1)+"c"+Number(xer), did = "d"+Number(yer)+"d"+Number(xer), fid = "f"+Number(xer)+"f"+Number(yer);//did === 7
var coloradj = Math.abs(87 + Number(Math.abs(Number(gen)*3.14))); //gen0
var coloradj2 = Math.abs(47 - Number(Math.abs(Number(gen)+13.14))); //gen1
var colorpicker = '';
if(gen >= 1){
colorpicker = "color:rgba(175,"+coloradj2+",175,1)"; //purple
}
else{
colorpicker = "color:rgba(255,127,"+coloradj+",1)"; //orange
}
if(document.getElementById(pid).innerHTML !== "□"){
document.getElementById(pid).style = colorpicker;
document.getElementById(pid).innerHTML = "&#9633";
}
if(document.getElementById(qid).innerHTML !== "□"){
document.getElementById(qid).style = colorpicker;
document.getElementById(qid).innerHTML = "&#9633";
}
if(document.getElementById(rid).innerHTML !== "□"){
document.getElementById(rid).style = colorpicker;
document.getElementById(rid).innerHTML = "&#9633";
}
if(document.getElementById(aid).innerHTML !== "□"){
document.getElementById(aid).style = colorpicker;
document.getElementById(aid).innerHTML = "&#9633";
}
if(document.getElementById(bid).innerHTML !== "□"){
document.getElementById(bid).style = colorpicker;
document.getElementById(bid).innerHTML = "&#9633";
}
if(document.getElementById(cid).innerHTML !== "□"){
document.getElementById(cid).style = colorpicker;
document.getElementById(cid).innerHTML = "&#9633";
}
if(document.getElementById(did).innerHTML !== "□"){
document.getElementById(did).style = colorpicker;
document.getElementById(did).innerHTML = "&#9633";
}
if(document.getElementById(fid).innerHTML !== "□"){
document.getElementById(fid).style = colorpicker;
document.getElementById(fid).innerHTML = "&#9633";
}
} //end of reflections alt-moves placer
</script>
</HTML>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment