?? cproc.cpp
字號:
#include <iostream>
#include "Cproc.h"
using namespace std;
Cproc::Cproc(void)
{
_step = 0;
for(int i=0;i<9;i++)
_yu.push_back((char)i+'1');
_yu.push_back('0');
x90 = true;
}
char* Cproc::select(void)
{
vector<char>::iterator pos = _yu.begin();
list<res>::iterator end = _l.end();
int help = 0;
int ski = 0;
switch(_step)
{
case 0: //試探1234
for(int i=0;i<4;i++)
_temp.di[i] = *(pos + _step * 4 + i);
_step++;
break;
case 1:
end--;
help = end->cl[2];
switch(help)
{
case 0: //無1234
for(int i=0;i<4;i++)
_temp.di[i] = *(pos + _step * 4 + i);
_step = 15;
break;
case 1: //試探5678
case 2:
for(int i=0;i<4;i++)
_temp.di[i] = *(pos + _step * 4 + i);
_step++;
break;
case 3:
for(int i=0;i<4;i++)
_temp.di[i] = *(pos + _step * 4 + i);
_step = 14;
break;
case 4: //一階段完成
_temp.di[0] = 0;
break;
default:
break;
}
break;
case 2:
end--;
help = end->cl[2] + (--end)->cl[2];
switch(help)
{
case 2: //確定90
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 11;
break;
case 3: //郁悶情況
help = end->cl[2];
if(help==2)
{
_swap(pos + 0,pos + 4);
_swap(pos + 1,pos + 5);
_swap(pos + 2,pos + 6);
_swap(pos + 3,pos + 7);
}
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 3;
break;
case 4: //確定非90
help = end->cl[2];
x90 = false;
switch(help)
{
case 1:
_swap(pos + 0,pos + 4);
_swap(pos + 1,pos + 5);
_swap(pos + 2,pos + 6);
_swap(pos + 3,pos + 7);
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 11;
break;
case 2:
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 3;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3: //確定前八
end--;
help = end->cl[2];
switch(help)
{
case 1:
if(x90)
{
_swap(pos + 0,pos + 8);
_swap(pos + 1,pos + 9);
}
_swap(pos + 0,pos + 2);
break;
case 2:
if(x90)
{
_swap(pos + 2,pos + 8);
_swap(pos + 3,pos + 9);
}
_swap(pos + 0,pos + 2);
break;
default:
break;
}
_step++;
case 4:
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step++;
break;
case 5:
end--;
help = end->cl[2];
switch(help)
{
case 0:
_swap(pos + 0,pos + 2);
_swap(pos + 1,pos + 3);
_step++;
break;
case 1:
_swap(pos + 0,pos + 3);
_step++;
break;
case 2:
_step++;
break;
default:
break;
}
case 6:
_temp.di[0] = *(pos + 0);
_temp.di[1] = *(pos + 1);
_temp.di[2] = *(pos + 4);
_temp.di[3] = *(pos + 5);
_step++;
break;
case 7: //測試5678
end--;
help = end->cl[2];
switch(help)
{
case 0:
_swap(pos + 0,pos + 6);
_swap(pos + 1,pos + 7);
_temp.di[0] = 0;
break;
case 1:
_swap(pos + 0,pos + 2);
_swap(pos + 1,pos + 3);
_swap(pos + 5,pos + 6);
_temp.di[2] = *(pos + 4);
_temp.di[3] = *(pos + 5);
_temp.di[0] = *(pos + 0);
_temp.di[1] = *(pos + 1);
_step++;
break;
case 2:
_swap(pos + 4,pos + 6);
_swap(pos + 5,pos + 7);
_temp.di[2] = *(pos + 4);
_temp.di[3] = *(pos + 5);
_temp.di[0] = *(pos + 0);
_temp.di[1] = *(pos + 1);
_step = 10;
break;
case 3:
_swap(pos + 5,pos + 6);
_temp.di[2] = *(pos + 4);
_temp.di[3] = *(pos + 5);
_temp.di[0] = *(pos + 0);
_temp.di[1] = *(pos + 1);
_step++;
break;
case 4:
_swap(pos + 2,pos + 4);
_swap(pos + 3,pos + 5);
_temp.di[0] = 0;
break;
default:
break;
}
break;
case 8:
end--;
help = end->cl[2];
switch(help)
{
case 2:
_swap(pos + 6,pos + 2);
_swap(pos + 7,pos + 3);
_temp.di[0] = 0;
break;
case 3:
_swap(pos + 4,pos + 6);
_temp.di[0] = *(pos + 4);
_temp.di[1] = *(pos + 5);
_temp.di[2] = *(pos + 1);
_temp.di[3] = *(pos + 0);
_step = 9;
break;
case 4:
_swap(pos + 4,pos + 2);
_swap(pos + 5,pos + 3);
_temp.di[0] = 0;
default:
break;
}
break;
case 9:
end--;
help = end->cl[2];
switch(help)
{
case 2:
_swap(pos + 6,pos + 2);
_swap(pos + 7,pos + 3);
_temp.di[0] = 0;
break;
case 4:
_swap(pos + 4,pos + 2);
_swap(pos + 5,pos + 3);
_temp.di[0] = 0;
default:
break;
}
break;
case 10:
end--;
help = end->cl[2];
switch(help)
{
case 0:
_swap(pos + 6,pos + 0);
_swap(pos + 7,pos + 1);
_temp.di[0] = 0;
break;
case 4:
_swap(pos + 4,pos + 2);
_swap(pos + 5,pos + 3);
_temp.di[0] = 0;
default:
break;
}
break;
case 11:
end--;
help = end->cl[2];
switch(help)
{
case 1:
if(!x90)
{
_swap(pos + 2,pos + 8);
_swap(pos + 3,pos + 9);
}
break;
case 2:
if(!x90)
{
_swap(pos + 0,pos + 8);
_swap(pos + 1,pos + 9);
}
_swap(pos + 0,pos + 2);
_swap(pos + 1,pos + 3);
break;
default:
break;
}
_temp.di[0] = *(pos + 4);
_temp.di[1] = *(pos + 5);
_temp.di[2] = *(pos + 8);
_temp.di[3] = *(pos + 9);
_step++;
break;
case 12:
end--;
help = end->cl[2];
if(help==3)
{
_swap(pos + 4,pos + 2);
_swap(pos + 5,pos + 3);
}
else
{
_swap(pos + 6,pos + 2);
_swap(pos + 7,pos + 3);
}
_swap(pos + 1,pos + 2);
_temp.di[0] = *(pos + 0);
_temp.di[1] = *(pos + 8);
_temp.di[2] = *(pos + 9);
_temp.di[3] = *(pos + 1);
_step++;
break;
case 13:
end--;
help = end->cl[2];
switch(help)
{
case 2:
_swap(pos + 8,pos + 0);
_swap(pos + 9,pos + 1);
_temp.di[0] = 0;
break;
case 3:
_swap(pos + 1,pos + 3);
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
break;
case 4:
_swap(pos + 8,pos + 2);
_swap(pos + 9,pos + 3);
_temp.di[0] = 0;
break;
default:
break;
}
break;
case 14:
end--;
help = end->cl[2];
if(!help)
{
_swap(pos + 8,pos + 4);
_swap(pos + 9,pos + 5);
}
x90 = false;
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 11;
break;
case 15:
end--;
help = end->cl[2];
switch(help)
{
case 2:
_swap(pos + 0,pos + 4);
_swap(pos + 1,pos + 5);
_swap(pos + 2,pos + 6);
_swap(pos + 3,pos + 7);
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 11;
break;
case 3:
_swap(pos + 0,pos + 4);
_swap(pos + 1,pos + 5);
_swap(pos + 2,pos + 6);
_swap(pos + 3,pos + 7);
_swap(pos + 8,pos + 4);
_swap(pos + 9,pos + 5);
x90 = false;
_temp.di[0] = *(pos + 8);
_temp.di[1] = *(pos + 9);
_temp.di[2] = *(pos + 0);
_temp.di[3] = *(pos + 1);
_step = 11;
break;
case 4:
_swap(pos + 0,pos + 4);
_swap(pos + 1,pos + 5);
_swap(pos + 2,pos + 6);
_swap(pos + 3,pos + 7);
_temp.di[0] = 0;
break;
default:
break;
}
break;
default:
_temp.di[0] = 0;
break;
}
return _temp.di;
}
void Cproc::get(int a[])
{
for(int i=0;i<3;i++)
_temp.cl[i]=a[i];
_l.push_back(_temp);
}
void Cproc::_swap(vector<char>::iterator a,vector<char>::iterator b)
{
char tem;
tem = *a;
*a = *b;
*b = tem;
}
Cproc::~Cproc(void)
{
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -