Check-in [6c02dd0cf0]
Not logged in
Overview
SHA1 Hash:6c02dd0cf01d8be180ce74fb3c543d49407a318a
Date: 2012-07-16 14:26:29
User: kinaba
Comment:Minor change of BFS ordering.
Timelines: family | ancestors | descendants | both | trunk
Diffs: redesign
Downloads: Tarball | ZIP archive
Other Links: files | file ages | manifest
Tags And Properties
Changes

Modified score_memo.txt from [5b6f8652e6da339c] to [67b6efe1f091756c].

2 contest2 281! 2 contest2 281! 3 contest3 275! 3 contest3 275! 4 contest4 561? 4 contest4 561? 5 contest5 1281? 5 contest5 1281? 6 contest6 737 // 一度通り過ぎるとふさがってしまう曲がり道 6 contest6 737 // 一度通り過ぎるとふさがってしまう曲がり道 7 contest7 867? 7 contest7 867? 8 contest8 1245 // 無理ゲー 8 contest8 1245 // 無理ゲー 9 contest9 3042? | 9 contest9 3056? 10 contest10 2076 // "λの上に岩" トラップが複数 10 contest10 2076 // "λの上に岩" トラップが複数 11 flood1 569 // 崩すの怖がりすぎ & 一直線に並んでるのに真ん中から取るのはどうなの | 11 flood1 569 // 崩すの怖がりすぎ 12 flood2 281! 12 flood2 281! 13 flood3 802 // 溺死 13 flood3 802 // 溺死 14 flood4 970 // むずかしい岩崩し 14 flood4 970 // むずかしい岩崩し 15 flood5 561? 15 flood5 561? 16 trampoline1 291 // むずかしい岩崩し 16 trampoline1 291 // むずかしい岩崩し 17 trampoline2 1732? 17 trampoline2 1732? 18 trampoline3 698 // "上に岩" ワープゾーン版 18 trampoline3 698 // "上に岩" ワープゾーン版

Modified src/solver.d from [25a73167930e3586] to [ec50c689624301b2].

