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