Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head></head>
- <body>
- <p id="out" />
- <script>
- arr=new Array();
- arr[0]=8;
- arr[1]=5;
- arr[2]=2;
- arr[3]=1;
- arr[4]=-1;
- function laskeYks()
- {
- var tmp=0;
- if (arr[4] < 0)
- {
- for (var i=0;i<4;i++)
- {
- tmp+=arr[i] > 0 ? 1 : 0;
- }
- }
- else
- {
- for (var i=0;i<4;i++)
- {
- tmp+=arr[i] < 0 ? 1 : 0;
- }
- }
- return tmp;
- }
- function laskePar()
- {
- var tmp=laskeYks();
- if (tmp > 1)
- {
- return dep(tmp);
- }else
- {
- return 0;
- }
- return tmp;
- }
- function dep(luku)
- {
- return luku>2?luku-1+dep(luku-1):1;
- }
- function getIndex(luku)
- {
- var tmp=0;
- if (arr[4] < 0)
- {
- for (var i=0;i<4;i++)
- {
- tmp+=arr[i] > 0 ? 1 : 0;
- if (tmp > luku)
- {
- return i;
- }
- }
- }
- else
- {
- for (var i=0;i<4;i++)
- {
- tmp+=arr[i] < 0 ? 1 : 0;
- if (tmp > luku)
- {
- return i;
- }
- }
- }
- return -1;
- }
- function getIndexPar(luku)
- {
- var reAr=new Array();
- a=0;
- b=1;
- reAr[0]=getIndex(0);
- reAr[1]=getIndex(1);
- for (;luku > 0;luku--)
- {
- if (a+1 == b)
- {
- b++;
- reAr[1]=getIndex(b);
- a=0;
- reAr[0]=getIndex(a);
- }else{
- a++;
- reAr[0]=getIndex(a);
- }
- }
- return reAr;
- }
- function checkComplete()
- {
- var test=true;
- for (var i=0;i<4;i++)
- {
- test=test && (arr[i] < 0);
- }
- return test;
- }
- comp=0;
- comnum=1;
- function heko(count)
- {
- var loCount=count;
- var iY=laskeYks();
- var iP=laskePar();
- for (var i=0;i<iY+iP;i++)
- {
- var iC=i;
- if (!(iC<iP))
- {
- iC-=iY;
- var cIdx=getIndex(iC);
- if (cIdx >= 0 && cIdx <= 3)
- {
- count+=Math.abs(arr[cIdx]);
- arr[cIdx]=-arr[cIdx];
- arr[4]=-arr[4];
- if (checkComplete())
- {
- if (count <= 15)
- {
- comp++;
- if (!(comp<comnum))
- {
- document.getElementById("out").innerHTML+="complete...in:"+count+" move:"+cIdx;
- return count;
- }
- }else{
- }
- }
- if (count < 15)
- heko(count);
- if (comp==comnum)
- {
- document.getElementById("out").innerHTML+=" | move:"+cIdx;
- return count;
- }
- count=loCount;
- arr[cIdx]=-arr[cIdx];
- arr[4]=-arr[4];
- continue;
- }
- }else{
- var cIdx=getIndexPar(iC);
- if (cIdx[0] >= 0 && cIdx[0] <= 3 && cIdx[1] >= 0 && cIdx[1] <= 3 && cIdx[0] != cIdx[1])
- {
- count+=Math.max(Math.abs(arr[cIdx[0]]),Math.abs(arr[cIdx[1]]));
- arr[cIdx[0]]=-arr[cIdx[0]];
- arr[cIdx[1]]=-arr[cIdx[1]];
- arr[4]=-arr[4];
- if (checkComplete())
- {
- if (count <= 15)
- {
- comp++;
- if (!(comp<comnum))
- {
- document.getElementById("out").innerHTML+="complete...in:"+count+" move:"+cIdx[0]+"/"+cIdx[1];
- return count;
- }
- }else{
- }
- }
- if (count < 15)
- heko(count);
- if (comp==comnum)
- {
- document.getElementById("out").innerHTML+=" | move:"+cIdx[0]+"/"+cIdx[1];
- return count;
- }
- count=loCount;
- arr[cIdx[0]]=-arr[cIdx[0]];
- arr[cIdx[1]]=-arr[cIdx[1]];
- arr[4]=-arr[4];
- continue;
- }
- }
- }
- }
- heko(0);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement