Loading source/.gitignore +1 −1 Changes for source/.gitignore: 1 added line, 1 removed line. Original line number Diff line number Diff line tags tags.lock .x_* .* source/solve.sh 0 → 100644 +38 −0 Changes for source/solve.sh: 38 added lines, 0 removed lines. Original line number Diff line number Diff line #!/bin/sh # solve.sh # Last Change: 2018/08/26 (Sun) 05:34:14. ./.x_solver < ../ADC2017_Q_A/all/Q/Q01.txt >>myans/A01.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q02.txt >>myans/A02.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q03.txt >>myans/A03.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q04.txt >>myans/A04.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q05.txt >>myans/A05.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q06.txt >>myans/A06.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q07.txt >>myans/A07.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q08.txt >>myans/A08.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q09.txt >>myans/A09.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q10.txt >>myans/A10.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q11.txt >>myans/A11.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q12.txt >>myans/A12.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q13.txt >>myans/A13.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q14.txt >>myans/A14.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q15.txt >>myans/A15.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q16.txt >>myans/A16.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q17.txt >>myans/A17.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q18.txt >>myans/A18.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q19.txt >>myans/A19.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q20.txt >>myans/A20.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q21.txt >>myans/A21.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q22.txt >>myans/A22.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q23.txt >>myans/A23.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q24.txt >>myans/A24.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q25.txt >>myans/A25.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q26.txt >>myans/A26.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q27.txt >>myans/A27.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q28.txt >>myans/A28.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q29.txt >>myans/A29.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q30.txt >>myans/A30.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q31.txt >>myans/A31.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q32.txt >>myans/A32.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q33.txt >>myans/A33.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q34.txt >>myans/A34.txt & source/solver.c +14 −18 Changes for source/solver.c: 14 added lines, 18 removed lines. Original line number Diff line number Diff line /* solver.c */ /* Last Change: 2018/08/26 (Sun) 05:04:28. */ /* Last Change: 2018/08/26 (Sun) 05:26:10. */ #define MAX_ATTEMPS lines*10 #define MAX_ATTEMPS 100000 #include<stdio.h> #include<stdlib.h> Loading Loading @@ -77,23 +77,19 @@ int randline(void){ //1-lines -> 1-lines return rand()%lines+1; } void shuffle(int array[]){ for(int i=0;i<6;i++){ int j=rand()%6; int t=array[i]; array[i]=array[j]; array[j]=t; } } int available(int startx,int starty, int startz){ if(avail[startz][starty][startx]==-1) //goal return 1; if(avail[startz][starty][startx]==2) //visited if(avail[startz][starty][startx]==2||avail[startz][starty][startx]==3) //visited return 0; avail[startz][starty][startx]=2; shuffle(searchorder); int i; int i,j,k; for(i=0;i<6;i++){ j=rand()%6; k=searchorder[i]; searchorder[i]=searchorder[j]; searchorder[j]=k; } for(i=0;i<6;i++) switch(searchorder[i]){ case 0: Loading Loading @@ -124,7 +120,7 @@ int connectable(int linea,int lineb){ for(i=0;i<depth;i++) for(j=0;j<height;j++) for(k=0;k<width;k++) if(board[i][j][k]==-linea){ if(board[i][j][k]==linea*(-1)){ if(notfound){ notfound=0; startz=i; Loading @@ -151,7 +147,7 @@ void connect(int num){ for(i=0;i<depth;i++) for(j=0;j<height;j++) for(k=0;k<width;k++) if(avail[i][j][k]==2) if(avail[i][j][k]==2&&board[i][j][k]==0) board[i][j][k]=num; return; } Loading Loading @@ -180,7 +176,7 @@ int solve(void){ //return 1 when solved, 0 when cannot return 1; } else{ for(j=0;j<lines*2;j++){ for(j=0;j<MAX_ATTEMPS;j++){ lineb=randline(); if(connectable(linea,lineb)){ delete(lineb); Loading @@ -189,7 +185,7 @@ int solve(void){ //return 1 when solved, 0 when cannot connected[lineb]=0; break; } if(j==MAX_ATTEMPS/2-1) if(j==MAX_ATTEMPS-1) return 0; } } Loading Loading
source/.gitignore +1 −1 Changes for source/.gitignore: 1 added line, 1 removed line. Original line number Diff line number Diff line tags tags.lock .x_* .*
source/solve.sh 0 → 100644 +38 −0 Changes for source/solve.sh: 38 added lines, 0 removed lines. Original line number Diff line number Diff line #!/bin/sh # solve.sh # Last Change: 2018/08/26 (Sun) 05:34:14. ./.x_solver < ../ADC2017_Q_A/all/Q/Q01.txt >>myans/A01.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q02.txt >>myans/A02.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q03.txt >>myans/A03.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q04.txt >>myans/A04.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q05.txt >>myans/A05.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q06.txt >>myans/A06.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q07.txt >>myans/A07.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q08.txt >>myans/A08.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q09.txt >>myans/A09.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q10.txt >>myans/A10.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q11.txt >>myans/A11.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q12.txt >>myans/A12.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q13.txt >>myans/A13.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q14.txt >>myans/A14.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q15.txt >>myans/A15.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q16.txt >>myans/A16.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q17.txt >>myans/A17.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q18.txt >>myans/A18.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q19.txt >>myans/A19.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q20.txt >>myans/A20.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q21.txt >>myans/A21.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q22.txt >>myans/A22.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q23.txt >>myans/A23.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q24.txt >>myans/A24.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q25.txt >>myans/A25.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q26.txt >>myans/A26.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q27.txt >>myans/A27.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q28.txt >>myans/A28.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q29.txt >>myans/A29.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q30.txt >>myans/A30.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q31.txt >>myans/A31.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q32.txt >>myans/A32.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q33.txt >>myans/A33.txt & ./.x_solver < ../ADC2017_Q_A/all/Q/Q34.txt >>myans/A34.txt &
source/solver.c +14 −18 Changes for source/solver.c: 14 added lines, 18 removed lines. Original line number Diff line number Diff line /* solver.c */ /* Last Change: 2018/08/26 (Sun) 05:04:28. */ /* Last Change: 2018/08/26 (Sun) 05:26:10. */ #define MAX_ATTEMPS lines*10 #define MAX_ATTEMPS 100000 #include<stdio.h> #include<stdlib.h> Loading Loading @@ -77,23 +77,19 @@ int randline(void){ //1-lines -> 1-lines return rand()%lines+1; } void shuffle(int array[]){ for(int i=0;i<6;i++){ int j=rand()%6; int t=array[i]; array[i]=array[j]; array[j]=t; } } int available(int startx,int starty, int startz){ if(avail[startz][starty][startx]==-1) //goal return 1; if(avail[startz][starty][startx]==2) //visited if(avail[startz][starty][startx]==2||avail[startz][starty][startx]==3) //visited return 0; avail[startz][starty][startx]=2; shuffle(searchorder); int i; int i,j,k; for(i=0;i<6;i++){ j=rand()%6; k=searchorder[i]; searchorder[i]=searchorder[j]; searchorder[j]=k; } for(i=0;i<6;i++) switch(searchorder[i]){ case 0: Loading Loading @@ -124,7 +120,7 @@ int connectable(int linea,int lineb){ for(i=0;i<depth;i++) for(j=0;j<height;j++) for(k=0;k<width;k++) if(board[i][j][k]==-linea){ if(board[i][j][k]==linea*(-1)){ if(notfound){ notfound=0; startz=i; Loading @@ -151,7 +147,7 @@ void connect(int num){ for(i=0;i<depth;i++) for(j=0;j<height;j++) for(k=0;k<width;k++) if(avail[i][j][k]==2) if(avail[i][j][k]==2&&board[i][j][k]==0) board[i][j][k]=num; return; } Loading Loading @@ -180,7 +176,7 @@ int solve(void){ //return 1 when solved, 0 when cannot return 1; } else{ for(j=0;j<lines*2;j++){ for(j=0;j<MAX_ATTEMPS;j++){ lineb=randline(); if(connectable(linea,lineb)){ delete(lineb); Loading @@ -189,7 +185,7 @@ int solve(void){ //return 1 when solved, 0 when cannot connected[lineb]=0; break; } if(j==MAX_ATTEMPS/2-1) if(j==MAX_ATTEMPS-1) return 0; } } Loading