15 puzzle solver: Difference between revisions

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); breakreturn;
case 'u': fZ(fE(n),g); breakreturn;
default : fZ(fE(n),g); fZ(fI(n),g); breakreturn;} break;
case 3: switch(l){case 'r': fZ(fI(n),g); breakreturn;
case 'u': fZ(fL(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fI(n),g); breakreturn;} break;
default: switch(l){case 'l': fZ(fI(n),g); fZ(fL(n),g); breakreturn;
case 'r': fZ(fI(n),g); fZ(fE(n),g); breakreturn;
case 'u': fZ(fE(n),g); fZ(fL(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g); breakreturn;} break;} break;
case 3: switch(e){case 0: switch(l){case 'l': fZ(fG(n),g); breakreturn;
case 'd': fZ(fE(n),g); breakreturn;
default : fZ(fE(n),g); fZ(fG(n),g); breakreturn;} break;
case 3: switch(l){case 'r': fZ(fG(n),g); breakreturn;
case 'd': fZ(fL(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fG(n),g); breakreturn;} break;
default: switch(l){case 'l': fZ(fG(n),g); fZ(fL(n),g); breakreturn;
case 'r': fZ(fG(n),g); fZ(fE(n),g); breakreturn;
case 'd': fZ(fE(n),g); fZ(fL(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fG(n),g); fZ(fE(n),g); breakreturn;} break;} break;
default: switch(e){case 0: switch(l){case 'l': fZ(fI(n),g); fZ(fG(n),g); breakreturn;
case 'u': fZ(fE(n),g); fZ(fG(n),g); breakreturn;
case 'd': fZ(fE(n),g); fZ(fI(n),g); breakreturn;
default : fZ(fE(n),g); fZ(fI(n),g); fZ(fG(n),g); breakreturn;} break;
case 3: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g); breakreturn;
case 'u': fZ(fL(n),g); fZ(fG(n),g); breakreturn;
case 'r': fZ(fI(n),g); fZ(fG(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fG(n),g); breakreturn;} break;
default: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g); fZ(fE(n),g); breakreturn;
case 'l': fZ(fI(n),g); fZ(fL(n),g); fZ(fG(n),g); breakreturn;
case 'r': fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g); breakreturn;
case 'u': fZ(fE(n),g); fZ(fL(n),g); fZ(fG(n),g); breakreturn;
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g); breakreturn;} break;} break;}
}
void Solve(N n){for(int g{};;++g) fN(n,g);}
2,172

edits