fafejto
no way to compare when less than two revisions
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| — | fafejto [2015/12/30 20:47] (aktuális) – létrehozva truth | ||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| + | =====Mágus fafejtő===== | ||
| + | Ha mágustanonc vagy és meggyűlt a bajod a varázsbot [[magikus_fa|megszerzésével]], | ||
| + | * Linux - [[https:// | ||
| + | * Windows - [[https:// | ||
| + | ====Forráskód==== | ||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #ifdef linux | ||
| + | #define BCYAN " | ||
| + | #define GREY " | ||
| + | #define RED " | ||
| + | #define RESET " | ||
| + | #else | ||
| + | #define BCYAN "" | ||
| + | #define GREY "" | ||
| + | #define RED "" | ||
| + | #define RESET "" | ||
| + | #endif | ||
| + | |||
| + | int initial[6], actual[6], goal[6], order[6]; | ||
| + | int addition[5][6] = { | ||
| + | { 0, 1, 2, 1, 3, 0 }, | ||
| + | { 1, 0, 0, 1, 1, 1 }, | ||
| + | { 1, 0, 1, 0, 0, 0 }, | ||
| + | { 1, 0, 1, 1, 0, 0 }, | ||
| + | { 1, 0, 1, 0, 0, 1 } | ||
| + | }; | ||
| + | |||
| + | void print_help() { | ||
| + | printf( | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | void print_status() { | ||
| + | int i = 0; | ||
| + | | ||
| + | while(i < 6) fputc(actual[i++]+' | ||
| + | } | ||
| + | |||
| + | void info(char *s) { | ||
| + | printf(" | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | void hiba(char *s) { | ||
| + | printf(" | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | int isnum(char c) { | ||
| + | return c > 47 && c < 58 ? 1 : 0; | ||
| + | } | ||
| + | |||
| + | void numinc(int (*prod)[6], int loc) { | ||
| + | int i; | ||
| + | | ||
| + | for(i = 0;i < 6;i++) { | ||
| + | (*prod)[i] += addition[loc][i]; | ||
| + | if((*prod)[i] > 5) (*prod)[i] -= 6; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void shift_hor(int (*prod)[6]) { | ||
| + | int tmp; | ||
| + | | ||
| + | tmp = (*prod)[2]; | ||
| + | (*prod)[2] = (*prod)[1], (*prod)[1] = (*prod)[0], (*prod)[0] = tmp; | ||
| + | tmp = (*prod)[3]; | ||
| + | (*prod)[3] = (*prod)[4], (*prod)[4] = (*prod)[5], (*prod)[5] = tmp; | ||
| + | } | ||
| + | |||
| + | void rotate(int loc1, int loc2, int loc3, int spec) { | ||
| + | int i, sub; | ||
| + | | ||
| + | if(actual[loc1] != goal[loc2]) { | ||
| + | if((sub = goal[loc2]-actual[loc1]) < 0) sub += 6; | ||
| + | printf(" | ||
| + | print_status(); | ||
| + | for(i = 0;i < sub;i++) numinc(& | ||
| + | fputs(" | ||
| + | if(spec) { | ||
| + | printf(" | ||
| + | print_status(); | ||
| + | for(i = 0;i < 6-sub;i++) numinc(& | ||
| + | fputs(" | ||
| + | } | ||
| + | } | ||
| + | printf(" | ||
| + | print_status(); | ||
| + | shift_hor(& | ||
| + | fputs(" | ||
| + | getchar(), fputc(' | ||
| + | } | ||
| + | |||
| + | void line_eval(char *msg, int (*prod)[6]) { | ||
| + | char buf[256]; | ||
| + | int i; | ||
| + | | ||
| + | do { | ||
| + | printf("> | ||
| + | fgets(buf, | ||
| + | if(strlen(buf) != 7) { | ||
| + | hiba(" | ||
| + | continue; | ||
| + | } | ||
| + | for(i = 0;i < 6;i++) { | ||
| + | if(isnum(buf[i])) (*prod)[i] = buf[i]-' | ||
| + | else { | ||
| + | hiba(" | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | } while(i != 6); | ||
| + | } | ||
| + | |||
| + | int main() { | ||
| + | int i, k, tmp[6], size = sizeof(initial); | ||
| + | | ||
| + | printf(" | ||
| + | print_help(); | ||
| + | | ||
| + | line_eval(" | ||
| + | line_eval(" | ||
| + | | ||
| + | fputc(' | ||
| + | for(i = 1;i < 7;i++) { | ||
| + | printf("# | ||
| + | line_eval(" | ||
| + | | ||
| + | for(k = 1;k < 6;k++) { | ||
| + | if(order[k]) continue; | ||
| + | memcpy(& | ||
| + | if(!memcmp(actual, | ||
| + | order[k] = i; | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | if(k == 6) { | ||
| + | memcpy(& | ||
| + | if(!memcmp(actual, | ||
| + | else { | ||
| + | info(" | ||
| + | return 1; | ||
| + | } | ||
| + | } | ||
| + | memcpy(& | ||
| + | } | ||
| + | | ||
| + | fputs(" | ||
| + | rotate(0, | ||
| + | rotate(0, | ||
| + | rotate(0, | ||
| + | rotate(3, | ||
| + | rotate(3, | ||
| + | rotate(3, | ||
| + | | ||
| + | if(!memcmp(goal, | ||
| + | else { | ||
| + | info(" | ||
| + | return 1; | ||
| + | } | ||
| + | | ||
| + | printf( | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | getchar(); | ||
| + | return 0; | ||
| + | } | ||
| + | |||
| + | </ | ||
fafejto.txt · Utolsó módosítás: 2015/12/30 20:47 szerkesztette: truth