ハノイの塔 64段


include

include

//詰まるところbar[バーの高さ][バーの位置]
int barbel[65][4] = { { 0,0,0,0 },{ 1,0,0,0 },{ 2,0,0,0 } ,{ 3,0,0,0 } ,{ 4,0,0,0 },{ 5,0,0,0 },
{6,0,0,0},{7,0,0,0},{8,0,0,0},{9,0,0,0},{10,0,0,0},{11,0,0,0},{12,0,0,0},{13,0,0,0},
{14,0,0,0},{15,0,0,0},{16,0,0,0},{17,0,0,0},{18,0,0,0},{19,0,0,0},{20,0,0,0},{21,0,0,0},{22,0,0,0},
{23,0,0,0},{24,0,0,0},{25,0,0,0},{26,0,0,0},{27,0,0,0},{28,0,0,0},{29,0,0,0},{30,0,0,0},{31,0,0,0},
{32,0,0,0},{33,0,0,0},{34,0,0,0},{35,0,0,0},{36,0,0,0},{37,0,0,0},{38,0,0,0},{39,0,0,0},{40,0,0,0},
{41,0,0,0},{42,0,0,0},{43,0,0,0},{44,0,0,0},{45,0,0,0},{46,0,0,0},{47,0,0,0},{48,0,0,0},{49,0,0,0},
{50,0,0,0},{51,0,0,0},{52,0,0,0},{53,0,0,0},{54,0,0,0},{55,0,0,0},{56,0,0,0},{57,0,0,0},{58,0,0,0},
{59,0,0,0},{60,0,0,0},{61,0,0,0},{62,0,0,0},{63,0,0,0},{64,0,0,0} };/こう書くとゼロクリアされる/
//やはり高さはいる
int bartakasa[3] = { 0,64,64 };

char barbel0[] = { " " };
char barbel1[] = { " # " };
char barbel2[] = { " ### " };
char barbel3[] = { " ##### " };
char barbel4[] = { " ####### " };
char barbel5[] = { " ######### " };
char barbel6[] = { " ########### " };
char barbel7[] = { " ############# " };
char barbel8[] = { " ############### " };
char barbel9[] = { " ################# " };
char barbel10[] = { " ################### " };
char barbel11[] = { " ##################### " };
char barbel12[] = { " ####################### " };
char barbel13[] = { " #########################" };
char barbel14[] = { " ###########################" };
char barbel15[] = { " #############################" };
char barbel16[] = { " ###############################" };
char barbel17[] = { " #################################" };
char barbel18[] = { " ###################################" };
char barbel19[] = { " #####################################" };
char barbel20[] = { " #######################################" };
char barbel21[] = { " #########################################" };
char barbel22[] = { " ###########################################" };
char barbel23[] = { " #############################################" };
char barbel24[] = { " ###############################################" };
char barbel25[] = { " #################################################" };
char barbel26[] = { " ###################################################" };
char barbel27[] = { " #####################################################" };
char barbel28[] = { " #######################################################" };
char barbel29[] = { " #########################################################" };
char barbel30[] = { " ###########################################################" };
char barbel31[] = { " #############################################################" };
char barbel32[] = { " ###############################################################" };
char barbel33[] = { " #################################################################" };
char barbel34[] = { " ###################################################################" };
char barbel35[] = { " #####################################################################" };
char barbel36[] = { " #######################################################################" };
char barbel37[] = { " #########################################################################" };
char barbel38[] = { " ###########################################################################" };
char barbel39[] = { " #############################################################################" };
char barbel40[] = { " ###############################################################################" };
char barbel41[] = { " #################################################################################" };
char barbel42[] = { " ###################################################################################" };
char barbel43[] = { " #####################################################################################" };
char barbel44[] = { " #######################################################################################" };
char barbel45[] = { " #########################################################################################" };
char barbel46[] = { " ###########################################################################################" };
char barbel47[] = { " #############################################################################################" };
char barbel48[] = { " ###############################################################################################" };
char barbel49[] = { " #################################################################################################" };
char barbel50[] = { " ###################################################################################################" };
char barbel51[] = { " #####################################################################################################" };
char barbel52[] = { " #######################################################################################################" };
char barbel53[] = { " #########################################################################################################" };
char barbel54[] = { " ###########################################################################################################" };
char barbel55[] = { " #############################################################################################################" };
char barbel56[] = { " ###############################################################################################################" };
char barbel57[] = { " #################################################################################################################" };
char barbel58[] = { " ###################################################################################################################" };
char barbel59[] = { " #####################################################################################################################" };
char barbel60[] = { " #######################################################################################################################" };
char barbel61[] = { " #########################################################################################################################" };
char barbel62[] = { " ###########################################################################################################################" };
char barbel63[] = { " #############################################################################################################################" };
char barbel64[] = { " ###############################################################################################################################" };

