15 puzzle solver: Difference between revisions
→The Solver
Line 50:
void fN(const N n, const int g){
const int i{std::get<0>(n)}, e{std::get<1>(n)}, l{std::get<3>(n).back()};
switch(i){case 0: switch(e){case 0: switch(l){case 'l': fZ(fI(n),g);
case 'u': fZ(fE(n),g);
default : fZ(fE(n),g); fZ(fI(n),g);
case 3: switch(l){case 'r': fZ(fI(n),g);
case 'u': fZ(fL(n),g);
default : fZ(fL(n),g); fZ(fI(n),g);
default: switch(l){case 'l': fZ(fI(n),g); fZ(fL(n),g);
case 'r': fZ(fI(n),g); fZ(fE(n),g);
case 'u': fZ(fE(n),g); fZ(fL(n),g);
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g);
case 3: switch(e){case 0: switch(l){case 'l': fZ(fG(n),g);
case 'd': fZ(fE(n),g);
default : fZ(fE(n),g); fZ(fG(n),g);
case 3: switch(l){case 'r': fZ(fG(n),g);
case 'd': fZ(fL(n),g);
default : fZ(fL(n),g); fZ(fG(n),g);
default: switch(l){case 'l': fZ(fG(n),g); fZ(fL(n),g);
case 'r': fZ(fG(n),g); fZ(fE(n),g);
case 'd': fZ(fE(n),g); fZ(fL(n),g);
default : fZ(fL(n),g); fZ(fG(n),g); fZ(fE(n),g);
default: switch(e){case 0: switch(l){case 'l': fZ(fI(n),g); fZ(fG(n),g);
case 'u': fZ(fE(n),g); fZ(fG(n),g);
case 'd': fZ(fE(n),g); fZ(fI(n),g);
default : fZ(fE(n),g); fZ(fI(n),g); fZ(fG(n),g);
case 3: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g);
case 'u': fZ(fL(n),g); fZ(fG(n),g);
case 'r': fZ(fI(n),g); fZ(fG(n),g);
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fG(n),g);
default: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g); fZ(fE(n),g);
case 'l': fZ(fI(n),g); fZ(fL(n),g); fZ(fG(n),g);
case 'r': fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g);
case 'u': fZ(fE(n),g); fZ(fL(n),g); fZ(fG(n),g);
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g);
}
void Solve(N n){for(int g{};;++g) fN(n,g);}
|