15 puzzle solver: Difference between revisions

Content added Content deleted
Line 49:
}
void fN(const N n, const int g){
switch(const int i{std::get<0>(n))}, e{case 0: switch(std::get<1>(n))}, l{case 0: switch(std::get<3>(n).back()){case 'l': fZ(fI(n),g); break};
switch(i){case 0: switch(e){case 0: switch(l){case 'ul': fZ(fEfI(n),g); break;
case default 'u': fZ(fE(n),g); fZ(fI(n),g); break;} break;
default case 3: switchfZ(std::get<3>fE(n).back(,g)){case 'r':; fZ(fI(n),g); break;} break;
case 3: switch(l){case 'ur': fZ(fLfI(n),g); break;
case default 'u': fZ(fL(n),g); fZ(fI(n),g); break;} break;
default: switch(std::get<3>(n).back()){case 'l': fZ(fIfL(n),g); fZ(fLfI(n),g); break;} break;
default: switch(l){case 'rl': fZ(fI(n),g); fZ(fEfL(n),g); break;
case 'ur': fZ(fEfI(n),g); fZ(fLfE(n),g); break;
case default 'u': fZ(fLfE(n),g); fZ(fIfL(n),g); fZ(fE(n),g); break;} break;} break;
case 3 default : switchfZ(std::get<1>fL(n),g){case 0:; switchfZ(std::get<3>fI(n).back(,g)){case 'l':; fZ(fGfE(n),g); break;} break;} break;
case 3: switch(e){case 0: switch(l){case 'dl': fZ(fEfG(n),g); break;
case default 'd': fZ(fE(n),g); fZ(fG(n),g); break;} break;
default case 3: switchfZ(std::get<3>fE(n).back(,g)){case 'r':; fZ(fG(n),g); break;} break;
case 3: switch(l){case 'dr': fZ(fLfG(n),g); break;
case default 'd': fZ(fL(n),g); fZ(fG(n),g); break;} break;
default: switch(std::get<3>(n).back()){case 'l': fZ(fGfL(n),g); fZ(fLfG(n),g); break;} break;
default: switch(l){case 'rl': fZ(fG(n),g); fZ(fEfL(n),g); break;
case 'dr': fZ(fEfG(n),g); fZ(fLfE(n),g); break;
case default 'd': fZ(fLfE(n),g); fZ(fGfL(n),g); fZ(fE(n),g); break;} break;} break;
default: switch(std::get<1>(n)){case 0 default : switchfZ(std::get<3>fL(n).back(),g){case 'l':; fZ(fIfG(n),g); fZ(fGfE(n),g); break;} break;} break;
default: switch(e){case 0: switch(l){case 'ul': fZ(fEfI(n),g); fZ(fG(n),g); break;
case 'du': fZ(fE(n),g); fZ(fIfG(n),g); break;
case default 'd': fZ(fE(n),g); fZ(fI(n),g); fZ(fG(n),g); break;} break;
default case 3: switchfZ(std::get<3>fE(n).back(,g)){case 'd':; fZ(fI(n),g); fZ(fLfG(n),g); break;} break;
case 3: switch(l){case 'ud': fZ(fLfI(n),g); fZ(fGfL(n),g); break;
case 'ru': fZ(fIfL(n),g); fZ(fG(n),g); break;
case default 'r': fZ(fL(n),g); fZ(fI(n),g); fZ(fG(n),g); break;} break;
default: switch(std::get<3>(n).back()){case 'd': fZ(fIfL(n),g); fZ(fLfI(n),g); fZ(fEfG(n),g); break;} break;
default: switch(l){case 'ld': fZ(fI(n),g); fZ(fL(n),g); fZ(fGfE(n),g); break;
case 'rl': fZ(fI(n),g); fZ(fEfL(n),g); fZ(fG(n),g); break;
case 'ur': fZ(fEfI(n),g); fZ(fLfE(n),g); fZ(fG(n),g); break;
case default 'u': fZ(fLfE(n),g); fZ(fI(n),g); fZ(fEfL(n),g); fZ(fG(n),g); break;} break;} 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);}