コード例 #1
0
ファイル: term.c プロジェクト: ttdoda/mintty
int
in_results(pos scrpos)
{
  if (term.results.length == 0) {
    return 0;
  }

  pos abspos = {
    .x = scrpos.x,
    .y = scrpos.y + term.sblines
  };

  int match = in_results_recurse(abspos, 0, term.results.length);
  match += in_result(abspos, term.results.results[term.results.current]);
  return match;
}

void
results_add(result abspos)
{
  assert(term.results.capacity > 0);
  if (term.results.length == term.results.capacity) {
    term.results.capacity *= 2;
    term.results.results = renewn(term.results.results, term.results.capacity);
  }

  term.results.results[term.results.length] = abspos;
  ++term.results.length;
}
コード例 #2
0
ファイル: functions.cpp プロジェクト: AlmazKo/WoodCube
bool start(successfull result[ITEMS], box current_matrix)
{

    box new_matrix = {};
    planch working_planch, temp_planch;

    for (int i = 0; i < ITEMS; i++) {
        if (in_result(i, result)) continue;


        for (int position = 0; position < 6; position++){
            for (short level = 0; level < 2; level++) {
                for (short uturn = 0; uturn < 2; uturn++) {
                    if (uturn) {
                        turn_upside_down(items[i], working_planch);
                    } else {
                        memcpy(working_planch, items[i], ITEMS_SIZE);
                    }
                    for (short can_turn = 0; can_turn < 2; can_turn++) {
                        if (can_turn) {
                            turn(working_planch, temp_planch);
                            memcpy(working_planch, temp_planch, ITEMS_SIZE);
                        }

                        ++INDEX;
                        memcpy(new_matrix, current_matrix, MATRIX_SIZE);

                        add_planch(position, working_planch, new_matrix, level);

                        if (check_box(new_matrix)) {
                            successfull temp_result[ITEMS];

                            memcpy(temp_result, result, RESULT_SIZE);
                            temp_result[i].ready = true;
                            temp_result[i].position = position;
                            temp_result[i].item = i;
                            temp_result[i].turn = can_turn;
                            temp_result[i].turn_upside_down = uturn;
                            if (check_result(temp_result)) {
                                FOUND++;
                                show_solution(temp_result, new_matrix, FOUND);
                                return true;
                            }

                            start(temp_result, new_matrix);
                        }
                    }
                }
            }
        }
    }


    return false;
}