298 if(!danger(p.y,p.x)) 298 if(!danger(p.y,p.x)) 299 q ~= p; 299 q ~= p; 300 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 300 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 301 foreach(p; q) v[p.y][p.x]=true; 301 foreach(p; q) v[p.y][p.x]=true; 302 for(int step=1; q.length; ++step) { 302 for(int step=1; q.length; ++step) { 303 Pos[] q2; 303 Pos[] q2; 304 foreach(p; q) { 304 foreach(p; q) { 305 int[] yyy=[p.y-1,p.y+1,p.y,p.y]; | 305 int[] yyy=[p.y-1,p.y,p.y,p.y+1]; 306 int[] xxx=[p.x,p.x,p.x-1,p.x+1]; | 306 int[] xxx=[p.x,p.x-1,p.x+1,p.x]; > 307 string sss="URLD"; 307 for(int i=0; i<yyy.length; ++i) { 308 for(int i=0; i<yyy.length; ++i) { 308 int y = yyy[i]; 309 int y = yyy[i]; 309 int x = xxx[i]; 310 int x = xxx[i]; 310 if('1'<=g.map[y,x]&&g.map[y,x]<= 311 if('1'<=g.map[y,x]&&g.map[y,x]<= 311 foreach(ppp; g.tr.source 312 foreach(ppp; g.tr.source 312 yyy ~= ppp.y; 313 yyy ~= ppp.y; 313 xxx ~= ppp.x; 314 xxx ~= ppp.x; 314 } 315 } 315 continue; 316 continue; 316 } 317 } 317 if(v[y][x]) continue; 318 if(v[y][x]) continue; 318 if(y==s.y && x==s.x && i<4) { 319 if(y==s.y && x==s.x && i<4) { 319 char c = "UDRL"[i]; | 320 char c = sss[i]; 320 if( death.count(c) == 0 321 if( death.count(c) == 0 321 return [tuple(c, 322 return [tuple(c, 322 } else if(forbidden_cell[y][x]){ 323 } else if(forbidden_cell[y][x]){ 323 } else if(g.map[y,x]==' '||g.map 324 } else if(g.map[y,x]==' '||g.map 324 if(danger(y,x)) 325 if(danger(y,x)) 325 continue; 326 continue; 326 q2 ~= new Pos(y,x); 327 q2 ~= new Pos(y,x); ................................................................................................................................................................................ 338 const(Pos)[] q; 339 const(Pos)[] q; 339 foreach(p; gs) q ~= p; 340 foreach(p; gs) q ~= p; 340 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 341 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 341 foreach(p; q) v[p.y][p.x]=true; 342 foreach(p; q) v[p.y][p.x]=true; 342 for(int step=10; q.length; ++step) { 343 for(int step=10; q.length; ++step) { 343 Pos[] q2; 344 Pos[] q2; 344 foreach(p; q) { 345 foreach(p; q) { 345 int[] yyy=[p.y-1,p.y+1,p.y,p.y]; | 346 int[] yyy=[p.y-1,p.y,p.y,p.y+1]; 346 int[] xxx=[p.x,p.x,p.x-1,p.x+1]; | 347 int[] xxx=[p.x,p.x-1,p.x+1,p.x]; > 348 string sss="URLD"; 347 for(int i=0; i<yyy.length; ++i) { 349 for(int i=0; i<yyy.length; ++i) { 348 int y = yyy[i]; 350 int y = yyy[i]; 349 int x = xxx[i]; 351 int x = xxx[i]; 350 if('1'<=g.map[y,x]&&g.map[y,x]<= 352 if('1'<=g.map[y,x]&&g.map[y,x]<= 351 foreach(ppp; g.tr.source 353 foreach(ppp; g.tr.source 352 yyy ~= ppp.y; 354 yyy ~= ppp.y; 353 xxx ~= ppp.x; 355 xxx ~= ppp.x; 354 } 356 } 355 continue; 357 continue; 356 } 358 } 357 if(v[y][x]) continue; 359 if(v[y][x]) continue; 358 if(y==s.y && x==s.x && i<4) { 360 if(y==s.y && x==s.x && i<4) { 359 char c = "UDRL"[i]; | 361 char c = sss[i]; 360 if( death.count(c) == 0 362 if( death.count(c) == 0 361 return [tuple(c, 363 return [tuple(c, 362 } else if(forbidden_cell[y][x]){ 364 } else if(forbidden_cell[y][x]){ 363 } else if(g.map[y,x]==' '||g.map 365 } else if(g.map[y,x]==' '||g.map 364 q2 ~= new Pos(y,x); 366 q2 ~= new Pos(y,x); 365 v[y][x]=true; 367 v[y][x]=true; 366 } 368 } ................................................................................................................................................................................ 376 const(Pos)[] q; 378 const(Pos)[] q; 377 foreach(p; gs) q ~= p; 379 foreach(p; gs) q ~= p; 378 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 380 bool[][] v = new bool[][](g.map.H+2, g.map.W+2); 379 foreach(p; q) v[p.y][p.x]=true; 381 foreach(p; q) v[p.y][p.x]=true; 380 for(int step=20; q.length; ++step) { 382 for(int step=20; q.length; ++step) { 381 Pos[] q2; 383 Pos[] q2; 382 foreach(p; q) { 384 foreach(p; q) { 383 int[] yyy=[p.y-1,p.y+1,p.y,p.y]; | 385 int[] yyy=[p.y-1,p.y,p.y,p.y+1]; 384 int[] xxx=[p.x,p.x,p.x-1,p.x+1]; | 386 int[] xxx=[p.x,p.x-1,p.x+1,p.x]; > 387 string sss="URLD"; 385 for(int i=0; i<yyy.length; ++i) { 388 for(int i=0; i<yyy.length; ++i) { 386 int y = yyy[i]; 389 int y = yyy[i]; 387 int x = xxx[i]; 390 int x = xxx[i]; 388 if(is_rocky(g.map[p])) { 391 if(is_rocky(g.map[p])) { 389 if(i>=4)continue; 392 if(i>=4)continue; 390 if(y!=p.y)continue; 393 if(y!=p.y)continue; 391 if(g.map[y,p.x+(p.x-x)]! 394 if(g.map[y,p.x+(p.x-x)]! ................................................................................................................................................................................ 395 yyy ~= ppp.y; 398 yyy ~= ppp.y; 396 xxx ~= ppp.x; 399 xxx ~= ppp.x; 397 } 400 } 398 continue; 401 continue; 399 } 402 } 400 if(v[y][x]) continue; 403 if(v[y][x]) continue; 401 if(y==s.y && x==s.x && i<4) { 404 if(y==s.y && x==s.x && i<4) { 402 char c = "UDRL"[i]; | 405 char c = sss[i]; 403 if( death.count(c) == 0 406 if( death.count(c) == 0 404 return [tuple(c, 407 return [tuple(c, 405 } else if(forbidden_cell[y][x]){ 408 } else if(forbidden_cell[y][x]){ 406 } else if(g.map[y,x]==' '||g.map 409 } else if(g.map[y,x]==' '||g.map 407 q2 ~= new Pos(y,x); 410 q2 ~= new Pos(y,x); 408 v[y][x]=true; 411 v[y][x]=true; 409 } 412 } ................................................................................................................................................................................ 719 } 722 } 720 char single_step() { return sub_solver.single_step(); } 723 char single_step() { return sub_solver.single_step(); } 721 void force(char c) { return sub_solver.force(c); } 724 void force(char c) { return sub_solver.force(c); } 722 725 723 private Solver sub_solver; 726 private Solver sub_solver; 724 } 727 } 725 728 726 alias Switcher MainSolver; | 729 //alias Switcher MainSolver; 727 //alias 侵掠如火!(疾如風) MainSolver; 730 //alias 侵掠如火!(疾如風) MainSolver; 728 //alias 侵掠如火!(徐如林) MainSolver; | 731 alias 侵掠如火!(徐如林) MainSolver; 729 //alias 疾如風 MainSolver; 732 //alias 疾如風 MainSolver; 730 //alias 徐如林 MainSolver; 733 //alias 徐如林 MainSolver; 731 //alias 不動如山 MainSolver; 734 //alias 不動如山 MainSolver;