ハノイの塔 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;
}
Author And Source
この問題について(ハノイの塔 64段), 我々は、より多くの情報をここで見つけました https://qiita.com/computerArk/items/e81c879a578217ca0bc2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .