#include "host.h"
#include "strngs.h"
Go to the source code of this file.
Functions |
| SEARCH_STATE | bin_to_chunks (STATE *state, int num_joints) |
| void | bin_to_pieces (STATE *state, int num_joints, PIECES_STATE pieces) |
| void | insert_new_chunk (register STATE *state, register int index, int num_joints) |
| STATE * | new_state (STATE *oldstate) |
| int | ones_in_state (STATE *state, int num_joints) |
| void | print_state (const char *label, STATE *state, int num_joints) |
| void | print_state (STATE *state, int num_joints, STRING *toappend) |
| void | set_n_ones (STATE *state, int n) |
| void | free_state (STATE *) |
Macro Definition Documentation
| #define MAX_NUM_CHUNKS 64 /* Limit on pieces */ |
Typedef Documentation
State variable for search
Definition at line 49 of file states.h.
State variable for search
Definition at line 46 of file states.h.
Function Documentation
Definition at line 49 of file states.cpp.
{
int x;
unsigned int mask;
int depth;
int pieces = 0;
depth = 1;
mask = 1 << (num_joints - 1 - 32);
for (x = num_joints; x > 32; x--) {
if (state->
part1 & mask) {
s[depth++] = pieces;
pieces = 0;
}
else {
pieces++;
}
mask >>= 1;
}
if (num_joints > 32)
mask = 1 << 31;
else
mask = 1 << (num_joints - 1);
while (x--) {
if (state->
part2 & mask) {
s[depth++] = pieces;
pieces = 0;
}
else {
pieces++;
}
mask >>= 1;
}
s[0] = depth - 1;
return (s);
}
bin_to_pieces
Convert the binary (bit vector) format of a search state to an array of piece counts. This array has a zero element after the last valid character.
Definition at line 99 of file states.cpp.
{
int x;
unsigned int mask;
mask = ((num_joints > 32) ?
(1 << (num_joints - 1 - 32)) : (1 << (num_joints - 1)));
pieces[num_pieces] = 0;
for (x = num_joints - 1; x >= 0; x--) {
pieces[num_pieces]++;
if ((x < 32) ?
pieces[++num_pieces] = 0;
}
mask = ((mask == 1) ? (1 << 31) : (mask >> 1));
}
pieces[num_pieces]++;
pieces[++num_pieces] = 0;
}
| void free_state |
( |
STATE * |
| ) |
|
| void insert_new_chunk |
( |
register STATE * |
state, |
|
|
register int |
index, |
|
|
int |
num_joints |
|
) |
| |
new_state
Create a memory space for a new state variable. Set its initial value according to the parameters.
Definition at line 166 of file states.cpp.
{
this_state = newstate ();
return (this_state);
}
| int ones_in_state |
( |
STATE * |
state, |
|
|
int |
num_joints |
|
) |
| |
ones_in_state
Return the number of ones that are in this state.
Definition at line 181 of file states.cpp.
{
unsigned int mask;
if (num_joints > 32)
mask = 1 << (num_joints - 1 - 32);
else
mask = 1 << (num_joints - 1);
for (x = num_joints - 1; x >= 0; x--) {
if (x < 32)
num_ones += ((state->
part2 & mask) ? 1 : 0);
else
num_ones += ((state->
part1 & mask) ? 1 : 0);
if (mask == 1)
mask = 1 << 31;
else
mask >>= 1;
}
return (num_ones);
}
| void print_state |
( |
const char * |
label, |
|
|
STATE * |
state, |
|
|
int |
num_joints |
|
) |
| |
print_state
Print out the current state variable on a line with a label.
Definition at line 214 of file states.cpp.
{
int x;
unsigned int mask;
if (num_joints > 32)
mask = 1 << (num_joints - 1 - 32);
else
mask = 1 << (num_joints - 1);
for (x = num_joints - 1; x >= 0; x--) {
if (x < 32)
else
if (x % 4 == 0)
if (mask == 1)
mask = 1 << 31;
else
mask >>= 1;
}
}
| void print_state |
( |
STATE * |
state, |
|
|
int |
num_joints, |
|
|
STRING * |
toappend |
|
) |
| |
Definition at line 246 of file states.cpp.
{
for (int i = 0; pieces[i] > 0; i++) {
if (i > 0) {
} else {
}
}
}
| void set_n_ones |
( |
STATE * |
state, |
|
|
int |
n |
|
) |
| |
set_n_ones
Set the first n bits in a state.
Definition at line 263 of file states.cpp.
{
if (n < 32) {
}
else {
}
}