just play, and further for hanoi
#include "stdio.h"
void PrintFloor(int floor)
{
int i,j;
for(i = 0; i < floor; i++)
{
for(j = 0; j < floor-1-i; j++)
{
printf(" ");
}
for(j = 0; j < i*2+1; j++)
{
printf("*");
}
printf("\n");
}
}
void PrintFloorBetter(int floor)
{
int i,j;
for(i = 0; i < floor; i++)
{
for(j = 0; j < floor-1-i; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
printf("\n");
}
}
void PrintDoubleFloorBetter(int floor, int interval)
{
int i,j;
interval += sizeof("* ")*floor;
for(i = 0; i < floor; i++)
{
for(j = 0; j < floor-1-i; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
for(j = 0; j < interval - i*2; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
printf("\n");
}
}
void PrintTripleFloorBetter(int floor, int interval)
{
int i,j;
interval += sizeof("* ")*floor;
for(i = 0; i < floor; i++)
{
for(j = 0; j < floor-1-i; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
for(j = 0; j < interval - i*2; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
for(j = 0; j < interval - i*2; j++)
{
printf(" ");
}
for(j = 0; j < i+1; j++)
{
printf("* ");
}
printf("\n");
}
}
int GetTripleMax(int *a)
{
int i;
int iRet = *a;
for(i=1; i < 3; i++)
{
if(*(a+i) > iRet)
iRet = *(a+i);
}
return iRet;
}
void PrintTripleFloorControl(int *floor, int interval)
{
int i,j;
int space[2];
int top = GetTripleMax(floor+1);
interval += sizeof("* ")*floor[1];
printf("top:%d\n",top);
for(i = 0; i < *floor; i++)
{
if(i < *floor - top)
{
printf("\n");
continue;
}
for(j = 0; j < floor[1]-1-i+(*floor-top); j++)
{
printf(" ");
}
for(j = 0; j < i+1-(*floor-top); j++)
{
printf("* ");
}
for(j = 0; j < interval - i*2; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(*floor-top); j++)
{
printf("* ");
}
for(j = 0; j < interval - i*2; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(*floor-top); j++)
{
printf("* ");
}
printf("\n");
}
}
void PrintFloorTripleControl(int *floor, int interval)
{
int i,j;
int space[2];
int tmpInterval;
int top = GetTripleMax(floor+1);
printf("top:%d\n",top);
for(i = 0; i < *floor; i++)
{
if(i < *floor - top)
{
printf("\n");
continue;
}
for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[1]); j++)
{
printf("* ");
}
tmpInterval = floor[1] - (i+1-(floor[0]-floor[1]));
tmpInterval += floor[2] - (i+1-(floor[0]-floor[2]));
tmpInterval += interval;
for(j = 0; j < tmpInterval; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[2]); j++)
{
printf("* ");
}
tmpInterval = floor[2] - (i+1-(floor[0]-floor[2]));
tmpInterval += floor[3] - (i+1-(floor[0]-floor[3]));
tmpInterval += interval;
for(j = 0; j < tmpInterval; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[3]); j++)
{
printf("* ");
}
printf("\n");
}
}
void PrintFloorTripleControlBetter(int *floor, int interval)
{
int i,j;
int space[2];
int tmpInterval;
int top = GetTripleMax(floor+1);
printf("top:%d\n",top);
for(i = 0; i < *floor; i++)
{
if(i < *floor - top)
{
printf("\n");
continue;
}
for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[1]); j++)
{
printf("* ");
}
tmpInterval = floor[0] - (i+1-(floor[0]-floor[1]));
tmpInterval += floor[0] - (i+1-(floor[0]-floor[2]));
tmpInterval += interval;
for(j = 0; j < tmpInterval; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[2]); j++)
{
printf("* ");
}
tmpInterval = floor[0] - (i+1-(floor[0]-floor[2]));
tmpInterval += floor[0] - (i+1-(floor[0]-floor[3]));
tmpInterval += interval;
for(j = 0; j < tmpInterval; j++)
{
printf(" ");
}
for(j = 0; j < i+1-(floor[0]-floor[3]); j++)
{
printf("* ");
}
printf("\n");
}
}
int main(void)
{
int i,j;
int floor;
int control[4];
printf("input floors:\n");
scanf("%d",&floor);
printf("floors %d\n\n",floor);
PrintFloor(floor);
printf("\n");
PrintFloorBetter(floor);
printf("\n");
PrintDoubleFloorBetter(floor, 5);
printf("\n");
PrintTripleFloorBetter(floor, 5);
printf("\n");
control[0] = floor;
control[1] = floor-1;
control[2] = floor-1;
control[3] = floor-1;
PrintTripleFloorControl(control,5);
printf("\n");
#if 1
control[1] = floor-1;
control[2] = floor-4;
control[3] = floor-3;
#endif
#if 0
control[1] = floor-1;
control[2] = floor-1;
control[3] = floor-1;
#endif
PrintFloorTripleControlBetter(control,5);
return 0;
}