diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-11-15 08:29:37 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-11-15 08:29:37 +0100 |
| commit | 20ac0e60d7174114965d4419af0bb3028db8e447 (patch) | |
| tree | b94184b39965aa3cd74f4e5e2cec988603f224f4 /src/steps.c | |
| parent | 44beaa88e54d60d5c576380534cf5ebb8dd44709 (diff) | |
| download | nissy-20ac0e60d7174114965d4419af0bb3028db8e447.tar.gz nissy-20ac0e60d7174114965d4419af0bb3028db8e447.zip | |
Load all necessary pruning tables for a step before the actual solving process
starts. This is in preparation for multi-threaded solving (but don't get hyped,
it will take time).
Diffstat (limited to 'src/steps.c')
| -rw-r--r-- | src/steps.c | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/steps.c b/src/steps.c index f6b7403..012e4cd 100644 --- a/src/steps.c +++ b/src/steps.c | |||
| @@ -56,6 +56,9 @@ optimal_HTM = { | |||
| 56 | .moveset = moveset_HTM, | 56 | .moveset = moveset_HTM, |
| 57 | 57 | ||
| 58 | .pre_trans = uf, | 58 | .pre_trans = uf, |
| 59 | |||
| 60 | .tables = {&pd_khuge_HTM, &pd_corners_HTM}, | ||
| 61 | .ntables = 2, | ||
| 59 | }; | 62 | }; |
| 60 | 63 | ||
| 61 | /* EO steps **************************/ | 64 | /* EO steps **************************/ |
| @@ -71,6 +74,9 @@ eoany_HTM = { | |||
| 71 | .moveset = moveset_HTM, | 74 | .moveset = moveset_HTM, |
| 72 | 75 | ||
| 73 | .pre_trans = uf, | 76 | .pre_trans = uf, |
| 77 | |||
| 78 | .tables = {&pd_eofb_HTM}, | ||
| 79 | .ntables = 1, | ||
| 74 | }; | 80 | }; |
| 75 | 81 | ||
| 76 | Step | 82 | Step |
| @@ -85,6 +91,9 @@ eofb_HTM = { | |||
| 85 | .moveset = moveset_HTM, | 91 | .moveset = moveset_HTM, |
| 86 | 92 | ||
| 87 | .pre_trans = uf, | 93 | .pre_trans = uf, |
| 94 | |||
| 95 | .tables = {&pd_eofb_HTM}, | ||
| 96 | .ntables = 1, | ||
| 88 | }; | 97 | }; |
| 89 | 98 | ||
| 90 | Step | 99 | Step |
| @@ -99,6 +108,9 @@ eorl_HTM = { | |||
| 99 | .moveset = moveset_HTM, | 108 | .moveset = moveset_HTM, |
| 100 | 109 | ||
| 101 | .pre_trans = ur, | 110 | .pre_trans = ur, |
| 111 | |||
| 112 | .tables = {&pd_eofb_HTM}, | ||
| 113 | .ntables = 1, | ||
| 102 | }; | 114 | }; |
| 103 | 115 | ||
| 104 | Step | 116 | Step |
| @@ -113,6 +125,9 @@ eoud_HTM = { | |||
| 113 | .moveset = moveset_HTM, | 125 | .moveset = moveset_HTM, |
| 114 | 126 | ||
| 115 | .pre_trans = fd, | 127 | .pre_trans = fd, |
| 128 | |||
| 129 | .tables = {&pd_eofb_HTM}, | ||
| 130 | .ntables = 1, | ||
| 116 | }; | 131 | }; |
| 117 | 132 | ||
| 118 | /* CO steps **************************/ | 133 | /* CO steps **************************/ |
| @@ -127,6 +142,9 @@ coany_HTM = { | |||
| 127 | .moveset = moveset_HTM, | 142 | .moveset = moveset_HTM, |
| 128 | 143 | ||
| 129 | .pre_trans = uf, | 144 | .pre_trans = uf, |
| 145 | |||
| 146 | .tables = {&pd_coud_HTM}, | ||
| 147 | .ntables = 1, | ||
| 130 | }; | 148 | }; |
| 131 | 149 | ||
| 132 | Step | 150 | Step |
| @@ -140,6 +158,9 @@ coud_HTM = { | |||
| 140 | .moveset = moveset_HTM, | 158 | .moveset = moveset_HTM, |
| 141 | 159 | ||
| 142 | .pre_trans = uf, | 160 | .pre_trans = uf, |
| 161 | |||
| 162 | .tables = {&pd_coud_HTM}, | ||
| 163 | .ntables = 1, | ||
| 143 | }; | 164 | }; |
| 144 | 165 | ||
| 145 | Step | 166 | Step |
| @@ -153,6 +174,9 @@ corl_HTM = { | |||
| 153 | .moveset = moveset_HTM, | 174 | .moveset = moveset_HTM, |
| 154 | 175 | ||
| 155 | .pre_trans = rf, | 176 | .pre_trans = rf, |
| 177 | |||
| 178 | .tables = {&pd_coud_HTM}, | ||
| 179 | .ntables = 1, | ||
| 156 | }; | 180 | }; |
| 157 | 181 | ||
| 158 | Step | 182 | Step |
| @@ -166,6 +190,9 @@ cofb_HTM = { | |||
| 166 | .moveset = moveset_HTM, | 190 | .moveset = moveset_HTM, |
| 167 | 191 | ||
| 168 | .pre_trans = fd, | 192 | .pre_trans = fd, |
| 193 | |||
| 194 | .tables = {&pd_coud_HTM}, | ||
| 195 | .ntables = 1, | ||
| 169 | }; | 196 | }; |
| 170 | 197 | ||
| 171 | Step | 198 | Step |
| @@ -179,6 +206,9 @@ coany_URF = { | |||
| 179 | .moveset = moveset_URF, | 206 | .moveset = moveset_URF, |
| 180 | 207 | ||
| 181 | .pre_trans = uf, | 208 | .pre_trans = uf, |
| 209 | |||
| 210 | .tables = {&pd_coud_HTM}, | ||
| 211 | .ntables = 1, | ||
| 182 | }; | 212 | }; |
| 183 | 213 | ||
| 184 | Step | 214 | Step |
| @@ -192,6 +222,9 @@ coud_URF = { | |||
| 192 | .moveset = moveset_URF, | 222 | .moveset = moveset_URF, |
| 193 | 223 | ||
| 194 | .pre_trans = uf, | 224 | .pre_trans = uf, |
| 225 | |||
| 226 | .tables = {&pd_coud_HTM}, | ||
| 227 | .ntables = 1, | ||
| 195 | }; | 228 | }; |
| 196 | 229 | ||
| 197 | Step | 230 | Step |
| @@ -205,6 +238,9 @@ corl_URF = { | |||
| 205 | .moveset = moveset_URF, | 238 | .moveset = moveset_URF, |
| 206 | 239 | ||
| 207 | .pre_trans = rf, | 240 | .pre_trans = rf, |
| 241 | |||
| 242 | .tables = {&pd_coud_HTM}, | ||
| 243 | .ntables = 1, | ||
| 208 | }; | 244 | }; |
| 209 | 245 | ||
| 210 | Step | 246 | Step |
| @@ -218,6 +254,9 @@ cofb_URF = { | |||
| 218 | .moveset = moveset_URF, | 254 | .moveset = moveset_URF, |
| 219 | 255 | ||
| 220 | .pre_trans = fd, | 256 | .pre_trans = fd, |
| 257 | |||
| 258 | .tables = {&pd_coud_HTM}, | ||
| 259 | .ntables = 1, | ||
| 221 | }; | 260 | }; |
| 222 | 261 | ||
| 223 | /* Misc corner steps *****************/ | 262 | /* Misc corner steps *****************/ |
| @@ -232,6 +271,9 @@ cornershtr_HTM = { | |||
| 232 | .moveset = moveset_HTM, | 271 | .moveset = moveset_HTM, |
| 233 | 272 | ||
| 234 | .pre_trans = uf, | 273 | .pre_trans = uf, |
| 274 | |||
| 275 | .tables = {&pd_cornershtr_HTM}, | ||
| 276 | .ntables = 1, | ||
| 235 | }; | 277 | }; |
| 236 | 278 | ||
| 237 | Step | 279 | Step |
| @@ -245,6 +287,9 @@ cornershtr_URF = { | |||
| 245 | .moveset = moveset_URF, | 287 | .moveset = moveset_URF, |
| 246 | 288 | ||
| 247 | .pre_trans = uf, | 289 | .pre_trans = uf, |
| 290 | |||
| 291 | .tables = {&pd_cornershtr_HTM}, | ||
| 292 | .ntables = 1, | ||
| 248 | }; | 293 | }; |
| 249 | 294 | ||
| 250 | Step | 295 | Step |
| @@ -258,6 +303,9 @@ corners_HTM = { | |||
| 258 | .moveset = moveset_HTM, | 303 | .moveset = moveset_HTM, |
| 259 | 304 | ||
| 260 | .pre_trans = uf, | 305 | .pre_trans = uf, |
| 306 | |||
| 307 | .tables = {&pd_corners_HTM}, | ||
| 308 | .ntables = 1, | ||
| 261 | }; | 309 | }; |
| 262 | 310 | ||
| 263 | Step | 311 | Step |
| @@ -271,6 +319,9 @@ corners_URF = { | |||
| 271 | .moveset = moveset_URF, | 319 | .moveset = moveset_URF, |
| 272 | 320 | ||
| 273 | .pre_trans = uf, | 321 | .pre_trans = uf, |
| 322 | |||
| 323 | .tables = {&pd_corners_HTM}, | ||
| 324 | .ntables = 1, | ||
| 274 | }; | 325 | }; |
| 275 | 326 | ||
| 276 | /* DR steps **************************/ | 327 | /* DR steps **************************/ |
| @@ -286,6 +337,9 @@ drany_HTM = { | |||
| 286 | .moveset = moveset_HTM, | 337 | .moveset = moveset_HTM, |
| 287 | 338 | ||
| 288 | .pre_trans = uf, | 339 | .pre_trans = uf, |
| 340 | |||
| 341 | .tables = {&pd_drud_sym16_HTM}, | ||
| 342 | .ntables = 1, | ||
| 289 | }; | 343 | }; |
| 290 | 344 | ||
| 291 | Step | 345 | Step |
| @@ -300,6 +354,9 @@ drud_HTM = { | |||
| 300 | .moveset = moveset_HTM, | 354 | .moveset = moveset_HTM, |
| 301 | 355 | ||
| 302 | .pre_trans = uf, | 356 | .pre_trans = uf, |
| 357 | |||
| 358 | .tables = {&pd_drud_sym16_HTM}, | ||
| 359 | .ntables = 1, | ||
| 303 | }; | 360 | }; |
| 304 | 361 | ||
| 305 | Step | 362 | Step |
| @@ -314,6 +371,9 @@ drrl_HTM = { | |||
| 314 | .moveset = moveset_HTM, | 371 | .moveset = moveset_HTM, |
| 315 | 372 | ||
| 316 | .pre_trans = rf, | 373 | .pre_trans = rf, |
| 374 | |||
| 375 | .tables = {&pd_drud_sym16_HTM}, | ||
| 376 | .ntables = 1, | ||
| 317 | }; | 377 | }; |
| 318 | 378 | ||
| 319 | Step | 379 | Step |
| @@ -328,6 +388,9 @@ drfb_HTM = { | |||
| 328 | .moveset = moveset_HTM, | 388 | .moveset = moveset_HTM, |
| 329 | 389 | ||
| 330 | .pre_trans = fd, | 390 | .pre_trans = fd, |
| 391 | |||
| 392 | .tables = {&pd_drud_sym16_HTM}, | ||
| 393 | .ntables = 1, | ||
| 331 | }; | 394 | }; |
| 332 | 395 | ||
| 333 | /* DR from EO */ | 396 | /* DR from EO */ |
| @@ -343,6 +406,9 @@ dr_eo = { | |||
| 343 | .moveset = moveset_eofb, | 406 | .moveset = moveset_eofb, |
| 344 | 407 | ||
| 345 | .detect = detect_pretrans_eofb, | 408 | .detect = detect_pretrans_eofb, |
| 409 | |||
| 410 | .tables = {&pd_drud_eofb}, | ||
| 411 | .ntables = 1, | ||
| 346 | }; | 412 | }; |
| 347 | 413 | ||
| 348 | Step | 414 | Step |
| @@ -357,6 +423,9 @@ dr_eofb = { | |||
| 357 | .moveset = moveset_eofb, | 423 | .moveset = moveset_eofb, |
| 358 | 424 | ||
| 359 | .pre_trans = uf, | 425 | .pre_trans = uf, |
| 426 | |||
| 427 | .tables = {&pd_drud_eofb}, | ||
| 428 | .ntables = 1, | ||
| 360 | }; | 429 | }; |
| 361 | 430 | ||
| 362 | Step | 431 | Step |
| @@ -371,6 +440,9 @@ dr_eorl = { | |||
| 371 | .moveset = moveset_eofb, | 440 | .moveset = moveset_eofb, |
| 372 | 441 | ||
| 373 | .pre_trans = ur, | 442 | .pre_trans = ur, |
| 443 | |||
| 444 | .tables = {&pd_drud_eofb}, | ||
| 445 | .ntables = 1, | ||
| 374 | }; | 446 | }; |
| 375 | 447 | ||
| 376 | Step | 448 | Step |
| @@ -385,6 +457,9 @@ dr_eoud = { | |||
| 385 | .moveset = moveset_eofb, | 457 | .moveset = moveset_eofb, |
| 386 | 458 | ||
| 387 | .pre_trans = fd, | 459 | .pre_trans = fd, |
| 460 | |||
| 461 | .tables = {&pd_drud_eofb}, | ||
| 462 | .ntables = 1, | ||
| 388 | }; | 463 | }; |
| 389 | 464 | ||
| 390 | Step | 465 | Step |
| @@ -399,6 +474,9 @@ drud_eofb = { | |||
| 399 | .moveset = moveset_eofb, | 474 | .moveset = moveset_eofb, |
| 400 | 475 | ||
| 401 | .pre_trans = uf, | 476 | .pre_trans = uf, |
| 477 | |||
| 478 | .tables = {&pd_drud_eofb}, | ||
| 479 | .ntables = 1, | ||
| 402 | }; | 480 | }; |
| 403 | 481 | ||
| 404 | Step | 482 | Step |
| @@ -413,6 +491,9 @@ drrl_eofb = { | |||
| 413 | .moveset = moveset_eofb, | 491 | .moveset = moveset_eofb, |
| 414 | 492 | ||
| 415 | .pre_trans = rf, | 493 | .pre_trans = rf, |
| 494 | |||
| 495 | .tables = {&pd_drud_eofb}, | ||
| 496 | .ntables = 1, | ||
| 416 | }; | 497 | }; |
| 417 | 498 | ||
| 418 | Step | 499 | Step |
| @@ -427,6 +508,9 @@ drud_eorl = { | |||
| 427 | .moveset = moveset_eofb, | 508 | .moveset = moveset_eofb, |
| 428 | 509 | ||
| 429 | .pre_trans = ur, | 510 | .pre_trans = ur, |
| 511 | |||
| 512 | .tables = {&pd_drud_eofb}, | ||
| 513 | .ntables = 1, | ||
| 430 | }; | 514 | }; |
| 431 | 515 | ||
| 432 | Step | 516 | Step |
| @@ -441,6 +525,9 @@ drfb_eorl = { | |||
| 441 | .moveset = moveset_eofb, | 525 | .moveset = moveset_eofb, |
| 442 | 526 | ||
| 443 | .pre_trans = fr, | 527 | .pre_trans = fr, |
| 528 | |||
| 529 | .tables = {&pd_drud_eofb}, | ||
| 530 | .ntables = 1, | ||
| 444 | }; | 531 | }; |
| 445 | 532 | ||
| 446 | Step | 533 | Step |
| @@ -455,6 +542,9 @@ drfb_eoud = { | |||
| 455 | .moveset = moveset_eofb, | 542 | .moveset = moveset_eofb, |
| 456 | 543 | ||
| 457 | .pre_trans = fd, | 544 | .pre_trans = fd, |
| 545 | |||
| 546 | .tables = {&pd_drud_eofb}, | ||
| 547 | .ntables = 1, | ||
| 458 | }; | 548 | }; |
| 459 | 549 | ||
| 460 | Step | 550 | Step |
| @@ -469,6 +559,9 @@ drrl_eoud = { | |||
| 469 | .moveset = moveset_eofb, | 559 | .moveset = moveset_eofb, |
| 470 | 560 | ||
| 471 | .pre_trans = rd, | 561 | .pre_trans = rd, |
| 562 | |||
| 563 | .tables = {&pd_drud_eofb}, | ||
| 564 | .ntables = 1, | ||
| 472 | }; | 565 | }; |
| 473 | 566 | ||
| 474 | /* DR finish steps */ | 567 | /* DR finish steps */ |
| @@ -484,6 +577,9 @@ dranyfin_DR = { | |||
| 484 | .moveset = moveset_drud, | 577 | .moveset = moveset_drud, |
| 485 | 578 | ||
| 486 | .detect = detect_pretrans_drud, | 579 | .detect = detect_pretrans_drud, |
| 580 | |||
| 581 | .tables = {&pd_drudfin_noE_sym16_drud}, | ||
| 582 | .ntables = 1, | ||
| 487 | }; | 583 | }; |
| 488 | 584 | ||
| 489 | Step | 585 | Step |
| @@ -498,6 +594,9 @@ drudfin_drud = { | |||
| 498 | .moveset = moveset_drud, | 594 | .moveset = moveset_drud, |
| 499 | 595 | ||
| 500 | .pre_trans = uf, | 596 | .pre_trans = uf, |
| 597 | |||
| 598 | .tables = {&pd_drudfin_noE_sym16_drud}, | ||
| 599 | .ntables = 1, | ||
| 501 | }; | 600 | }; |
| 502 | 601 | ||
| 503 | Step | 602 | Step |
| @@ -512,6 +611,9 @@ drrlfin_drrl = { | |||
| 512 | .moveset = moveset_drud, | 611 | .moveset = moveset_drud, |
| 513 | 612 | ||
| 514 | .pre_trans = rf, | 613 | .pre_trans = rf, |
| 614 | |||
| 615 | .tables = {&pd_drudfin_noE_sym16_drud}, | ||
| 616 | .ntables = 1, | ||
| 515 | }; | 617 | }; |
| 516 | 618 | ||
| 517 | Step | 619 | Step |
| @@ -526,6 +628,9 @@ drfbfin_drfb = { | |||
| 526 | .moveset = moveset_drud, | 628 | .moveset = moveset_drud, |
| 527 | 629 | ||
| 528 | .pre_trans = fd, | 630 | .pre_trans = fd, |
| 631 | |||
| 632 | .tables = {&pd_drudfin_noE_sym16_drud}, | ||
| 633 | .ntables = 1, | ||
| 529 | }; | 634 | }; |
| 530 | 635 | ||
| 531 | /* HTR from DR */ | 636 | /* HTR from DR */ |
| @@ -541,6 +646,9 @@ htr_any = { | |||
| 541 | .moveset = moveset_drud, | 646 | .moveset = moveset_drud, |
| 542 | 647 | ||
| 543 | .detect = detect_pretrans_drud, | 648 | .detect = detect_pretrans_drud, |
| 649 | |||
| 650 | .tables = {&pd_htr_drud}, | ||
| 651 | .ntables = 1, | ||
| 544 | }; | 652 | }; |
| 545 | 653 | ||
| 546 | Step | 654 | Step |
| @@ -555,6 +663,9 @@ htr_drud = { | |||
| 555 | .moveset = moveset_drud, | 663 | .moveset = moveset_drud, |
| 556 | 664 | ||
| 557 | .pre_trans = uf, | 665 | .pre_trans = uf, |
| 666 | |||
| 667 | .tables = {&pd_htr_drud}, | ||
| 668 | .ntables = 1, | ||
| 558 | }; | 669 | }; |
| 559 | 670 | ||
| 560 | Step | 671 | Step |
| @@ -569,6 +680,9 @@ htr_drrl = { | |||
| 569 | .moveset = moveset_drud, | 680 | .moveset = moveset_drud, |
| 570 | 681 | ||
| 571 | .pre_trans = rf, | 682 | .pre_trans = rf, |
| 683 | |||
| 684 | .tables = {&pd_htr_drud}, | ||
| 685 | .ntables = 1, | ||
| 572 | }; | 686 | }; |
| 573 | 687 | ||
| 574 | Step | 688 | Step |
| @@ -583,6 +697,9 @@ htr_drfb = { | |||
| 583 | .moveset = moveset_drud, | 697 | .moveset = moveset_drud, |
| 584 | 698 | ||
| 585 | .pre_trans = fd, | 699 | .pre_trans = fd, |
| 700 | |||
| 701 | .tables = {&pd_htr_drud}, | ||
| 702 | .ntables = 1, | ||
| 586 | }; | 703 | }; |
| 587 | 704 | ||
| 588 | /* HTR finish */ | 705 | /* HTR finish */ |
| @@ -598,6 +715,9 @@ htrfin_htr = { | |||
| 598 | .moveset = moveset_htr, | 715 | .moveset = moveset_htr, |
| 599 | 716 | ||
| 600 | .pre_trans = uf, | 717 | .pre_trans = uf, |
| 718 | |||
| 719 | .tables = {&pd_htrfin_htr}, | ||
| 720 | .ntables = 1, | ||
| 601 | }; | 721 | }; |
| 602 | 722 | ||
| 603 | Step *steps[NSTEPS] = { | 723 | Step *steps[NSTEPS] = { |
| @@ -939,3 +1059,25 @@ detect_pretrans_drud(Cube cube) | |||
| 939 | 1059 | ||
| 940 | return 0; | 1060 | return 0; |
| 941 | } | 1061 | } |
| 1062 | |||
| 1063 | /* Public functions **********************************************************/ | ||
| 1064 | |||
| 1065 | void | ||
| 1066 | prepare_step(Step *step, DfsData *dd) | ||
| 1067 | { | ||
| 1068 | int i; | ||
| 1069 | |||
| 1070 | dd->m = 0; | ||
| 1071 | dd->niss = false; | ||
| 1072 | dd->lb = -1; | ||
| 1073 | dd->last1 = NULLMOVE; | ||
| 1074 | dd->last2 = NULLMOVE; | ||
| 1075 | dd->sols = new_alglist(); | ||
| 1076 | dd->current_alg = new_alg(""); | ||
| 1077 | |||
| 1078 | moveset_to_list(step->moveset, dd->sorted_moves); | ||
| 1079 | movelist_to_position(dd->sorted_moves, dd->move_position); | ||
| 1080 | |||
| 1081 | for (i = 0; i < step->ntables; i++) | ||
| 1082 | genptable(step->tables[i]); | ||
| 1083 | } | ||
