Skip to content

Instantly share code, notes, and snippets.

@rubenhortas
Last active May 5, 2024 18:12
Show Gist options
  • Save rubenhortas/58460be6b445a438ee86bcb23f87b2a5 to your computer and use it in GitHub Desktop.
Save rubenhortas/58460be6b445a438ee86bcb23f87b2a5 to your computer and use it in GitHub Desktop.
math puzzle for third graders solver
/*
Code to find all the permutations that solve the math puzzle for third graders from the image.
You're supposed to fill the blanks with the numbers 1 through 9 using each digit once.
Usage:
- Compile: gcc -O3 mathPyzzleForThirdGraders.c -o mathPyzzleForThirdGraders.out
- Run: ./mathPyzzleForThirdGraders.out
*/
#include <stdio.h>
#include <stdlib.h>
void initializeArray(float *array, int arrayLength) {
int i;
for(i = 0; i < arrayLength; i++) {
array[i] = (float)i+1.0;
}
}
void printArray(float *array, int arrayLength) {
int i;
for(i = 0; i < arrayLength; i++) {
printf("%g", array[i]);
if(i < arrayLenght -1) {
printf(",");
}
}
printf("\n");
}
void swap(float *array, int x, int y) {
float tmp = array[x];
array[x] = array[y];
array[y] = tmp;
}
void solvePuzzle(float * array, int arrayLength) {
float result = array[0] + ((13 * array[1]) / array[2]) + array[3] + (12 * array[4]) - array[5] - 11 + ((array[6] * array[7]) / array[8]) -10;
if(result == 66) {
printArray(array, arrayLength);
}
}
void permute(float *array, int left, int right, int arrayLength) {
int i;
if(left == right) {
solvePuzzle(array, arrayLength);
}
else {
for (i = left; i <= right; i++) {
swap(array, left, i);
permute(array, left+1, right, arrayLength);
swap(array, left, i); // Backtrack
}
}
}
void main() {
float array[9];
int arrayLength = (sizeof(array)/sizeof(int));
initializeArray(array, arrayLength);
permute(array, 0, arrayLength-1, arrayLength);
}
1,2,6,4,7,8,5,3,9
1,2,6,4,7,8,3,5,9
1,3,2,4,5,8,7,9,6
1,3,2,4,5,8,9,7,6
1,3,2,9,5,6,7,4,8
1,3,2,9,5,6,4,7,8
1,3,4,7,6,5,2,9,8
1,3,4,7,6,5,9,2,8
1,3,6,2,7,9,5,4,8
1,3,6,2,7,9,4,5,8
1,3,9,4,7,8,5,2,6
1,3,9,4,7,8,2,5,6
1,4,8,2,7,9,5,3,6
1,4,8,2,7,9,3,5,6
1,5,3,9,4,2,7,8,6
1,5,3,9,4,2,8,7,6
1,5,2,3,4,8,7,9,6
1,5,2,3,4,8,9,7,6
1,5,2,8,4,7,3,9,6
1,5,2,8,4,7,9,3,6
1,9,6,4,5,8,7,3,2
1,9,6,4,5,8,3,7,2
1,9,6,7,5,2,4,3,8
1,9,6,7,5,2,3,4,8
2,1,4,3,7,9,5,6,8
2,1,4,3,7,9,6,5,8
2,3,6,1,7,9,5,4,8
2,3,6,1,7,9,4,5,8
2,4,8,1,7,9,5,3,6
2,4,8,1,7,9,3,5,6
2,8,6,9,4,1,7,5,3
2,8,6,9,4,1,5,7,3
2,9,6,3,5,1,7,4,8
2,9,6,3,5,1,4,7,8
3,2,1,5,4,7,8,9,6
3,2,1,5,4,7,9,8,6
3,2,4,8,5,1,7,9,6
3,2,4,8,5,1,9,7,6
3,2,8,6,5,1,7,9,4
3,2,8,6,5,1,9,7,4
3,1,4,2,7,9,5,6,8
3,1,4,2,7,9,6,5,8
3,5,2,1,4,8,7,9,6
3,5,2,1,4,8,9,7,6
3,6,4,9,5,8,7,1,2
3,6,4,9,5,8,1,7,2
3,9,6,2,5,1,7,4,8
3,9,6,2,5,1,4,7,8
3,9,2,8,1,5,7,6,4
3,9,2,8,1,5,6,7,4
4,2,6,1,7,8,5,3,9
4,2,6,1,7,8,3,5,9
4,3,2,1,5,8,7,9,6
4,3,2,1,5,8,9,7,6
4,3,9,1,7,8,5,2,6
4,3,9,1,7,8,2,5,6
4,9,6,1,5,8,7,3,2
4,9,6,1,5,8,3,7,2
5,2,1,3,4,7,8,9,6
5,2,1,3,4,7,9,8,6
5,3,1,7,2,6,8,9,4
5,3,1,7,2,6,9,8,4
5,4,1,9,2,7,8,3,6
5,4,1,9,2,7,3,8,6
5,4,8,9,6,7,1,3,2
5,4,8,9,6,7,3,1,2
5,1,2,9,6,7,3,4,8
5,1,2,9,6,7,4,3,8
5,7,2,8,3,9,1,6,4
5,7,2,8,3,9,6,1,4
5,9,3,6,2,1,7,8,4
5,9,3,6,2,1,8,7,4
6,2,8,3,5,1,7,9,4
6,2,8,3,5,1,9,7,4
6,3,1,9,2,5,7,8,4
6,3,1,9,2,5,8,7,4
6,9,3,5,2,1,7,8,4
6,9,3,5,2,1,8,7,4
7,2,8,9,6,5,1,3,4
7,2,8,9,6,5,3,1,4
7,3,2,8,5,9,1,6,4
7,3,2,8,5,9,6,1,4
7,3,4,1,6,5,2,9,8
7,3,4,1,6,5,9,2,8
7,3,1,5,2,6,8,9,4
7,3,1,5,2,6,9,8,4
7,5,2,8,4,9,1,3,6
7,5,2,8,4,9,3,1,6
7,6,4,8,5,9,1,3,2
7,6,4,8,5,9,3,1,2
7,1,4,9,6,5,2,3,8
7,1,4,9,6,5,3,2,8
7,9,6,1,5,2,4,3,8
7,9,6,1,5,2,3,4,8
8,2,4,3,5,1,7,9,6
8,2,4,3,5,1,9,7,6
8,3,2,7,5,9,1,6,4
8,3,2,7,5,9,6,1,4
8,5,2,7,4,9,3,1,6
8,5,2,7,4,9,1,3,6
8,5,2,1,4,7,3,9,6
8,5,2,1,4,7,9,3,6
8,6,4,7,5,9,3,1,2
8,6,4,7,5,9,1,3,2
8,7,2,5,3,9,1,6,4
8,7,2,5,3,9,6,1,4
8,9,2,3,1,5,7,6,4
8,9,2,3,1,5,6,7,4
9,2,8,7,6,5,3,1,4
9,2,8,7,6,5,1,3,4
9,3,2,1,5,6,7,4,8
9,3,2,1,5,6,4,7,8
9,3,1,6,2,5,7,8,4
9,3,1,6,2,5,8,7,4
9,4,8,5,6,7,3,1,2
9,4,8,5,6,7,1,3,2
9,4,1,5,2,7,8,3,6
9,4,1,5,2,7,3,8,6
9,5,3,1,4,2,7,8,6
9,5,3,1,4,2,8,7,6
9,6,4,3,5,8,7,1,2
9,6,4,3,5,8,1,7,2
9,8,6,2,4,1,7,5,3
9,8,6,2,4,1,5,7,3
9,1,4,7,6,5,3,2,8
9,1,4,7,6,5,2,3,8
9,1,2,5,6,7,4,3,8
9,1,2,5,6,7,3,4,8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment