「3Dパズル」改造

3Dパズル」について
対称のパターンを同じとみると
6×6×2だと9パターン
#include
#include
#include
#define M 6
#define N 2
#define NN 300
int cube[M][M][N];
int tet[12][3][3]={
{{0,1,0},{0,2,0},{1,1,0}},
{{-1,1,0},{0,1,0},{1,1,0}},
{{0,1,0},{0,2,0},{-1,1,0}},
{{1,0,0},{2,0,0},{1,1,0}},
{{0,-1,1},{0,0,1},{0,1,1}},
{{-1,0,1},{0,0,1},{1,0,1}},
{{1,0,0},{2,0,0},{1,0,1}},
{{0,1,0},{0,2,0},{0,1,1}},
{{0,0,1},{0,0,2},{1,0,1}},
{{0,0,1},{0,0,2},{-1,0,1}},
{{0,0,1},{0,0,2},{0,1,1}},
{{0,0,1},{0,0,2},{0,-1,1}},
};
int dchk[42][4][3]={
{{M-1,0,0},{M-2,0,0},{M-3,0,0},{M-2,1,0}},
{{M-1,0,0},{M-1,1,0},{M-1,2,0},{M-2,1,0}},
{{M-1,M-1,0},{M-1,M-2,0},{M-1,M-3,0},{M-2,M-2,0}},
{{M-1,M-1,0},{M-2,M-1,0},{M-3,M-1,0},{M-2,M-2,0}},
{{0,M-1,0},{1,M-1,0},{2,M-1,0},{1,M-2,0}},
{{0,M-1,0},{0,M-2,0},{0,M-3,0},{1,M-2,0}},

{{M-1,0,0},{M-2,0,0},{M-3,0,0},{M-2,0,1}},
{{M-1,0,0},{M-1,1,0},{M-1,2,0},{M-1,1,1}},
{{M-1,M-1,0},{M-1,M-2,0},{M-1,M-3,0},{M-1,M-2,1}},
{{M-1,M-1,0},{M-2,M-1,0},{M-3,M-1,0},{M-2,M-1,1}},
{{0,M-1,0},{1,M-1,0},{2,M-1,0},{1,M-1,1}},
{{0,M-1,0},{0,M-2,0},{0,M-3,0},{0,M-2,1}},

{{M-1,0,0},{M-1,0,1},{M-1,0,2},{M-2,0,1}},
{{M-1,0,0},{M-1,0,1},{M-1,0,2},{M-1,1,1}},
{{M-1,M-1,0},{M-1,M-1,1},{M-1,M-1,2},{M-1,M-2,1}},
{{M-1,M-1,0},{M-1,M-1,1},{M-1,M-1,2},{M-2,M-1,1}},
{{0,M-1,0},{0,M-1,1},{0,M-1,2},{1,M-1,1}},
{{0,M-1,0},{0,M-1,1},{0,M-1,2},{0,M-2,1}},

{{0,0,N-1},{0,1,N-1},{0,2,N-1},{1,1,N-1}},
{{0,0,N-1},{1,0,N-1},{2,0,N-1},{1,1,N-1}},
{{M-1,0,N-1},{M-2,0,N-1},{M-3,0,N-1},{M-2,1,N-1}},
{{M-1,0,N-1},{M-1,1,N-1},{M-1,2,N-1},{M-2,1,N-1}},
{{M-1,M-1,N-1},{M-1,M-2,N-1},{M-1,M-3,N-1},{M-2,M-2,N-1}},
{{M-1,M-1,N-1},{M-2,M-1,N-1},{M-3,M-1,N-1},{M-2,M-2,N-1}},
{{0,M-1,N-1},{1,M-1,N-1},{2,M-1,N-1},{1,M-2,N-1}},
{{0,M-1,N-1},{0,M-2,N-1},{0,M-3,N-1},{1,M-2,N-1}},

{{0,0,N-1},{0,1,N-1},{0,2,N-1},{0,1,N-2}},
{{0,0,N-1},{1,0,N-1},{2,0,N-1},{1,0,N-2}},
{{M-1,0,N-1},{M-2,0,N-1},{M-3,0,N-1},{M-2,0,N-2}},
{{M-1,0,N-1},{M-1,1,N-1},{M-1,2,N-1},{M-1,1,N-2}},
{{M-1,M-1,N-1},{M-1,M-2,N-1},{M-1,M-3,N-1},{M-1,M-2,N-2}},
{{M-1,M-1,N-1},{M-2,M-1,N-1},{M-3,M-1,N-1},{M-2,M-1,N-2}},
{{0,M-1,N-1},{1,M-1,N-1},{2,M-1,N-1},{1,M-1,N-2}},
{{0,M-1,N-1},{0,M-2,N-1},{0,M-3,N-1},{0,M-2,N-2}},

{{0,0,N-1},{0,0,N-2},{0,0,N-3},{0,1,N-2}},
{{0,0,N-1},{0,0,N-2},{0,0,N-3},{1,0,N-2}},
{{M-1,0,N-1},{M-1,0,N-2},{M-1,0,N-3},{M-2,0,N-2}},
{{M-1,0,N-1},{M-1,0,N-2},{M-1,0,N-3},{M-1,1,N-2}},
{{M-1,M-1,N-1},{M-1,M-1,N-2},{M-1,M-1,N-3},{M-1,M-2,N-2}},
{{M-1,M-1,N-1},{M-1,M-1,N-2},{M-1,M-1,N-3},{M-2,M-1,N-2}},
{{0,M-1,N-1},{0,M-1,N-2},{0,M-1,N-3},{1,M-1,N-2}},
{{0,M-1,N-1},{0,M-1,N-2},{0,M-1,N-3},{0,M-2,N-2}},

};
int cube0[M][M][N];
int cube1[M][M][N];
int st_cube[NN][M][M][N];
int st_p=0;
int c=0;
void print_cube(){
int i,j,k;
for(i=0;i=M)return(-1);
y1=y+tet[d][i][1]; if(y1<0||y1>=M)return(-1);
z1=z+tet[d][i][2]; if(z1<0||z1>=N)return(-1);
if(cube[x1][y1][z1]>0)return(-1);
}}
return(1);
}
int pop_tet(int x,int y,int z,int d){
int i,x1,y1,z1;
cube[x][y][z]=0;
for(i=0;i<3;i++){
x1=x+tet[d][i][0]; y1=y+tet[d][i][1]; z1=z+tet[d][i][2];
cube[x1][y1][z1]=0;}
return(1);
}
int put_tet(int x,int y,int z,int d,int p){
int i,x1,y1,z1;
cube[x][y][z]=p;
for(i=0;i<3;i++){
x1=x+tet[d][i][0]; y1=y+tet[d][i][1]; z1=z+tet[d][i][2];
cube[x1][y1][z1]=p;}
return(1);
}
int next_p(int *x,int *y,int *z){
(*x)++;if(*x>=M){(*y)++;*x=0;if(*y>=M){(*z)++;*y=0;if(*z>=N){return(-1);}}}
while(cube[*x][*y][*z]!=0){
(*x)++;if(*x>=M){(*y)++;*x=0;if(*y>=M){(*z)++;*y=0;if(*z>=N){return(-1);}}}
}
return(1);
}
int solve(int x,int y,int z,int p){
int d,x1,y1,z1;

for(d=0;d<12;d++){
if(chk_tet(x,y,z,d)>0){
put_tet(x,y,z,d,p+1);
if(p+1==M*M*N/4){
if(dup_check_cube()>0){
push_cube();
printf("Solved:%d \n",st_p);
print_cube();}}
x1=x;y1=y;z1=z;
if(next_p(&x,&y,&z)>0) solve(x,y,z,p+1);
x=x1;y=y1;z=z1;
pop_tet(x,y,z,d);
}
}
return(0);
}
int main(int ac,char* av[]){
int i,j,k;
for(i=0;i

Solved:1
AAAHHH MOOOHR
BAEEEJ MMOERR
BBFGJJ MFFFKR
BCGGKJ NPPPKL
CCCGIL NNPQKL
DDDIII NDQQQL

Solved:2
AAAHHH MOOOHL
BAEEEL MMOEJL
BBFGJK MFFFJL
BCGGKK NPPPJR
CCCGIK NNPQRR
DDDIII NDQQQR

Solved:3
AAAGGG LMMMGR
BAFFFJ LLMFRR
BBEHJJ LNNNQR
BEEHHJ CONQQK
CDEHIK COOPQK
DDDIII COPPPK

Solved:4
AAAGGG LMMMGR
BAFFFJ LLMFRR
BBEHJJ LNPPPR
BEEHHJ CNNPQK
CDEHIK CNOQQK
DDDIII COOOQK

Solved:5
AAAGGG MNNNGR
BAFFFJ MMNFRR
BBEHJJ MOOOKR
BEEHKJ CPOHKL
CDEHIL CPPQKL
DDDIII CPQQQL

Solved:6
AAAHHH MNNNHR
BAFFFJ MMNQRR
BBEFJJ MOQQKR
BEEEKJ COOQKL
CDGGGL COPGKL
DDDIII CPPPIL

Solved:7
AAAHHH MNNNHL
BAFFFL MMNQJL
BBEFJK MOQQJL
BEEEKK COOQJR
CDGGGK COPGRR
DDDIII CPPPIR

Solved:8
AAAHHH MNNNHQ
BAFFFL MMNFQQ
BBGILL MEIIIQ
BEGGJL CEPPPR
CDGJJJ CEOPRR
DDDKKK COOOKR

Solved:9
AAAHHH MNNNHL
BAGGGL MMNPJL
BBEGJK MOPPJL
BEEEKK COOPJR
CFFFIK COFQRR
DDDIII CDQQQR


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック

  • 「3Dパズル」パッチ作成

    Excerpt: 「「3Dパズル」改造」について おっと、バグ発見、正方体のときは回転方向変えても問題ないけど直方体の場合はできないや パッチ作成 Weblog: サイエンス racked: 2017-03-13 22:51