Commit fee62f0c authored by royus's avatar royus

got output (unfinished)

parent 30596494
tags tags
tags.lock tags.lock
.x_* .*
#!/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 &
/* solver.c */ /* 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<stdio.h>
#include<stdlib.h> #include<stdlib.h>
...@@ -77,23 +77,19 @@ int randline(void){ //1-lines -> 1-lines ...@@ -77,23 +77,19 @@ int randline(void){ //1-lines -> 1-lines
return rand()%lines+1; 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){ int available(int startx,int starty, int startz){
if(avail[startz][starty][startx]==-1) //goal if(avail[startz][starty][startx]==-1) //goal
return 1; return 1;
if(avail[startz][starty][startx]==2) //visited if(avail[startz][starty][startx]==2||avail[startz][starty][startx]==3) //visited
return 0; return 0;
avail[startz][starty][startx]=2; avail[startz][starty][startx]=2;
shuffle(searchorder); int i,j,k;
int i; 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++) for(i=0;i<6;i++)
switch(searchorder[i]){ switch(searchorder[i]){
case 0: case 0:
...@@ -124,7 +120,7 @@ int connectable(int linea,int lineb){ ...@@ -124,7 +120,7 @@ int connectable(int linea,int lineb){
for(i=0;i<depth;i++) for(i=0;i<depth;i++)
for(j=0;j<height;j++) for(j=0;j<height;j++)
for(k=0;k<width;k++) for(k=0;k<width;k++)
if(board[i][j][k]==-linea){ if(board[i][j][k]==linea*(-1)){
if(notfound){ if(notfound){
notfound=0; notfound=0;
startz=i; startz=i;
...@@ -151,7 +147,7 @@ void connect(int num){ ...@@ -151,7 +147,7 @@ void connect(int num){
for(i=0;i<depth;i++) for(i=0;i<depth;i++)
for(j=0;j<height;j++) for(j=0;j<height;j++)
for(k=0;k<width;k++) 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; board[i][j][k]=num;
return; return;
} }
...@@ -180,7 +176,7 @@ int solve(void){ //return 1 when solved, 0 when cannot ...@@ -180,7 +176,7 @@ int solve(void){ //return 1 when solved, 0 when cannot
return 1; return 1;
} }
else{ else{
for(j=0;j<lines*2;j++){ for(j=0;j<MAX_ATTEMPS;j++){
lineb=randline(); lineb=randline();
if(connectable(linea,lineb)){ if(connectable(linea,lineb)){
delete(lineb); delete(lineb);
...@@ -189,7 +185,7 @@ int solve(void){ //return 1 when solved, 0 when cannot ...@@ -189,7 +185,7 @@ int solve(void){ //return 1 when solved, 0 when cannot
connected[lineb]=0; connected[lineb]=0;
break; break;
} }
if(j==MAX_ATTEMPS/2-1) if(j==MAX_ATTEMPS-1)
return 0; return 0;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment