/*
* File: Main.c
* Author: Tom
*
*/
#include <stdio.h>
#include <stdlib.h>
void swap(int c, int firstIndex, int secondIndex);
void permut(int c, int endIndex);
int main(int argc, char** argv) {
int num[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
permut(num, 9);
}
void permut(int *c, int endIndex){
if(endIndex == 0){
if (pruefe(c)) {
for (int i = 0; i < 10; ++i) {
printf("%d = %d\n", i, c[i]);
}
puts("");
}
}else{
permut(c,endIndex-1);
int i;
for(i = 0; i<endIndex;i++){
swap(c,i,endIndex);
permut(c,endIndex-1);
swap(c,i,endIndex);
}
}
}
void swap(int c, int firstIndex, int secondIndex){
int tmp = c[firstIndex];
c[firstIndex] = c[secondIndex];
c[secondIndex] = tmp;
}
bool pruefe(int x[10])
{
// Rechnungen pruefen
if( (x[0]*1000+x[1]*100+x[2]*10+x[3]) /
(x[4]*10+x[5]) ==
(x[4]*100+x[6]*10+x[3])
&&
(x[7]*1000+x[8]*100+x[9]*10+x[4]) -
(x[7]*1000+x[8]*100+x[1]*10+x[6])==
(x[5]*10+x[4])
&&
(x[9]*1000+x[8]*100+x[3]*10+x[1]) -
(x[7]*1000+x[8]*100+x[3]*10+x[5]) ==
(x[2]*1000+x[6]*100+x[6]*10+x[2])
&&
(x[0]*1000+x[1]*100+x[2]*10+x[3]) -
(x[7]*1000+x[8]*100+x[9]*10+x[4]) ==
(x[9]*1000+x[8]*100+x[3]*10+x[1])
&&
(x[4]*10+x[5]) +
(x[7]*1000+x[8]*100+x[1]*10+x[6]) ==
(x[7]*1000+x[8]*100+x[3]*10+x[5])
&&
(x[4]*100+x[6]*10+x[3]) *
(x[5]*10+x[4]) ==
(x[2]*1000+x[6]*100+x[6]*10+x[2])
)
{
return true;
}
else
return false;
}