void move(int, int);
void syokika(void);
int takasacheck(int, int, int);
int main(void)
{
int i;
syokika();
for (i = 1; i <=18446744073709551615 ; i++) {
printf("%d回目\n", i);
move((i&(i - 1)) % 3, ((i | (i - 1)) + 1) % 3);
syokika();
}

system("Pause");
return 0;

}
void move(int idoumoto, int idousaki)
{
int idoumototakasa = 0;
int idousakitakasa = 0;
idoumototakasa = bartakasa[idoumoto];
idousakitakasa = bartakasa[idousaki];
idoumototakasa = takasacheck(idoumototakasa, idoumoto, idousaki);

barbel[idousakitakasa][idousaki] = barbel[idoumototakasa][idoumoto];
barbel[idoumototakasa][idoumoto] = 0;

bartakasa[idousaki] = bartakasa[idousaki] - 1;
bartakasa[idoumoto] = bartakasa[idoumoto] + 1;

}
void syokika(void) {
int i;
int j;

for (i = 0; i < 65; i++) {
    for (j = 0; j < 4; j++) {
        switch (barbel[i][j]) {
            //文字列なので’が必要
        case 0:
            printf("%s", barbel0);
            break;
        case 1:
            printf("%s", barbel1);
            break;
        case 2:
            printf("%s", barbel2);
            break;
        case 3:
            printf("%s", barbel3);
            break;
        case 4:
            printf("%s", barbel4);
            break;
        case 5:
            printf("%s", barbel5);
            break;
        case 6:
            printf("%s", barbel6);
            break;
        case 7:
            printf("%s", barbel7);
            break;
        case 8:
            printf("%s", barbel8);
            break;
        case 9:
            printf("%s", barbel9);
            break;
        case 10:
            printf("%s", barbel10);
            break;
        case 11:
            printf("%s", barbel11);
            break;
        case 12:
            printf("%s", barbel12);
            break;
        case 13:
            printf("%s", barbel13);
            break;
        case 14:
            printf("%s", barbel14);
            break;
        case 15:
            printf("%s", barbel15);
            break;
        case 16:
            printf("%s", barbel16);
            break;
        case 17:
            printf("%s", barbel17);
            break;
        case 18:
            printf("%s", barbel18);
            break;
        case 19:
            printf("%s", barbel19);
            break;
        case 20:
            printf("%s", barbel20);
            break;
        case 21:
            printf("%s", barbel21);
            break;
        case 22:
            printf("%s", barbel22);
            break;
        case 23:
            printf("%s", barbel23);
            break;
        case 24:
            printf("%s", barbel24);
            break;
        case 25:
            printf("%s", barbel25);
            break;
        case 26:
            printf("%s", barbel26);
            break;
        case 27:
            printf("%s", barbel27);
            break;
        case 28:
            printf("%s", barbel28);
            break;
        case 29:
            printf("%s", barbel29);
            break;
        case 30:
            printf("%s", barbel30);
            break;
        case 31:
            printf("%s", barbel31);
            break;
        case 32:
            printf("%s", barbel32);
            break;
        case 33:
            printf("%s", barbel33);
            break;
        case 34:
            printf("%s", barbel34);
            break;
        case 35:
            printf("%s", barbel35);
            break;
        case 36:
            printf("%s", barbel36);
            break;
        case 37:
            printf("%s", barbel37);
            break;
        case 38:
            printf("%s", barbel38);
            break;
        case 39:
            printf("%s", barbel39);
            break;
        case 40:
            printf("%s", barbel40);
            break;
        case 41:
            printf("%s", barbel41);
            break;
        case 42:
            printf("%s", barbel42);
            break;
        case 43:
            printf("%s", barbel43);
            break;
        case 44:
            printf("%s", barbel44);
            break;
        case 45:
            printf("%s", barbel45);
            break;
        case 46:
            printf("%s", barbel46);
            break;
        case 47:
            printf("%s", barbel47);
            break;
        case 48:
            printf("%s", barbel48);
            break;
        case 49:
            printf("%s", barbel49);
            break;
        case 50:
            printf("%s", barbel50);
            break;
        case 51:
            printf("%s", barbel51);
            break;
        case 52:
            printf("%s", barbel52);
            break;
        case 53:
            printf("%s", barbel53);
            break;
        case 54:
            printf("%s", barbel54);
            break;
        case 55:
            printf("%s", barbel55);
            break;
        case 56:
            printf("%s", barbel56);
            break;
        case 57:
            printf("%s", barbel57);
            break;
        case 58:
            printf("%s", barbel58);
            break;
        case 59:
            printf("%s", barbel59);
            break;
        case 60:
            printf("%s", barbel60);
            break;
        case 61:
            printf("%s", barbel61);
            break;
        case 62:
            printf("%s", barbel62);
            break;
        case 63:
            printf("%s", barbel63);
            break;
        case 64:
            printf("%s", barbel64);
            break;

        }
    }printf("\n");
}printf("-------------------------------------------------------\n");

}
int takasacheck(int idoumototakasa, int idoumoto, int idousaki) {

if (barbel[idoumototakasa][idoumoto] == 0)
{
    idoumototakasa = idoumototakasa + 1;
    idoumototakasa = takasacheck(idoumototakasa, idoumoto, idousaki);
}
return idoumototakasa;

}