int tmpscore = 0;
int idx = head;
+ /*
+ printf("--------------------------------\n");
for (int i = 0; i < programSize; i++)
{
+ if (i != -1)
+ {
+ printf("%02X: %s\n", i, qansel_instruction_to_string(program[i].op));
+ }
+ else
+ {
+ printf("%02X: ERR\n", i);
+ }
+ }
+ printf("================================\n");
+ printf("%i\n", head);
+ for (int i = 0; i < programSize; i++)
+ {
+ printf("%i -> %i\n", i, program[i].next);
+ }
+ printf("================================\n");
+ */
+
+ for (int i = 0; i < programSize; i++)
+ {
+ //printf("%02X: %s (%i)\n", i, qansel_instruction_to_string(program[idx].op), idx);
+
switch (program[idx].op)
{
case QANSEL_INSTRUCTION_X:
if (tmpscore > 1) score += tmpscore;
tmpscore = 0;
}
+ int oidx = idx;
idx = program[idx].next;
+ if (idx == -1) break;
}
return score;
}
int head[2];
head[0] = 0;
head[1] = 0;
+
for (int reorid = 0; reorid < 2; reorid++)
{
while (1)
{
+ head[reorid] = 0;
//find the next unchecked instruction
int found = -1;
int idx = head[reorid];