/* * phase2b.c - To defeat this stage the user must enter the geometric * sequence starting at 1, with a factor of 2 between each number */ void phase_2(char *input) { #if defined(PROBLEM) int i; int numbers[6]; read_six_numbers(input, numbers); if (numbers[0] != 1) explode_bomb(); for(i = 1; i < 6; i++) { if (numbers[i] != numbers[i-1] * 2) explode_bomb(); } #elif defined(SOLUTION) printf("1 2 4 8 16 32\n"); #else invalid_phase("2b"); #endif }
int main() { int arr[6]; read_six_numbers(arr); return(0); }
void phase_6(char *input) { #if defined(PROBLEM) listNode *start = &node1; listNode *p; int indices[6]; listNode *pointers[6]; int i, j; read_six_numbers(input, indices); /* Check the range of the indices and whether or not any repeat */ for (i = 0; i < 6; i++) { if ((indices[i] < 1) || (indices[i] > 6)) explode_bomb(); for (j = i + 1; j < 6; j++) { if (indices[i] == indices[j]) explode_bomb(); } } /* Reverse the permutation */ for (i = 0; i < 6; i++) { indices[i] = 7 - indices[i]; } /* Rearrange the list according to the user input */ for (i = 0; i < 6; i++) { p = start; for (j = 1; j < indices[i]; j++) p = p -> next; pointers[i] = p; } start = pointers[0]; p = start; for (i = 1; i < 6; i++) { p->next = pointers[i]; p = p->next; } p->next = NULL; /* Now see if the list is sorted in descending order*/ p = start; for (i = 0; i < 5; i++) { if (p->value < p->next->value) explode_bomb(); p = p->next; } #elif defined(SOLUTION) listNode *start = &node1; listNode *p; /* sort */ start = fun6(start); /* emit the (inverted) node indices of the sorted list */ p = start; while (p) { printf("%d ", 7 - p->index); p = p->next; } printf("\n"); #else invalid_phase("6b"); #endif }