Differences From Artifact [3f2a2d28b89b3fbf]:
- File
src/solver.d
- 2012-07-16 06:32:03 - part of checkin [1b261bd13b] on branch trunk - Run Wind and Forest both and take better. (user: kinaba) [annotate]
To Artifact [1e2f760afef7fe9f]:
- File
src/solver.d
- 2012-07-16 06:57:54 - part of checkin [50fc08d883] on branch trunk - Fast solver should go towards up (since it knows nothing about water...) (user: kinaba) [annotate]
613 613 return tuple(s, log, state);
614 614 }
615 615 }
616 616
617 617 ///
618 618 /// Solver "Wind": let your rapidity be that of the wind.
619 619 ///
620 -class 疾如風 : Solver
620 +class 疾如風(bool UP) : Solver
621 621 {
622 622 Game g;
623 623 this(in Game g)
624 624 {
625 625 this.g = g.clone();
626 626 }
627 627
................................................................................
689 689 reverse(trace);
690 690 return trace.idup;
691 691 }
692 692 p=q;
693 693 }
694 694 }
695 695
696 - int[4] dy=[-1,+1,0,0];
697 - int[4] dx=[0,0,-1,+1];
698 - char[] ds=['D','U','L','R'];
696 + int[4] dy=UP ? [+1,0,0,-1] : [-1,+1,0,0];
697 + int[4] dx=UP ? [0,-1,+1,0] : [0,0,-1,+1];
698 + char[] ds=UP ? ['U','L','R','D'] : ['D','U','L','R'];
699 699 for(int i=0; i<4; ++i) {
700 700 if(g.map.robot==p && death.count(ds[i]))
701 701 continue;
702 702 int y=p.y+dy[i], x=p.x+dx[i];
703 703 if((g.map[y,x]==' '||g.map[y,x]=='\\'||g.map[y,x]=='.'||g.map[y,x]=='O'||g.map[y,x]=='!')&&!V[y][x]) {
704 704 Q.push(tuple(new Pos(y,x),p), dist+1);
705 705 }
................................................................................
713 713 class Switcher
714 714 {
715 715 this(in Game g)
716 716 {
717 717 if(g.map.W*g.map.H <= 1600)
718 718 sub_solver = new 侵掠如火!(徐如林)(g);
719 719 else
720 - sub_solver = new 侵掠如火!(疾如風)(g);
720 + sub_solver = new 侵掠如火!(疾如風!(true))(g);
721 721 }
722 722 char single_step() { return sub_solver.single_step(); }
723 723 void force(char c) { return sub_solver.force(c); }
724 724
725 725 private Solver sub_solver;
726 726 }
727 727
728 -alias 侵掠如火!(疾如風) FastSolver;
728 +alias 侵掠如火!(疾如風!(false)) FastSolver;
729 729
730 -//alias Switcher MainSolver;
731 -//alias 侵掠如火!(疾如風) MainSolver;
732 -alias 侵掠如火!(徐如林) MainSolver;
733 -//alias 疾如風 MainSolver;
734 -//alias 徐如林 MainSolver;
735 -//alias 不動如山 MainSolver;
730 +alias Switcher MainSolver;
731 +//alias 侵掠如火!(徐如林) MainSolver;