Differences From Artifact [b38729b48307e77e]:
- File
src/solver.d
- 2012-07-15 06:15:47 - part of checkin [f6c126aeeb] on branch trunk - better flushed check. (user: kinaba) [annotate]
To Artifact [dde2fe1d85562c17]:
- File
src/solver.d
- 2012-07-15 06:42:27 - part of checkin [0d078369c8] on branch trunk - score update & tweaked to solve contest2 (user: kinaba) [annotate]
335 { 335 {
336 int bp = max(0, (cast(int)plan.length)-10); 336 int bp = max(0, (cast(int)plan.length)-10);
337 Game g = ini.clone(); 337 Game g = ini.clone();
338 for(int i=0; i<bp; ++i) g.command(plan[i]); 338 for(int i=0; i<bp; ++i) g.command(plan[i]);
339 339
340 Tuple!(string,long) cand = tuple(plan, unmod); 340 Tuple!(string,long) cand = tuple(plan, unmod);
341 for(int i=bp; i<plan.length; ++i) { 341 for(int i=bp; i<plan.length; ++i) {
342 foreach(char c; "UDLR") | 342 foreach(string c; ["U","D","L","R","UD","DU","LR","RL"])
343 if(c != plan[i]) { | 343 if(c[0] != plan[i]) {
344 Tuple!(string,long) zz = try_plan(c, g); 344 Tuple!(string,long) zz = try_plan(c, g);
345 if(cand[1]<zz[1]) 345 if(cand[1]<zz[1])
346 cand = tuple(plan[0..i]~c~zz[0], 346 cand = tuple(plan[0..i]~c~zz[0],
347 } 347 }
348 g.command(plan[i]); 348 g.command(plan[i]);
349 } 349 }
350 plan = cand[0]; 350 plan = cand[0];
351 } 351 }
352 352
353 Tuple!(string,long) try_plan(char c, in Game g) | 353 Tuple!(string,long) try_plan(string c, in Game g)
354 { 354 {
355 Game gg = g.clone(); 355 Game gg = g.clone();
356 gg.command(c); | 356 foreach(cc;c)gg.command(cc);
357 Tuple!(Solver, string) x = run_sub_solver(gg); 357 Tuple!(Solver, string) x = run_sub_solver(gg);
358 return tuple(x[1], x[0].g.score); 358 return tuple(x[1], x[0].g.score);
359 } 359 }
360 360
361 char single_step() { 361 char single_step() {
362 if(plan.empty) 362 if(plan.empty)
363 return 'A'; 363 return 'A';