Commit fee62f0c authored by royus's avatar royus
Browse files

got output (unfinished)

parent 30596494
Loading
Loading
Loading
Loading
+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 &
+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>
@@ -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:
@@ -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;
@@ -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;
}
@@ -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);
@@ -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;
			}
		}