15 puzzle solver: Difference between revisions
Content added Content deleted
m (→The Task) |
|||
Line 25: | Line 25: | ||
int g = (11-std::get<1>(n)-std::get<0>(n)*4)*4; |
int g = (11-std::get<1>(n)-std::get<0>(n)*4)*4; |
||
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
||
⚫ | |||
bool l = Nr[a>>g]<=std::get<0>(n); |
|||
⚫ | |||
} |
} |
||
const N fG(const N n){ |
const N fG(const N n){ |
||
int g = (19-std::get<1>(n)-std::get<0>(n)*4)*4; |
int g = (19-std::get<1>(n)-std::get<0>(n)*4)*4; |
||
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
||
⚫ | |||
bool l = Nr[a>>g]>=std::get<0>(n); |
|||
⚫ | |||
} |
} |
||
const N fE(const N n){ |
const N fE(const N n){ |
||
int g = (14-std::get<1>(n)-std::get<0>(n)*4)*4; |
int g = (14-std::get<1>(n)-std::get<0>(n)*4)*4; |
||
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
||
⚫ | |||
bool l = Nc[a>>g]<=std::get<1>(n); |
|||
⚫ | |||
} |
} |
||
const N fL(const N n){ |
const N fL(const N n){ |
||
int g = (16-std::get<1>(n)-std::get<0>(n)*4)*4; |
int g = (16-std::get<1>(n)-std::get<0>(n)*4)*4; |
||
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
unsigned long a = std::get<2>(n)&((unsigned long)15<<g); |
||
⚫ | |||
bool l = Nc[a>>g]>=std::get<1>(n); |
|||
⚫ | |||
} |
} |
||
void fZ(const N n, const int g){ |
void fZ(const N n, const int g){ |