diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2020-07-11 19:51:04 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2020-07-11 19:51:04 +0200 |
| commit | 0fe7c8b43c50ae5701463acbb186a6fe0f53a773 (patch) | |
| tree | 72ec22e4bf41fb222d6f3bfcb390fb8381b09fea /src | |
| parent | 73eae801076b4c17d6b3d2d23db9e39938b01586 (diff) | |
| download | nissy-0fe7c8b43c50ae5701463acbb186a6fe0f53a773.tar.gz nissy-0fe7c8b43c50ae5701463acbb186a6fe0f53a773.zip | |
Bug fix
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 20 | ||||
| -rw-r--r-- | src/solver.c | 50 | ||||
| -rw-r--r-- | src/solver.h | 16 |
3 files changed, 43 insertions, 43 deletions
| @@ -68,7 +68,7 @@ int read_moves_from_argument(int n, char tok[][100], int *dst) { | |||
| 68 | return (r != -1) ? r : read_moves_from_tok(n, tok, dst); | 68 | return (r != -1) ? r : read_moves_from_tok(n, tok, dst); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | void print_results(int n, int res[][21]) { | 71 | void print_results(int n, int res[][30]) { |
| 72 | if (n == -1) | 72 | if (n == -1) |
| 73 | printf("Pre-conditions not satisfied (or other error).\n"); | 73 | printf("Pre-conditions not satisfied (or other error).\n"); |
| 74 | 74 | ||
| @@ -314,7 +314,7 @@ void pic_cmd(int n, char cmdtok[][100]) { | |||
| 314 | } | 314 | } |
| 315 | 315 | ||
| 316 | void solve_cmd(int n, char cmdtok[][100]) { | 316 | void solve_cmd(int n, char cmdtok[][100]) { |
| 317 | int m = 1, b = 20, optimal = 0; | 317 | int m = 1, b = 25, optimal = 0; |
| 318 | int scram[255] = {[0] = 0}; | 318 | int scram[255] = {[0] = 0}; |
| 319 | int scram_unnissed[255]; | 319 | int scram_unnissed[255]; |
| 320 | 320 | ||
| @@ -349,7 +349,7 @@ void solve_cmd(int n, char cmdtok[][100]) { | |||
| 349 | 349 | ||
| 350 | /* Call solver and print results */ | 350 | /* Call solver and print results */ |
| 351 | unniss(scram, scram_unnissed); | 351 | unniss(scram, scram_unnissed); |
| 352 | int sol[m+2][21]; | 352 | int sol[m+2][30]; |
| 353 | int s = solve_scram(scram_unnissed, sol, m, b, optimal); | 353 | int s = solve_scram(scram_unnissed, sol, m, b, optimal); |
| 354 | print_results(s, sol); | 354 | print_results(s, sol); |
| 355 | } | 355 | } |
| @@ -382,7 +382,7 @@ void replace_cmd(int n, char cmdtok[][100]) { | |||
| 382 | 382 | ||
| 383 | unniss(scram, scram_unnissed); | 383 | unniss(scram, scram_unnissed); |
| 384 | int l = len(scram_unnissed); | 384 | int l = len(scram_unnissed); |
| 385 | int aux1[255], aux2[15][21], aux3[21]; | 385 | int aux1[255], aux2[15][30], aux3[30]; |
| 386 | for (int i = 0; i < l; i++) { | 386 | for (int i = 0; i < l; i++) { |
| 387 | for (int j = 2; j <= m && i + j <= l; j++) { | 387 | for (int j = 2; j <= m && i + j <= l; j++) { |
| 388 | copy_moves(scram_unnissed+i, aux1); | 388 | copy_moves(scram_unnissed+i, aux1); |
| @@ -459,7 +459,7 @@ void eo_cmd(int n, char cmdtok[][100]) { | |||
| 459 | unniss(scram, scram_unnissed); | 459 | unniss(scram, scram_unnissed); |
| 460 | 460 | ||
| 461 | /* Call solver and print results */ | 461 | /* Call solver and print results */ |
| 462 | int eo_list[m+5][21]; | 462 | int eo_list[m+5][30]; |
| 463 | int neo = eo_scram_spam(scram_unnissed, eo_list, fb, rl, ud, m, b, niss, | 463 | int neo = eo_scram_spam(scram_unnissed, eo_list, fb, rl, ud, m, b, niss, |
| 464 | hide); | 464 | hide); |
| 465 | print_results(neo, eo_list); | 465 | print_results(neo, eo_list); |
| @@ -531,7 +531,7 @@ void dr_cmd(int n, char cmdtok[][100]) { | |||
| 531 | unniss(scram, scram_unnissed); | 531 | unniss(scram, scram_unnissed); |
| 532 | 532 | ||
| 533 | /* Call solver */ | 533 | /* Call solver */ |
| 534 | int dr_list[m+5][21], ndr; | 534 | int dr_list[m+5][30], ndr; |
| 535 | if (from) { | 535 | if (from) { |
| 536 | ndr = drfrom_scram_spam(scram_unnissed, dr_list, from, fb, rl, ud, | 536 | ndr = drfrom_scram_spam(scram_unnissed, dr_list, from, fb, rl, ud, |
| 537 | m, b, niss, hide); | 537 | m, b, niss, hide); |
| @@ -600,7 +600,7 @@ void htr_cmd(int n, char cmdtok[][100]) { | |||
| 600 | unniss(scram, scram_unnissed); | 600 | unniss(scram, scram_unnissed); |
| 601 | 601 | ||
| 602 | /* Call solver */ | 602 | /* Call solver */ |
| 603 | int htr_list[m+5][21], nhtr; | 603 | int htr_list[m+5][30], nhtr; |
| 604 | nhtr = htr_scram_spam(scram_unnissed, htr_list, from, m, b, niss, hide); | 604 | nhtr = htr_scram_spam(scram_unnissed, htr_list, from, m, b, niss, hide); |
| 605 | print_results(nhtr, htr_list); | 605 | print_results(nhtr, htr_list); |
| 606 | } | 606 | } |
| @@ -652,7 +652,7 @@ void drfinish_cmd(int n, char cmdtok[][100]) { | |||
| 652 | unniss(scram, scram_unnissed); | 652 | unniss(scram, scram_unnissed); |
| 653 | 653 | ||
| 654 | /* Call solver */ | 654 | /* Call solver */ |
| 655 | int c_list[m+5][21], nc; | 655 | int c_list[m+5][30], nc; |
| 656 | nc = dr_finish_scram_spam(scram_unnissed, c_list, from, m, b); | 656 | nc = dr_finish_scram_spam(scram_unnissed, c_list, from, m, b); |
| 657 | print_results(nc, c_list); | 657 | print_results(nc, c_list); |
| 658 | } | 658 | } |
| @@ -693,7 +693,7 @@ void htrfinish_cmd(int n, char cmdtok[][100]) { | |||
| 693 | unniss(scram, scram_unnissed); | 693 | unniss(scram, scram_unnissed); |
| 694 | 694 | ||
| 695 | /* Call solver */ | 695 | /* Call solver */ |
| 696 | int c_list[m+5][21], nc; | 696 | int c_list[m+5][30], nc; |
| 697 | nc = htr_finish_scram_spam(scram_unnissed, c_list, m, b); | 697 | nc = htr_finish_scram_spam(scram_unnissed, c_list, m, b); |
| 698 | print_results(nc, c_list); | 698 | print_results(nc, c_list); |
| 699 | } | 699 | } |
| @@ -747,7 +747,7 @@ void drcorners_cmd(int n, char cmdtok[][100]) { | |||
| 747 | unniss(scram, scram_unnissed); | 747 | unniss(scram, scram_unnissed); |
| 748 | 748 | ||
| 749 | /* Call solver */ | 749 | /* Call solver */ |
| 750 | int c_list[m+5][21], nc; | 750 | int c_list[m+5][30], nc; |
| 751 | nc = dr_corners_scram_spam(scram_unnissed, c_list, from, m, b, ignore); | 751 | nc = dr_corners_scram_spam(scram_unnissed, c_list, from, m, b, ignore); |
| 752 | print_results(nc, c_list); | 752 | print_results(nc, c_list); |
| 753 | } | 753 | } |
diff --git a/src/solver.c b/src/solver.c index c2b3ff5..d918a54 100644 --- a/src/solver.c +++ b/src/solver.c | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | /* Applies inverse of moves, inverse of prev_moves and then inverse of scramble | 10 | /* Applies inverse of moves, inverse of prev_moves and then inverse of scramble |
| 11 | * and returns a coordinate determined by t_table. */ | 11 | * and returns a coordinate determined by t_table. */ |
| 12 | int premoves_inverse(int moves[21], int scramble[], int prev_moves[21], | 12 | int premoves_inverse(int moves[30], int scramble[], int prev_moves[30], |
| 13 | int t_table[][19]) { | 13 | int t_table[][19]) { |
| 14 | int nprevmoves, nmoves, nscramble, coord = 0; | 14 | int nprevmoves, nmoves, nscramble, coord = 0; |
| 15 | 15 | ||
| @@ -31,7 +31,7 @@ int premoves_inverse(int moves[21], int scramble[], int prev_moves[21], | |||
| 31 | /******/ | 31 | /******/ |
| 32 | /* EO */ | 32 | /* EO */ |
| 33 | /******/ | 33 | /******/ |
| 34 | void niss_eo_dfs(int eo, int scramble[], int eo_list[][21], int *eo_count, | 34 | void niss_eo_dfs(int eo, int scramble[], int eo_list[][30], int *eo_count, |
| 35 | int t_table[pow2to11][19], int p_table[pow2to11], | 35 | int t_table[pow2to11][19], int p_table[pow2to11], |
| 36 | int last1, int last2, int moves, int m, int d, int niss, | 36 | int last1, int last2, int moves, int m, int d, int niss, |
| 37 | int can_use_niss, int hide) { | 37 | int can_use_niss, int hide) { |
| @@ -80,7 +80,7 @@ void niss_eo_dfs(int eo, int scramble[], int eo_list[][21], int *eo_count, | |||
| 80 | } | 80 | } |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | int eo_scram_spam(int scram[], int eo_list[][21], int fb, int rl, int ud, | 83 | int eo_scram_spam(int scram[], int eo_list[][30], int fb, int rl, int ud, |
| 84 | int m, int b, int niss, int h) { | 84 | int m, int b, int niss, int h) { |
| 85 | 85 | ||
| 86 | init_small_pruning_tables(); | 86 | init_small_pruning_tables(); |
| @@ -112,8 +112,8 @@ int eo_scram_spam(int scram[], int eo_list[][21], int fb, int rl, int ud, | |||
| 112 | 112 | ||
| 113 | 113 | ||
| 114 | /* Scramble includes premoves for previous EO */ | 114 | /* Scramble includes premoves for previous EO */ |
| 115 | void niss_dr_from_eo_dfs(int co, int epos, int scramble[], int eo_moves[21], | 115 | void niss_dr_from_eo_dfs(int co, int epos, int scramble[], int eo_moves[30], |
| 116 | int dr_list[][21], int *dr_count, | 116 | int dr_list[][30], int *dr_count, |
| 117 | int co_t_table[pow3to7][19], | 117 | int co_t_table[pow3to7][19], |
| 118 | int epos_t_table[binom12on4][19], | 118 | int epos_t_table[binom12on4][19], |
| 119 | int8_t p_table[pow3to7][binom12on4], int mask, | 119 | int8_t p_table[pow3to7][binom12on4], int mask, |
| @@ -169,7 +169,7 @@ void niss_dr_from_eo_dfs(int co, int epos, int scramble[], int eo_moves[21], | |||
| 169 | moves, m, d, 1, can_use_niss, hide); | 169 | moves, m, d, 1, can_use_niss, hide); |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | int drfrom_scram_spam(int scram[], int dr_list[][21], int from, int fb, | 172 | int drfrom_scram_spam(int scram[], int dr_list[][30], int from, int fb, |
| 173 | int rl, int ud, int m, int b, int niss, int hide) { | 173 | int rl, int ud, int m, int b, int niss, int hide) { |
| 174 | 174 | ||
| 175 | init_drfromeo_pruning_tables(); | 175 | init_drfromeo_pruning_tables(); |
| @@ -252,8 +252,8 @@ int drfrom_scram_spam(int scram[], int dr_list[][21], int from, int fb, | |||
| 252 | /***************/ | 252 | /***************/ |
| 253 | 253 | ||
| 254 | /* Scramble includes premoves for previous DR */ | 254 | /* Scramble includes premoves for previous DR */ |
| 255 | void niss_htr_from_dr_dfs(int cp, int eo3, int scramble[], int eodr_moves[21], | 255 | void niss_htr_from_dr_dfs(int cp, int eo3, int scramble[], int eodr_moves[30], |
| 256 | int htr_list[][21], int *htr_count, | 256 | int htr_list[][30], int *htr_count, |
| 257 | int eo3_t_table[pow2to11][19], | 257 | int eo3_t_table[pow2to11][19], |
| 258 | int cp_to_htr_pruning_table[factorial8], | 258 | int cp_to_htr_pruning_table[factorial8], |
| 259 | int cp_htr_pruning_table[factorial8], | 259 | int cp_htr_pruning_table[factorial8], |
| @@ -314,7 +314,7 @@ void niss_htr_from_dr_dfs(int cp, int eo3, int scramble[], int eodr_moves[21], | |||
| 314 | 0, 0, moves, m, d, 1, can_use_niss, hide); | 314 | 0, 0, moves, m, d, 1, can_use_niss, hide); |
| 315 | } | 315 | } |
| 316 | 316 | ||
| 317 | int htr_scram_spam(int scram[], int htr_list[][21], int from, | 317 | int htr_scram_spam(int scram[], int htr_list[][30], int from, |
| 318 | int m, int b, int niss, int hide) { | 318 | int m, int b, int niss, int hide) { |
| 319 | 319 | ||
| 320 | init_small_pruning_tables(); | 320 | init_small_pruning_tables(); |
| @@ -370,7 +370,7 @@ int htr_scram_spam(int scram[], int htr_list[][21], int from, | |||
| 370 | /* Direct DR (no NISS) */ | 370 | /* Direct DR (no NISS) */ |
| 371 | /***********************/ | 371 | /***********************/ |
| 372 | void dr_dfs(int eo, int eo2, int eslice, int co, | 372 | void dr_dfs(int eo, int eo2, int eslice, int co, |
| 373 | int dr_list[][21], int *dr_count, | 373 | int dr_list[][30], int *dr_count, |
| 374 | int eo_t_table[pow2to11][19], int eo2_t_table[pow2to11][19], | 374 | int eo_t_table[pow2to11][19], int eo2_t_table[pow2to11][19], |
| 375 | int eslice_t_table[binom12on4][19], int co_t_table[pow3to7][19], | 375 | int eslice_t_table[binom12on4][19], int co_t_table[pow3to7][19], |
| 376 | int8_t eo_eslice_p_table[pow2to11][binom12on4], | 376 | int8_t eo_eslice_p_table[pow2to11][binom12on4], |
| @@ -411,7 +411,7 @@ void dr_dfs(int eo, int eo2, int eslice, int co, | |||
| 411 | } | 411 | } |
| 412 | } | 412 | } |
| 413 | 413 | ||
| 414 | int dr_scram_spam(int scram[], int dr_list[][21], int fb, int rl, int ud, | 414 | int dr_scram_spam(int scram[], int dr_list[][30], int fb, int rl, int ud, |
| 415 | int m, int b, int h) { | 415 | int m, int b, int h) { |
| 416 | 416 | ||
| 417 | init_directdr_pruning_tables(); | 417 | init_directdr_pruning_tables(); |
| @@ -462,7 +462,7 @@ int dr_scram_spam(int scram[], int dr_list[][21], int fb, int rl, int ud, | |||
| 462 | /*************/ | 462 | /*************/ |
| 463 | /* DR finish */ | 463 | /* DR finish */ |
| 464 | /*************/ | 464 | /*************/ |
| 465 | void dr_finish_dfs(int cp, int ep8, int ep4, int sol[][21], int *sol_count, | 465 | void dr_finish_dfs(int cp, int ep8, int ep4, int sol[][30], int *sol_count, |
| 466 | int ep8_t_table[factorial8][19], | 466 | int ep8_t_table[factorial8][19], |
| 467 | int ep4_t_table[factorial4][19], | 467 | int ep4_t_table[factorial4][19], |
| 468 | int cp_p_table[factorial8], | 468 | int cp_p_table[factorial8], |
| @@ -500,7 +500,7 @@ void dr_finish_dfs(int cp, int ep8, int ep4, int sol[][21], int *sol_count, | |||
| 500 | return; | 500 | return; |
| 501 | } | 501 | } |
| 502 | 502 | ||
| 503 | int dr_finish_scram_spam(int scram[], int sol[][21], int from, int m, int b) { | 503 | int dr_finish_scram_spam(int scram[], int sol[][30], int from, int m, int b) { |
| 504 | 504 | ||
| 505 | init_small_pruning_tables(); | 505 | init_small_pruning_tables(); |
| 506 | 506 | ||
| @@ -551,7 +551,7 @@ int dr_finish_scram_spam(int scram[], int sol[][21], int from, int m, int b) { | |||
| 551 | return n; | 551 | return n; |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | int htr_finish_scram_spam(int scram[], int sol[][21], int m, int b) { | 554 | int htr_finish_scram_spam(int scram[], int sol[][30], int m, int b) { |
| 555 | 555 | ||
| 556 | init_small_pruning_tables(); | 556 | init_small_pruning_tables(); |
| 557 | 557 | ||
| @@ -588,7 +588,7 @@ int htr_finish_scram_spam(int scram[], int sol[][21], int m, int b) { | |||
| 588 | /**************/ | 588 | /**************/ |
| 589 | /* DR corners */ | 589 | /* DR corners */ |
| 590 | /**************/ | 590 | /**************/ |
| 591 | void dr_corners_dfs(int cp, int sol[][21], int *sol_count, | 591 | void dr_corners_dfs(int cp, int sol[][30], int *sol_count, |
| 592 | int cp_p_table[factorial8], int mask, int last1, int last2, | 592 | int cp_p_table[factorial8], int mask, int last1, int last2, |
| 593 | int moves, int m, int d, int ignore) { | 593 | int moves, int m, int d, int ignore) { |
| 594 | 594 | ||
| @@ -621,7 +621,7 @@ void dr_corners_dfs(int cp, int sol[][21], int *sol_count, | |||
| 621 | } | 621 | } |
| 622 | } | 622 | } |
| 623 | 623 | ||
| 624 | int dr_corners_scram_spam(int scram[], int sol[][21], int from, int m, int b, | 624 | int dr_corners_scram_spam(int scram[], int sol[][30], int from, int m, int b, |
| 625 | int ignore) { | 625 | int ignore) { |
| 626 | 626 | ||
| 627 | init_small_pruning_tables(); | 627 | init_small_pruning_tables(); |
| @@ -666,7 +666,7 @@ int dr_corners_scram_spam(int scram[], int sol[][21], int from, int m, int b, | |||
| 666 | /* Full solver */ | 666 | /* Full solver */ |
| 667 | /***************/ | 667 | /***************/ |
| 668 | 668 | ||
| 669 | int is_ep_solved(int ep, int moves[21]) { | 669 | int is_ep_solved(int ep, int moves[30]) { |
| 670 | int ep_arr[12]; | 670 | int ep_arr[12]; |
| 671 | ep_int_to_array(ep, ep_arr); | 671 | ep_int_to_array(ep, ep_arr); |
| 672 | for (int i = 0; moves[i]; i++) | 672 | for (int i = 0; moves[i]; i++) |
| @@ -677,7 +677,7 @@ int is_ep_solved(int ep, int moves[21]) { | |||
| 677 | /* Solves directly using only small tables. Suitable for short solutions. */ | 677 | /* Solves directly using only small tables. Suitable for short solutions. */ |
| 678 | void small_optimal_dfs(int eofb, int eorl, int eoud, int ep, | 678 | void small_optimal_dfs(int eofb, int eorl, int eoud, int ep, |
| 679 | int coud, int cofb, int corl, int cp, | 679 | int coud, int cofb, int corl, int cp, |
| 680 | int sol[][21], int *sol_count, int last1, int last2, | 680 | int sol[][30], int *sol_count, int last1, int last2, |
| 681 | int moves, int m, int d) { | 681 | int moves, int m, int d) { |
| 682 | if (moves + eofb_pruning_table[eofb] > d || | 682 | if (moves + eofb_pruning_table[eofb] > d || |
| 683 | moves + eorl_pruning_table[eorl] > d || | 683 | moves + eorl_pruning_table[eorl] > d || |
| @@ -721,7 +721,7 @@ void small_optimal_dfs(int eofb, int eorl, int eoud, int ep, | |||
| 721 | void medium_optimal_dfs(int eofb, int eorl, int eoud, | 721 | void medium_optimal_dfs(int eofb, int eorl, int eoud, |
| 722 | int epose, int eposs, int eposm, int ep, | 722 | int epose, int eposs, int eposm, int ep, |
| 723 | int coud, int cofb, int corl, int cp, | 723 | int coud, int cofb, int corl, int cp, |
| 724 | int sol[][21], int *sol_count, int last1, int last2, | 724 | int sol[][30], int *sol_count, int last1, int last2, |
| 725 | int moves, int m, int d) { | 725 | int moves, int m, int d) { |
| 726 | if (moves + eofb_epose_pruning_table[eofb][epose] > d || | 726 | if (moves + eofb_epose_pruning_table[eofb][epose] > d || |
| 727 | moves + eorl_eposs_pruning_table[eorl][eposs] > d || | 727 | moves + eorl_eposs_pruning_table[eorl][eposs] > d || |
| @@ -769,7 +769,7 @@ void medium_optimal_dfs(int eofb, int eorl, int eoud, | |||
| 769 | 769 | ||
| 770 | /* Uses huge tables */ | 770 | /* Uses huge tables */ |
| 771 | int optimal_dfs(int ep, int cp, int eo, int co, int emslices, | 771 | int optimal_dfs(int ep, int cp, int eo, int co, int emslices, |
| 772 | int sol[][21], int last1, int last2, int moves, int d) { | 772 | int sol[][30], int last1, int last2, int moves, int d) { |
| 773 | if (moves + cp_co_pruning_table[cp][co] > d || | 773 | if (moves + cp_co_pruning_table[cp][co] > d || |
| 774 | moves + triple_eo_pruning_table[eo][emslices] > d) | 774 | moves + triple_eo_pruning_table[eo][emslices] > d) |
| 775 | return 0; | 775 | return 0; |
| @@ -795,7 +795,7 @@ int optimal_dfs(int ep, int cp, int eo, int co, int emslices, | |||
| 795 | return 0; | 795 | return 0; |
| 796 | } | 796 | } |
| 797 | 797 | ||
| 798 | int solve_scram(int scram[], int sol[][21], int m, int b, int optimal) { | 798 | int solve_scram(int scram[], int sol[][30], int m, int b, int optimal) { |
| 799 | 799 | ||
| 800 | /* Initialize pieces. */ | 800 | /* Initialize pieces. */ |
| 801 | int eofb = 0, eorl = 0, eoud = 0, ep = 0; | 801 | int eofb = 0, eorl = 0, eoud = 0, ep = 0; |
| @@ -850,10 +850,10 @@ int solve_scram(int scram[], int sol[][21], int m, int b, int optimal) { | |||
| 850 | return n; | 850 | return n; |
| 851 | 851 | ||
| 852 | /* Then we try a 2-step solver */ | 852 | /* Then we try a 2-step solver */ |
| 853 | int max_step1 = 5000; | 853 | int max_step1 = 100; |
| 854 | int db = 14; | 854 | int db = 12; |
| 855 | int step1[max_step1+10][21]; | 855 | int step1[max_step1+10][30]; |
| 856 | int ss[300], step2[2][21]; | 856 | int ss[300], step2[2][30]; |
| 857 | int best = b+1; | 857 | int best = b+1; |
| 858 | 858 | ||
| 859 | /* TODO maybe: for now, multiple solutions can be found only using the | 859 | /* TODO maybe: for now, multiple solutions can be found only using the |
diff --git a/src/solver.h b/src/solver.h index 7724e52..14997ed 100644 --- a/src/solver.h +++ b/src/solver.h | |||
| @@ -1,13 +1,13 @@ | |||
| 1 | int eo_scram_spam(int scram[], int eo_list[][21], int fb, int rl, int ud, | 1 | int eo_scram_spam(int scram[], int eo_list[][30], int fb, int rl, int ud, |
| 2 | int m, int b, int niss, int h); | 2 | int m, int b, int niss, int h); |
| 3 | int dr_scram_spam(int scram[], int dr_list[][21], int fb, int rl, int ud, | 3 | int dr_scram_spam(int scram[], int dr_list[][30], int fb, int rl, int ud, |
| 4 | int m, int b, int h); | 4 | int m, int b, int h); |
| 5 | int drfrom_scram_spam(int scram[], int dr_list[][21], int from, int fb, | 5 | int drfrom_scram_spam(int scram[], int dr_list[][30], int from, int fb, |
| 6 | int rl, int ud, int m, int b, int niss, int hide); | 6 | int rl, int ud, int m, int b, int niss, int hide); |
| 7 | int htr_scram_spam(int scram[], int htr_list[][21], int from, | 7 | int htr_scram_spam(int scram[], int htr_list[][30], int from, |
| 8 | int m, int b, int niss, int hide); | 8 | int m, int b, int niss, int hide); |
| 9 | int dr_corners_scram_spam(int scram[], int sol[][21], int from, int m, int b, | 9 | int dr_corners_scram_spam(int scram[], int sol[][30], int from, int m, int b, |
| 10 | int ignore); | 10 | int ignore); |
| 11 | int dr_finish_scram_spam(int scram[], int sol[][21], int from, int m, int b); | 11 | int dr_finish_scram_spam(int scram[], int sol[][30], int from, int m, int b); |
| 12 | int htr_finish_scram_spam(int scram[], int sol[][21], int m, int b); | 12 | int htr_finish_scram_spam(int scram[], int sol[][30], int m, int b); |
| 13 | int solve_scram(int scram[], int sol[][21], int m, int b, int optimal); | 13 | int solve_scram(int scram[], int sol[][30], int m, int b, int optimal); |
