85 lines
1.2 KiB
C
85 lines
1.2 KiB
C
/*
|
|
int array [1..19]
|
|
loop:
|
|
- shift array by one thing until it is every possible version
|
|
- each time check if it is the solution
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#define HEX_MAX 5
|
|
|
|
int* createHexagon(){
|
|
int* hexagon = malloc(sizeof(int)*(HEX_MAX+1));
|
|
if(hexagon == NULL){
|
|
printf("buy more ram lol\n");
|
|
exit(1);
|
|
}
|
|
for(int i=1; i<=HEX_MAX+1; ++i){
|
|
hexagon[i-1] = i;
|
|
}
|
|
return hexagon;
|
|
}
|
|
|
|
int isSolution(int* h){
|
|
return 1;
|
|
}
|
|
|
|
void swapPlaces(int* h, int a, int b){
|
|
int bb = h[b];
|
|
h[b] = h[a];
|
|
h[a] = bb;
|
|
}
|
|
|
|
void printHexagon(int* h){
|
|
printf("\n== HEXAGON ==\n");
|
|
for(int i=0; i<=HEX_MAX; ++i){
|
|
printf("%d_",h[i]);
|
|
} putchar('\n');
|
|
}
|
|
|
|
void solveHexagon(int* h, int n){
|
|
if(isSolution(h)){
|
|
printf("found solution");
|
|
printHexagon(h);
|
|
//return;
|
|
}
|
|
|
|
int i,j,tmp;
|
|
if(n == 1){
|
|
printf("sorting finished\n");
|
|
return;
|
|
}
|
|
for(i=0; i<n; ++i){
|
|
solveHexagon(h, n-1);
|
|
j = (n % 2 == 1) ? n-1 : 0;
|
|
//swapPlaces(h, n-1, j);
|
|
tmp = h[n-1];
|
|
h[n-1] = h[j];
|
|
h[j] = tmp;
|
|
}
|
|
}
|
|
/*
|
|
|
|
ABC
|
|
|
|
CBA
|
|
CAB
|
|
|
|
BAC
|
|
BCA
|
|
|
|
ACB
|
|
ABC
|
|
|
|
*/
|
|
|
|
int main(){
|
|
int* my_hexagon = createHexagon();
|
|
solveHexagon(my_hexagon,HEX_MAX+1);
|
|
free(my_hexagon);
|
|
|
|
return 0;
|
|
}
|