15 puzzle solver: Difference between revisions
Content added Content deleted
Line 49: | Line 49: | ||
} |
} |
||
void fN(const N n, const int g){ |
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); break; |
|||
case 'u': fZ(fE(n),g); break; |
|||
default : fZ(fE(n),g); fZ(fI(n),g); break;} break; |
|||
case 3: switch(l){case 'r': fZ(fI(n),g); break; |
|||
case 'u': fZ(fL(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fI(n),g); break;} break; |
|||
default: switch(l){case 'l': fZ(fI(n),g); fZ(fL(n),g); break; |
|||
case 'r': fZ(fI(n),g); fZ(fE(n),g); break; |
|||
case 'u': fZ(fE(n),g); fZ(fL(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g); break;} break;} break; |
|||
case 3: switch(e){case 0: switch(l){case 'l': fZ(fG(n),g); break; |
|||
case 'd': fZ(fE(n),g); break; |
|||
default : fZ(fE(n),g); fZ(fG(n),g); break;} break; |
|||
case 3: switch(l){case 'r': fZ(fG(n),g); break; |
|||
case 'd': fZ(fL(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fG(n),g); break;} break; |
|||
default: switch(l){case 'l': fZ(fG(n),g); fZ(fL(n),g); break; |
|||
case 'r': fZ(fG(n),g); fZ(fE(n),g); break; |
|||
case 'd': fZ(fE(n),g); fZ(fL(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fG(n),g); fZ(fE(n),g); break;} break;} break; |
|||
default: switch(e){case 0: switch(l){case 'l': fZ(fI(n),g); fZ(fG(n),g); break; |
|||
case 'u': fZ(fE(n),g); fZ(fG(n),g); break; |
|||
case 'd': fZ(fE(n),g); fZ(fI(n),g); break; |
|||
default : fZ(fE(n),g); fZ(fI(n),g); fZ(fG(n),g); break;} break; |
|||
case 3: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g); break; |
|||
case 'u': fZ(fL(n),g); fZ(fG(n),g); break; |
|||
case 'r': fZ(fI(n),g); fZ(fG(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fG(n),g); break;} break; |
|||
default: switch(l){case 'd': fZ(fI(n),g); fZ(fL(n),g); fZ(fE(n),g); break; |
|||
case 'l': fZ(fI(n),g); fZ(fL(n),g); fZ(fG(n),g); break; |
|||
case 'r': fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g); break; |
|||
case 'u': fZ(fE(n),g); fZ(fL(n),g); fZ(fG(n),g); break; |
|||
default : fZ(fL(n),g); fZ(fI(n),g); fZ(fE(n),g); fZ(fG(n),g); break;} break;} break;} |
|||
} |
} |
||
void Solve(N n){for(int g{};;++g) fN(n,g);} |
void Solve(N n){for(int g{};;++g) fN(n,g);} |