Пример #1
0
static void print_info(JFDB *db, JFT_Stem *prefix, JFT *node, JFT_Symbol *stop) {
  JFT_Stem key = JFT_key(node, db->keyData), val = (JFT_Stem) {};
  printf("-----\n");
  printf("@ %ld\n", node - db->kmap.map);
  print_stem("> ", *prefix);
  print_stem("< ", key);
  print_node(node);
  if (JFT_node_type(node) == Leaf)
    if (key.pre == JFT_SYMBOL_PRIMARY)
      if (JFDB_get_value(db, node, &val))
        print_stem("= ", val);
  JFT_Cursor cursor = JFT_cursor(node);
  for (JFT_Keys keys = JFT_keys(&cursor, &key, Forward); JFT_keys_next_until(&keys, stop); )
    print_stem(JFT_cursor_at_terminal(&cursor) ? "[val] " : "[sub] ", *keys.stem);
}
Пример #2
0
void init(int numRingsings)            //задание изначального расположения колец
{
	for (numRings[1] = 0; numRingsings > 0; numRings[1]++, numRingsings--)
		stem[1][numRings[1]] = numRingsings;
	numRings[2] = numRings[3] = 0;
	numMoves = 0;
	print_stem();
}
Пример #3
0
void move(int r1, int r2)                   //перемещение кольца со стержня r1 на стержень r2
{
	stem[r2][numRings[r2]++] = stem[r1][--numRings[r1]];
	print_stem();         
	numMoves++;
}
Пример #4
0
static JFT_Status pkey(JFT_Cursor *cursor, JFDB_Slice *slice, JFT_Boolean isTerminal) {
  if (JFT_leaf(cursor->node).size)
    print_stem(isTerminal ? "[val] " : "[sub] ", *slice->stem);
  return Next;
}