||
#include <string.h>
#include <stdio.h>
void main()
{
int initialization();//定义初始化图像函数
int photo(int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42);//定义图像处理函数
int number1();//定义图像处理分函数
int number2();//定义图像处理分函数
int number3();//定义图像处理分函数
int number4();//定义图像处理分函数
int number5();//定义图像处理分函数
int number(); //定义图像处理分函数
int manage(int a); //定义数据处理函数
int master();//定义核心函数
int ceiling(int a,int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42); //定义顶层数字监测函数
int floor(int a,int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42); //定义顶层数字监测函数
int survey(int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42,int have1);//定义退出函数
char a;//a:移动次数变量
char b[10];
printf("please wait...\n");
printf("being initialization now\n");
initialization();//初始化图像
s: printf("please input move number(1-5)\n");
scanf("%c",&a);//接收移动次数
if(49<=a&&a<=53)//判断移动次数取值范围
{
printf("your input move number is %c\n",a);
}
else
{
printf("input error,please input again\n");
goto s;
}
printf("confirm,please input yes,no please import other key \n");
scanf("%s",&b);
if(0==strcmp("yes",b))//判断输入次数是否正确
{
printf("please wait ...\n");
printf("being processed\n");
a=a-48;//使a变回移动次数
manage(a);//调用主函数
}
else
{
printf("please again import move number\n");
goto s;
}
}
int photo(int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42)
{
int x=0,y=1,z=0,f=0;
int q[15]={q00,q01,q02,
q10,q11,q12,
q20,q21,q22,
q30,q31,q32,
q40,q41,q42};
while(f!=15)
{
while(z!=3)
{
if(q[x]!=0)
{
if(q[x]==y)
{
number1();
y=1;
x++;
}
else
{
y++;
if(q[x]==y)
{
number2();
y=1;
x++;
}
else
{
y++;
if(q[x]==y)
{
number3();
y=1;
x++;
}
else
{
y++;
if(q[x]==y)
{
number4();
y=1;
x++;
}
else
{
number5();
y=1;
x++;
}
}
}
}
}
else
{
number();
x++;
}
z++;
f++;
}
printf("\n");
z=0;
}
}
int initialization()
{
photo(1,0,0,
2,0,0,
3,0,0,
4,0,0,
5,0,0);
}
int number1()
{
printf(" * ");
}
int number2()
{
printf(" * * ");
}
int number3()
{
printf(" * * * ");
}
int number4()
{
printf(" * * * * ");
}
int number5()
{
printf("* * * * *");
}
int number()
{
printf(" | ");
}
int manage(int a)
{
static int k=0;//k:跌代阀门
for(;k!=1;)
{
if(a==2)
{
a--;
k++;
break;
}
else
{
a--;
manage(a);
}
}
master();//调用核心函数
}
int ceiling(int a,int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42)
{
int f=0;
int q[15]={q00,q01,q02,
q10,q11,q12,
q20,q21,q22,
q30,q31,q32,
q40,q41,q42,};
if(a==2)
{
a=13;
}
else
{
a=14;
}
for(;q[a]!=0;a=a-3,f++)
{
if(a==-2||a==-1)
{
break;
}
}
if(f==0)
{
}
else
{
a=a+3;
}
return a;
}
int floor(int a,int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42)
{
int f=0;
int q[15]={q00,q01,q02,
q10,q11,q12,
q20,q21,q22,
q30,q31,q32,
q40,q41,q42,};
for(;q[a]==0||q[12]==0;a=a+3,f++)
{
if(q[12]==0)
{
return 12;
}
}
if(f==0)
{
}
else
{
}
return a;
}
int survey(int q00,int q01,int q02,
int q10,int q11,int q12,
int q20,int q21,int q22,
int q30,int q31,int q32,
int q40,int q41,int q42,int have1)
{
int q[15]={q00,q01,q02,
q10,q11,q12,
q20,q21,q22,
q30,q31,q32,
q40,q41,q42,};
int remainder,have3,w;
remainder=have1%3;
if(remainder==2)
{
have1=14;
have3=11;
}
else
{
have1=13;
have3=10;
}
for(;1;)
{
w=q[have1]-q[have3];
if(q[have1]!=0&&have3!=-2)
{
if(w==1)
{
have1=have1-3;
have3=have3-3;
continue;
}
else
{
break;
}
}
else
{
return 1;
}
}
return 0;
}
int master()
{
int d,z,b,i,v,answer;//d:调换中介变量;z:第一柱柱顶位置变量;b:第二柱柱顶位置变量;i:第三柱柱顶位置变量;v调换签名变量;answer:回复变量
int t[3]={123,456,789};//初始化签名变量
static int q[15]={1,0,0,//定义立体图像变量
2,0,0,
3,0,0,
4,0,0,
5,0,0};
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[b]==0||q[i]==0)
{
if(q[b]==0&&q[i]==0)
{
d=q[z];
q[z]=q[b];
q[b]=d;
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
d=q[z];
q[z]=q[i];
q[i]=d;
v=t[1];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
}
else if(q[b]==0)
{
d=q[z];
q[z]=q[b];
q[b]=d;
v=t[0];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
}
else
{
d=q[z];
q[z]=q[i];
q[i]=d;
v=t[1];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
}
}
for(;1;)
{
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
one: if(q[z]<q[b]&&q[z]!=0&&v!=t[0]||q[b]==0)//第一柱为起始调换
{
if(q[b]!=0)
{
b=b-3;
}
d=q[z];
q[z]=q[b];
q[b]=d;
v=t[0];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto three;
}
else if(q[z]<q[i]&&q[z]!=0&&v!=t[1]||q[i]==0)
{
if(q[i]!=0)
{
i=i-3;
}
d=q[z];
q[z]=q[i];
q[i]=d;
v=t[1];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto two;
}
two: if(q[b]<q[i]&&q[b]!=0&&v!=t[2]||q[i]==0)//第二柱为起始调换
{
if(q[i]!=0)
{
i=i-3;
}
d=q[b];
q[b]=q[i];
q[i]=d;
v=t[2];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto one;
}
else if(q[b]<q[z]&&q[b]!=0&&v!=t[0]||(q[z]==0&&v!=t[0]))
{
if(q[z]!=0)
{
z=z-3;
}
d=q[b];
q[b]=q[z];
q[z]=d;
v=t[0];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto three;
}
three:if(q[i]<q[z]&&q[i]!=0&&v!=t[1]||q[z]==0)//第三柱为起始调换
{
if(q[z]!=0)
{
z=z-3;
}
d=q[i];
q[i]=q[z];
q[z]=d;
v=t[1];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto two;
}
else if(q[i]<q[b]&&q[i]!=0&&v!=t[2]||q[b]==0)
{
if(q[b]!=0)
{
b=b-3;
}
d=q[i];
q[i]=q[b];
q[b]=d;
v=t[2];
photo(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
printf("if ok,please input any key carry on\n");
getch();
z=floor(0,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
b=ceiling(2,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
i=ceiling(3,q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14]);
if(q[i]==1&&q[b]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],i);
if(answer==1)
{
break;
}
else
{
}
}
else if(q[b]==1&&q[i]==0)
{
answer=survey(q[0],q[1],q[2],
q[3],q[4],q[5],
q[6],q[7],q[8],
q[9],q[10],q[11],
q[12],q[13],q[14],b);
if(answer==1)
{
break;
}
else
{
}
}
goto one;
}
}
}
小黑屋|手机版|Archiver|鱼C工作室
( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2025-10-5 03:06
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.