From a6a84d6fae6d4486ea85b3ac24a8e45bc0326932 Mon Sep 17 00:00:00 2001 From: royus <> Date: Sun, 26 Aug 2018 05:05:23 +0900 Subject: [PATCH] changed algorythm (unfinished) --- source/solver.c | 166 ++++++++++++++++++++++++++++------------------- source/tags.lock | 0 2 files changed, 98 insertions(+), 68 deletions(-) create mode 100644 source/tags.lock diff --git a/source/solver.c b/source/solver.c index 1791a75..2b97250 100644 --- a/source/solver.c +++ b/source/solver.c @@ -1,28 +1,23 @@ /* solver.c */ -/* Last Change: 2018/07/16 (Mon) 10:05:50. */ +/* Last Change: 2018/08/26 (Sun) 05:04:28. */ + +#define MAX_ATTEMPS lines*10 #include -/* #include */ +#include #include /* #include */ /* #include */ -/* #include */ +#include int board[8][72][72]={}; -int avail[8][72][72]={}; +int avail[8][72][72]={}; //start=3,path=2,avail=1,nonavail=0,goal=-1 +int connected[8*72*72/2+1]={}; int depth,height,width; int lines; +int searchorder[6]; //z,y,x -void reset(void){ - int i,j,k; - for(i=0;i 1-lines - return num; +int randline(void){ //1-lines -> 1-lines + return rand()%lines+1; } -int connected(int line){ - int i,j,k; - for(i=0;i0&&available(startx-1,starty,startz)) - return 1; - if(starty>0&&available(startx,starty-1,startz)) - return 1; - if(startz>0&&available(startx,starty,startz-1)) - return 1; - if(startx0&&available(startx-1,starty,startz)) + return 1; + case 1: + if(starty>0&&available(startx,starty-1,startz)) + return 1; + case 2: + if(startz>0&&available(startx,starty,startz-1)) + return 1; + case 3: + if(startx=1;i--) - if(connectable(order(num),order(i))){ - delete(order(i)); - actuallyconnect(order(num)); - connect(i); +int solve(void){ //return 1 when solved, 0 when cannot + int i,j,linea,lineb; + for(i=0;i