Wed Oct 8 08:46:37 2025 polyomino_parity_test(): python version: 3.10.12 numpy version: 1.26.4 Test polyomino_parity(). addmultisteps_test(): [ num, no_sums, s ] = addmultisteps ( p, ns, steps ) input: P is the parity of the region. NS is a vector of step counts. STEPS is a vector of step sizes. output: NUM is the number of sums equal to P. NO_SUMS is the number of sums generated. S, contains every sum computed. For this example: P = 0 NS = [2,5,3,6,7 ] STEPS = [1,3,2,5,9 ] 56 sums equal to P were found: Correct number of such sums is 56 4032 sums were generated: For this example: P = 4 NS = [1,1,3 ] STEPS = [1,3,4 ] 0 sums equal to P were found: Correct number of such sums is 0 16 sums were generated: For this example: P = 4 NS = [3,1,1 ] STEPS = [1,3,4 ] 2 sums equal to P were found: Correct number of such sums is 2 16 sums were generated: diophantine_nd_nonnegative_test(): diophantine_nd_nonnegative() returns nonnegative solutions of a Diophantine equation in N variables. 2 * x 1 + 3 * x 2 = 18 4 solutions found. 0 : 2 * 9.0 + 3 * 0.0 = 18.0 1 : 2 * 6.0 + 3 * 2.0 = 18.0 2 : 2 * 3.0 + 3 * 4.0 = 18.0 3 : 2 * 0.0 + 3 * 6.0 = 18.0 6 * x 1 + 3 * x 2 + 13 * x 3 = 16 1 solutions found. 0 : 6 * 0.0 + 3 * 1.0 + 13 * 1.0 = 16.0 12 * x 1 + 9 * x 2 + 7 * x 3 = 60 4 solutions found. 0 : 12 * 5.0 + 9 * 0.0 + 7 * 0.0 = 60.0 1 : 12 * 2.0 + 9 * 4.0 + 7 * 0.0 = 60.0 2 : 12 * 1.0 + 9 * 3.0 + 7 * 3.0 = 60.0 3 : 12 * 0.0 + 9 * 2.0 + 7 * 6.0 = 60.0 2 * x 1 + 3 * x 2 + 5 * x 3 + 6 * x 4 = 24 31 solutions found. 0 : 2 * 12.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 = 24.0 1 : 2 * 9.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 = 24.0 2 : 2 * 9.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 = 24.0 3 : 2 * 8.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 = 24.0 4 : 2 * 7.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 = 24.0 5 : 2 * 6.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 = 24.0 6 : 2 * 6.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 = 24.0 7 : 2 * 6.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 = 24.0 8 : 2 * 5.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 = 24.0 9 : 2 * 5.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 = 24.0 10 : 2 * 4.0 + 3 * 2.0 + 5 * 2.0 + 6 * 0.0 = 24.0 11 : 2 * 4.0 + 3 * 0.0 + 5 * 2.0 + 6 * 1.0 = 24.0 12 : 2 * 3.0 + 3 * 6.0 + 5 * 0.0 + 6 * 0.0 = 24.0 13 : 2 * 3.0 + 3 * 4.0 + 5 * 0.0 + 6 * 1.0 = 24.0 14 : 2 * 3.0 + 3 * 2.0 + 5 * 0.0 + 6 * 2.0 = 24.0 15 : 2 * 3.0 + 3 * 1.0 + 5 * 3.0 + 6 * 0.0 = 24.0 16 : 2 * 3.0 + 3 * 0.0 + 5 * 0.0 + 6 * 3.0 = 24.0 17 : 2 * 2.0 + 3 * 5.0 + 5 * 1.0 + 6 * 0.0 = 24.0 18 : 2 * 2.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 = 24.0 19 : 2 * 2.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 = 24.0 20 : 2 * 2.0 + 3 * 0.0 + 5 * 4.0 + 6 * 0.0 = 24.0 21 : 2 * 1.0 + 3 * 4.0 + 5 * 2.0 + 6 * 0.0 = 24.0 22 : 2 * 1.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 = 24.0 23 : 2 * 1.0 + 3 * 0.0 + 5 * 2.0 + 6 * 2.0 = 24.0 24 : 2 * 0.0 + 3 * 8.0 + 5 * 0.0 + 6 * 0.0 = 24.0 25 : 2 * 0.0 + 3 * 6.0 + 5 * 0.0 + 6 * 1.0 = 24.0 26 : 2 * 0.0 + 3 * 4.0 + 5 * 0.0 + 6 * 2.0 = 24.0 27 : 2 * 0.0 + 3 * 3.0 + 5 * 3.0 + 6 * 0.0 = 24.0 28 : 2 * 0.0 + 3 * 2.0 + 5 * 0.0 + 6 * 3.0 = 24.0 29 : 2 * 0.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 = 24.0 30 : 2 * 0.0 + 3 * 0.0 + 5 * 0.0 + 6 * 4.0 = 24.0 2 * x 1 + 3 * x 2 + 5 * x 3 + 6 * x 4 + 7 * x 5 = 35 150 solutions found. 0 : 2 * 16.0 + 3 * 1.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 1 : 2 * 15.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 2 : 2 * 14.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35.0 3 : 2 * 13.0 + 3 * 3.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 4 : 2 * 13.0 + 3 * 1.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35.0 5 : 2 * 12.0 + 3 * 2.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 6 : 2 * 12.0 + 3 * 0.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35.0 7 : 2 * 11.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35.0 8 : 2 * 11.0 + 3 * 1.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35.0 9 : 2 * 11.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35.0 10 : 2 * 10.0 + 3 * 5.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 11 : 2 * 10.0 + 3 * 3.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35.0 12 : 2 * 10.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35.0 13 : 2 * 10.0 + 3 * 1.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35.0 14 : 2 * 10.0 + 3 * 0.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35.0 15 : 2 * 9.0 + 3 * 4.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 16 : 2 * 9.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35.0 17 : 2 * 9.0 + 3 * 1.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35.0 18 : 2 * 9.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35.0 19 : 2 * 9.0 + 3 * 0.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35.0 20 : 2 * 8.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35.0 21 : 2 * 8.0 + 3 * 3.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35.0 22 : 2 * 8.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35.0 23 : 2 * 8.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35.0 24 : 2 * 8.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35.0 25 : 2 * 8.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35.0 26 : 2 * 7.0 + 3 * 7.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 27 : 2 * 7.0 + 3 * 5.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35.0 28 : 2 * 7.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35.0 29 : 2 * 7.0 + 3 * 3.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35.0 30 : 2 * 7.0 + 3 * 2.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35.0 31 : 2 * 7.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 32 : 2 * 7.0 + 3 * 1.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35.0 33 : 2 * 7.0 + 3 * 0.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35.0 34 : 2 * 7.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35.0 35 : 2 * 6.0 + 3 * 6.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 36 : 2 * 6.0 + 3 * 4.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35.0 37 : 2 * 6.0 + 3 * 3.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35.0 38 : 2 * 6.0 + 3 * 2.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35.0 39 : 2 * 6.0 + 3 * 2.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35.0 40 : 2 * 6.0 + 3 * 1.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35.0 41 : 2 * 6.0 + 3 * 1.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35.0 42 : 2 * 6.0 + 3 * 0.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35.0 43 : 2 * 6.0 + 3 * 0.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35.0 44 : 2 * 5.0 + 3 * 6.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35.0 45 : 2 * 5.0 + 3 * 5.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35.0 46 : 2 * 5.0 + 3 * 4.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35.0 47 : 2 * 5.0 + 3 * 3.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35.0 48 : 2 * 5.0 + 3 * 2.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35.0 49 : 2 * 5.0 + 3 * 2.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35.0 50 : 2 * 5.0 + 3 * 1.0 + 5 * 3.0 + 6 * 0.0 + 7 * 1.0 = 35.0 51 : 2 * 5.0 + 3 * 1.0 + 5 * 2.0 + 6 * 2.0 + 7 * 0.0 = 35.0 52 : 2 * 5.0 + 3 * 0.0 + 5 * 5.0 + 6 * 0.0 + 7 * 0.0 = 35.0 53 : 2 * 5.0 + 3 * 0.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35.0 54 : 2 * 5.0 + 3 * 0.0 + 5 * 0.0 + 6 * 3.0 + 7 * 1.0 = 35.0 55 : 2 * 4.0 + 3 * 9.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 56 : 2 * 4.0 + 3 * 7.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35.0 57 : 2 * 4.0 + 3 * 5.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35.0 58 : 2 * 4.0 + 3 * 5.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35.0 59 : 2 * 4.0 + 3 * 4.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35.0 60 : 2 * 4.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 61 : 2 * 4.0 + 3 * 3.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35.0 62 : 2 * 4.0 + 3 * 2.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35.0 63 : 2 * 4.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35.0 64 : 2 * 4.0 + 3 * 1.0 + 5 * 2.0 + 6 * 0.0 + 7 * 2.0 = 35.0 65 : 2 * 4.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35.0 66 : 2 * 4.0 + 3 * 1.0 + 5 * 0.0 + 6 * 4.0 + 7 * 0.0 = 35.0 67 : 2 * 4.0 + 3 * 0.0 + 5 * 4.0 + 6 * 0.0 + 7 * 1.0 = 35.0 68 : 2 * 4.0 + 3 * 0.0 + 5 * 3.0 + 6 * 2.0 + 7 * 0.0 = 35.0 69 : 2 * 4.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 + 7 * 3.0 = 35.0 70 : 2 * 3.0 + 3 * 8.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 71 : 2 * 3.0 + 3 * 6.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35.0 72 : 2 * 3.0 + 3 * 5.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35.0 73 : 2 * 3.0 + 3 * 4.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35.0 74 : 2 * 3.0 + 3 * 4.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35.0 75 : 2 * 3.0 + 3 * 3.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35.0 76 : 2 * 3.0 + 3 * 3.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35.0 77 : 2 * 3.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35.0 78 : 2 * 3.0 + 3 * 2.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35.0 79 : 2 * 3.0 + 3 * 1.0 + 5 * 4.0 + 6 * 1.0 + 7 * 0.0 = 35.0 80 : 2 * 3.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 + 7 * 3.0 = 35.0 81 : 2 * 3.0 + 3 * 1.0 + 5 * 0.0 + 6 * 2.0 + 7 * 2.0 = 35.0 82 : 2 * 3.0 + 3 * 0.0 + 5 * 3.0 + 6 * 0.0 + 7 * 2.0 = 35.0 83 : 2 * 3.0 + 3 * 0.0 + 5 * 2.0 + 6 * 2.0 + 7 * 1.0 = 35.0 84 : 2 * 3.0 + 3 * 0.0 + 5 * 1.0 + 6 * 4.0 + 7 * 0.0 = 35.0 85 : 2 * 2.0 + 3 * 8.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35.0 86 : 2 * 2.0 + 3 * 7.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35.0 87 : 2 * 2.0 + 3 * 6.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35.0 88 : 2 * 2.0 + 3 * 5.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35.0 89 : 2 * 2.0 + 3 * 4.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35.0 90 : 2 * 2.0 + 3 * 4.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35.0 91 : 2 * 2.0 + 3 * 3.0 + 5 * 3.0 + 6 * 0.0 + 7 * 1.0 = 35.0 92 : 2 * 2.0 + 3 * 3.0 + 5 * 2.0 + 6 * 2.0 + 7 * 0.0 = 35.0 93 : 2 * 2.0 + 3 * 2.0 + 5 * 5.0 + 6 * 0.0 + 7 * 0.0 = 35.0 94 : 2 * 2.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35.0 95 : 2 * 2.0 + 3 * 2.0 + 5 * 0.0 + 6 * 3.0 + 7 * 1.0 = 35.0 96 : 2 * 2.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 + 7 * 1.0 = 35.0 97 : 2 * 2.0 + 3 * 1.0 + 5 * 2.0 + 6 * 3.0 + 7 * 0.0 = 35.0 98 : 2 * 2.0 + 3 * 1.0 + 5 * 0.0 + 6 * 0.0 + 7 * 4.0 = 35.0 99 : 2 * 2.0 + 3 * 0.0 + 5 * 5.0 + 6 * 1.0 + 7 * 0.0 = 35.0 100 : 2 * 2.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 + 7 * 3.0 = 35.0 101 : 2 * 2.0 + 3 * 0.0 + 5 * 1.0 + 6 * 2.0 + 7 * 2.0 = 35.0 102 : 2 * 2.0 + 3 * 0.0 + 5 * 0.0 + 6 * 4.0 + 7 * 1.0 = 35.0 103 : 2 * 1.0 + 3 * 11.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35.0 104 : 2 * 1.0 + 3 * 9.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35.0 105 : 2 * 1.0 + 3 * 7.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35.0 106 : 2 * 1.0 + 3 * 7.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35.0 107 : 2 * 1.0 + 3 * 6.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35.0 108 : 2 * 1.0 + 3 * 5.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 109 : 2 * 1.0 + 3 * 5.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35.0 110 : 2 * 1.0 + 3 * 4.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35.0 111 : 2 * 1.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35.0 112 : 2 * 1.0 + 3 * 3.0 + 5 * 2.0 + 6 * 0.0 + 7 * 2.0 = 35.0 113 : 2 * 1.0 + 3 * 3.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35.0 114 : 2 * 1.0 + 3 * 3.0 + 5 * 0.0 + 6 * 4.0 + 7 * 0.0 = 35.0 115 : 2 * 1.0 + 3 * 2.0 + 5 * 4.0 + 6 * 0.0 + 7 * 1.0 = 35.0 116 : 2 * 1.0 + 3 * 2.0 + 5 * 3.0 + 6 * 2.0 + 7 * 0.0 = 35.0 117 : 2 * 1.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 + 7 * 3.0 = 35.0 118 : 2 * 1.0 + 3 * 1.0 + 5 * 6.0 + 6 * 0.0 + 7 * 0.0 = 35.0 119 : 2 * 1.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 2.0 = 35.0 120 : 2 * 1.0 + 3 * 1.0 + 5 * 1.0 + 6 * 3.0 + 7 * 1.0 = 35.0 121 : 2 * 1.0 + 3 * 1.0 + 5 * 0.0 + 6 * 5.0 + 7 * 0.0 = 35.0 122 : 2 * 1.0 + 3 * 0.0 + 5 * 4.0 + 6 * 1.0 + 7 * 1.0 = 35.0 123 : 2 * 1.0 + 3 * 0.0 + 5 * 3.0 + 6 * 3.0 + 7 * 0.0 = 35.0 124 : 2 * 1.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 4.0 = 35.0 125 : 2 * 1.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 + 7 * 3.0 = 35.0 126 : 2 * 0.0 + 3 * 10.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35.0 127 : 2 * 0.0 + 3 * 8.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35.0 128 : 2 * 0.0 + 3 * 7.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35.0 129 : 2 * 0.0 + 3 * 6.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35.0 130 : 2 * 0.0 + 3 * 6.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35.0 131 : 2 * 0.0 + 3 * 5.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35.0 132 : 2 * 0.0 + 3 * 5.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35.0 133 : 2 * 0.0 + 3 * 4.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35.0 134 : 2 * 0.0 + 3 * 4.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35.0 135 : 2 * 0.0 + 3 * 3.0 + 5 * 4.0 + 6 * 1.0 + 7 * 0.0 = 35.0 136 : 2 * 0.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 + 7 * 3.0 = 35.0 137 : 2 * 0.0 + 3 * 3.0 + 5 * 0.0 + 6 * 2.0 + 7 * 2.0 = 35.0 138 : 2 * 0.0 + 3 * 2.0 + 5 * 3.0 + 6 * 0.0 + 7 * 2.0 = 35.0 139 : 2 * 0.0 + 3 * 2.0 + 5 * 2.0 + 6 * 2.0 + 7 * 1.0 = 35.0 140 : 2 * 0.0 + 3 * 2.0 + 5 * 1.0 + 6 * 4.0 + 7 * 0.0 = 35.0 141 : 2 * 0.0 + 3 * 1.0 + 5 * 5.0 + 6 * 0.0 + 7 * 1.0 = 35.0 142 : 2 * 0.0 + 3 * 1.0 + 5 * 4.0 + 6 * 2.0 + 7 * 0.0 = 35.0 143 : 2 * 0.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 + 7 * 3.0 = 35.0 144 : 2 * 0.0 + 3 * 1.0 + 5 * 0.0 + 6 * 3.0 + 7 * 2.0 = 35.0 145 : 2 * 0.0 + 3 * 0.0 + 5 * 7.0 + 6 * 0.0 + 7 * 0.0 = 35.0 146 : 2 * 0.0 + 3 * 0.0 + 5 * 3.0 + 6 * 1.0 + 7 * 2.0 = 35.0 147 : 2 * 0.0 + 3 * 0.0 + 5 * 2.0 + 6 * 3.0 + 7 * 1.0 = 35.0 148 : 2 * 0.0 + 3 * 0.0 + 5 * 1.0 + 6 * 5.0 + 7 * 0.0 = 35.0 149 : 2 * 0.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 5.0 = 35.0 diophantine_nd_positive_test(): diophantine_nd_positive() returns the positive solutions of a Diophantine equation in N variables. 2 * x 1 + 3 * x 2 = 18 2 solutions found. 0 : 2 * 6.0 + 3 * 2.0 = 18.0 1 : 2 * 3.0 + 3 * 4.0 = 18.0 6 * x 1 + 3 * x 2 + 13 * x 3 = 16 0 solutions found. 12 * x 1 + 9 * x 2 + 7 * x 3 = 60 1 solutions found. 0 : 12 * 1.0 + 9 * 3.0 + 7 * 3.0 = 60.0 2 * x 1 + 3 * x 2 + 5 * x 3 + 6 * x 4 = 24 4 solutions found. 0 : 2 * 5.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 = 24.0 1 : 2 * 2.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 = 24.0 2 : 2 * 2.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 = 24.0 3 : 2 * 1.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 = 24.0 2 * x 1 + 3 * x 2 + 5 * x 3 + 6 * x 4 + 7 * x 5 = 35 10 solutions found. 0 : 2 * 7.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 1 : 2 * 4.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 2 : 2 * 4.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35.0 3 : 2 * 3.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35.0 4 : 2 * 2.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35.0 5 : 2 * 2.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 + 7 * 1.0 = 35.0 6 : 2 * 1.0 + 3 * 5.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35.0 7 : 2 * 1.0 + 3 * 3.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35.0 8 : 2 * 1.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 2.0 = 35.0 9 : 2 * 1.0 + 3 * 1.0 + 5 * 1.0 + 6 * 3.0 + 7 * 1.0 = 35.0 pv_search_test(): pv_search() applies parity arguments to potential solutions of a polyomino tiling problem. Example 6 parities = [0,1] orders = [4,3] p = 9 c = 41 2 trivial parity violations were found: 0 : [8.0,3.0 ] 1 : [5.0,7.0 ] 0 strong parity violations were found: Example 8 parities = [0,2,3,5] orders = [2,4,5,9] p = 0 c = 156 0 trivial parity violations were found: 15 strong parity violations were found: 0 : [67.0,2.0,1.0,1.0 ] 1 : [62.0,1.0,2.0,2.0 ] 2 : [58.0,2.0,1.0,3.0 ] 3 : [53.0,1.0,2.0,4.0 ] 4 : [49.0,2.0,1.0,5.0 ] 5 : [44.0,1.0,2.0,6.0 ] 6 : [40.0,2.0,1.0,7.0 ] 7 : [35.0,1.0,2.0,8.0 ] 8 : [31.0,2.0,1.0,9.0 ] 9 : [26.0,1.0,2.0,10.0 ] 10 : [22.0,2.0,1.0,11.0 ] 11 : [17.0,1.0,2.0,12.0 ] 12 : [13.0,2.0,1.0,13.0 ] 13 : [8.0,1.0,2.0,14.0 ] 14 : [4.0,2.0,1.0,15.0 ] Example 9 parities = [0,1,2,5] orders = [4,3,6,13] p = 0 c = 320 0 trivial parity violations were found: 6 strong parity violations were found: 0 : [68.0,1.0,1.0,3.0 ] 1 : [55.0,1.0,1.0,7.0 ] 2 : [42.0,1.0,1.0,11.0 ] 3 : [29.0,1.0,1.0,15.0 ] 4 : [16.0,1.0,1.0,19.0 ] 5 : [3.0,1.0,1.0,23.0 ] sumallsteps_test: sumallsteps() finds all possible sums, of the form S = Ai + N * ( +/- Q ) where: Ai is any single entry of the vector A N counts the number of +/- Q values to be added. Q is the magnitude of the increments or steps. For this example: A = [ 1, 2 ] N = 8 Q = 2 18 distinct sums were found: 0: -15 1: -14 2: -11 3: -10 4: -7 5: -6 6: -3 7: -2 8: 1 9: 2 10: 5 11: 6 12: 9 13: 10 14: 13 15: 14 16: 17 17: 18 polyomino_parity_test(): Normal end of execution. Wed Oct 8 08:47:21 2025