JSFiddle - React, Tailwind, and code Playground

by uggway

HTML

<div id='out'></div>

JavaScript

var olist=[],
    list=[],
    dlist=[],
    xx,yy,zz,a,b,c,tid;
  var did=document.getElementById('out');

  function inList(el, idx, arr) {
	if(tid == el.id) return false;
    return true;
  }
  function add(x,y,z,s){    
    if ((x < 0)||(y < 0)||(z < 0) || (x > a) || (y > b) || (z > c)) return;
    tid=x+(y<<8)+(z<<16);
     // did.innerHTML+= x+','+y+','+z+','+tid+'<br>';
    if(!list.every(inList) || !dlist.every(inList)) return;
    if (olist[x] > s) olist[x]=s;
    if (olist[y] > s) olist[y]=s;
    if (olist[z] > s) olist[z]=s;
      
    list.push({x:x,y:y,z:z,s:s,id:tid});
  }

  for(var i=0;i<11;i++)olist[i]=11;
  a=10;b=8;c=5;
  xx=7;yy=1;zz=2;
  
  add(xx,yy,zz,0);
  while(list.length >0){
      	p=list.shift();
       // did.innerHTML+= p.x+','+p.y+','+p.z+','+p.id+'<br>';
        if  (a-p.x < p.y) {tx=a; ty=p.y - (a-p.x);tz=p.z;} else {tx= p.x+p.y; ty=0; tz=p.z;}
  		add(tx,ty,tz,p.s+1);
    
        if  (a-p.x < p.z) {tx=a; tz=p.z - (a-p.x);ty=p.y;} else {tx= p.x+p.z; tz=0; ty=p.y;}
        add(tx,ty,tz,p.s+1);

        if  (b-p.y < p.x) {ty=b; tx=p.x - (b-p.y);tz=p.z;} else {ty= p.y+p.x; tx=0; tz=p.z;}
        add(tx,ty,tz,p.s+1);

        if  (b-p.y < p.z) {ty=b; tz=p.z - (b-p.y);tx=p.x;} else {ty= p.y+p.z; tz=0; tx=p.x;}
        add(tx,ty,tz,p.s+1);

        if  (c-p.z < p.x) {tz=c; tx=p.x - (c-p.z);ty=p.y;} else {tz= p.z+p.x; tx=0; ty=p.y;}
        add(tx,ty,tz,p.s+1);

        if  (c-p.z < p.y) {tz=c; ty=p.y - (c-p.z);tx=p.x;} else {tz= p.z+p.y; ty=0; tx=p.x;}
        add(tx,ty,tz,p.s+1);
        
         dlist.push(p);
        }

for(i=0;i<11;i++)if(olist[i]!=11)did.innerHTML+=i+':'+olist[i]+'<br>';