Tue Oct 19 17:00:32 2021 polyomino_parity_test(): Python version: 3.6.9 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 1 : 2 * 6.0 + 3 * 2.0 = 18 2 : 2 * 3.0 + 3 * 4.0 = 18 3 : 2 * 0.0 + 3 * 6.0 = 18 6 * x 1 + 3 * x 2 + 13 * x 3 = 16 1 solutions found. 0 : 6 * 0.0 + 3 * 1.0 + 13 * 1.0 = 16 12 * x 1 + 9 * x 2 + 7 * x 3 = 60 4 solutions found. 0 : 12 * 5.0 + 9 * 0.0 + 7 * 0.0 = 60 1 : 12 * 2.0 + 9 * 4.0 + 7 * 0.0 = 60 2 : 12 * 1.0 + 9 * 3.0 + 7 * 3.0 = 60 3 : 12 * 0.0 + 9 * 2.0 + 7 * 6.0 = 60 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 1 : 2 * 9.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 = 24 2 : 2 * 9.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 = 24 3 : 2 * 8.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 = 24 4 : 2 * 7.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 = 24 5 : 2 * 6.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 = 24 6 : 2 * 6.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 = 24 7 : 2 * 6.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 = 24 8 : 2 * 5.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 = 24 9 : 2 * 5.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 = 24 10 : 2 * 4.0 + 3 * 2.0 + 5 * 2.0 + 6 * 0.0 = 24 11 : 2 * 4.0 + 3 * 0.0 + 5 * 2.0 + 6 * 1.0 = 24 12 : 2 * 3.0 + 3 * 6.0 + 5 * 0.0 + 6 * 0.0 = 24 13 : 2 * 3.0 + 3 * 4.0 + 5 * 0.0 + 6 * 1.0 = 24 14 : 2 * 3.0 + 3 * 2.0 + 5 * 0.0 + 6 * 2.0 = 24 15 : 2 * 3.0 + 3 * 1.0 + 5 * 3.0 + 6 * 0.0 = 24 16 : 2 * 3.0 + 3 * 0.0 + 5 * 0.0 + 6 * 3.0 = 24 17 : 2 * 2.0 + 3 * 5.0 + 5 * 1.0 + 6 * 0.0 = 24 18 : 2 * 2.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 = 24 19 : 2 * 2.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 = 24 20 : 2 * 2.0 + 3 * 0.0 + 5 * 4.0 + 6 * 0.0 = 24 21 : 2 * 1.0 + 3 * 4.0 + 5 * 2.0 + 6 * 0.0 = 24 22 : 2 * 1.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 = 24 23 : 2 * 1.0 + 3 * 0.0 + 5 * 2.0 + 6 * 2.0 = 24 24 : 2 * 0.0 + 3 * 8.0 + 5 * 0.0 + 6 * 0.0 = 24 25 : 2 * 0.0 + 3 * 6.0 + 5 * 0.0 + 6 * 1.0 = 24 26 : 2 * 0.0 + 3 * 4.0 + 5 * 0.0 + 6 * 2.0 = 24 27 : 2 * 0.0 + 3 * 3.0 + 5 * 3.0 + 6 * 0.0 = 24 28 : 2 * 0.0 + 3 * 2.0 + 5 * 0.0 + 6 * 3.0 = 24 29 : 2 * 0.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 = 24 30 : 2 * 0.0 + 3 * 0.0 + 5 * 0.0 + 6 * 4.0 = 24 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 1 : 2 * 15.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 2 : 2 * 14.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35 3 : 2 * 13.0 + 3 * 3.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35 4 : 2 * 13.0 + 3 * 1.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35 5 : 2 * 12.0 + 3 * 2.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 6 : 2 * 12.0 + 3 * 0.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35 7 : 2 * 11.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35 8 : 2 * 11.0 + 3 * 1.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35 9 : 2 * 11.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35 10 : 2 * 10.0 + 3 * 5.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35 11 : 2 * 10.0 + 3 * 3.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35 12 : 2 * 10.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35 13 : 2 * 10.0 + 3 * 1.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35 14 : 2 * 10.0 + 3 * 0.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35 15 : 2 * 9.0 + 3 * 4.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 16 : 2 * 9.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35 17 : 2 * 9.0 + 3 * 1.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35 18 : 2 * 9.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35 19 : 2 * 9.0 + 3 * 0.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35 20 : 2 * 8.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35 21 : 2 * 8.0 + 3 * 3.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35 22 : 2 * 8.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35 23 : 2 * 8.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35 24 : 2 * 8.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35 25 : 2 * 8.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35 26 : 2 * 7.0 + 3 * 7.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35 27 : 2 * 7.0 + 3 * 5.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35 28 : 2 * 7.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35 29 : 2 * 7.0 + 3 * 3.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35 30 : 2 * 7.0 + 3 * 2.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35 31 : 2 * 7.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35 32 : 2 * 7.0 + 3 * 1.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35 33 : 2 * 7.0 + 3 * 0.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35 34 : 2 * 7.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35 35 : 2 * 6.0 + 3 * 6.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 36 : 2 * 6.0 + 3 * 4.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35 37 : 2 * 6.0 + 3 * 3.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35 38 : 2 * 6.0 + 3 * 2.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35 39 : 2 * 6.0 + 3 * 2.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35 40 : 2 * 6.0 + 3 * 1.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35 41 : 2 * 6.0 + 3 * 1.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35 42 : 2 * 6.0 + 3 * 0.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35 43 : 2 * 6.0 + 3 * 0.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35 44 : 2 * 5.0 + 3 * 6.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35 45 : 2 * 5.0 + 3 * 5.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35 46 : 2 * 5.0 + 3 * 4.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35 47 : 2 * 5.0 + 3 * 3.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35 48 : 2 * 5.0 + 3 * 2.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35 49 : 2 * 5.0 + 3 * 2.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35 50 : 2 * 5.0 + 3 * 1.0 + 5 * 3.0 + 6 * 0.0 + 7 * 1.0 = 35 51 : 2 * 5.0 + 3 * 1.0 + 5 * 2.0 + 6 * 2.0 + 7 * 0.0 = 35 52 : 2 * 5.0 + 3 * 0.0 + 5 * 5.0 + 6 * 0.0 + 7 * 0.0 = 35 53 : 2 * 5.0 + 3 * 0.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35 54 : 2 * 5.0 + 3 * 0.0 + 5 * 0.0 + 6 * 3.0 + 7 * 1.0 = 35 55 : 2 * 4.0 + 3 * 9.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35 56 : 2 * 4.0 + 3 * 7.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35 57 : 2 * 4.0 + 3 * 5.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35 58 : 2 * 4.0 + 3 * 5.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35 59 : 2 * 4.0 + 3 * 4.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35 60 : 2 * 4.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35 61 : 2 * 4.0 + 3 * 3.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35 62 : 2 * 4.0 + 3 * 2.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35 63 : 2 * 4.0 + 3 * 2.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35 64 : 2 * 4.0 + 3 * 1.0 + 5 * 2.0 + 6 * 0.0 + 7 * 2.0 = 35 65 : 2 * 4.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35 66 : 2 * 4.0 + 3 * 1.0 + 5 * 0.0 + 6 * 4.0 + 7 * 0.0 = 35 67 : 2 * 4.0 + 3 * 0.0 + 5 * 4.0 + 6 * 0.0 + 7 * 1.0 = 35 68 : 2 * 4.0 + 3 * 0.0 + 5 * 3.0 + 6 * 2.0 + 7 * 0.0 = 35 69 : 2 * 4.0 + 3 * 0.0 + 5 * 0.0 + 6 * 1.0 + 7 * 3.0 = 35 70 : 2 * 3.0 + 3 * 8.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 71 : 2 * 3.0 + 3 * 6.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35 72 : 2 * 3.0 + 3 * 5.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35 73 : 2 * 3.0 + 3 * 4.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35 74 : 2 * 3.0 + 3 * 4.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35 75 : 2 * 3.0 + 3 * 3.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35 76 : 2 * 3.0 + 3 * 3.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35 77 : 2 * 3.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35 78 : 2 * 3.0 + 3 * 2.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35 79 : 2 * 3.0 + 3 * 1.0 + 5 * 4.0 + 6 * 1.0 + 7 * 0.0 = 35 80 : 2 * 3.0 + 3 * 1.0 + 5 * 1.0 + 6 * 0.0 + 7 * 3.0 = 35 81 : 2 * 3.0 + 3 * 1.0 + 5 * 0.0 + 6 * 2.0 + 7 * 2.0 = 35 82 : 2 * 3.0 + 3 * 0.0 + 5 * 3.0 + 6 * 0.0 + 7 * 2.0 = 35 83 : 2 * 3.0 + 3 * 0.0 + 5 * 2.0 + 6 * 2.0 + 7 * 1.0 = 35 84 : 2 * 3.0 + 3 * 0.0 + 5 * 1.0 + 6 * 4.0 + 7 * 0.0 = 35 85 : 2 * 2.0 + 3 * 8.0 + 5 * 0.0 + 6 * 0.0 + 7 * 1.0 = 35 86 : 2 * 2.0 + 3 * 7.0 + 5 * 2.0 + 6 * 0.0 + 7 * 0.0 = 35 87 : 2 * 2.0 + 3 * 6.0 + 5 * 0.0 + 6 * 1.0 + 7 * 1.0 = 35 88 : 2 * 2.0 + 3 * 5.0 + 5 * 2.0 + 6 * 1.0 + 7 * 0.0 = 35 89 : 2 * 2.0 + 3 * 4.0 + 5 * 1.0 + 6 * 0.0 + 7 * 2.0 = 35 90 : 2 * 2.0 + 3 * 4.0 + 5 * 0.0 + 6 * 2.0 + 7 * 1.0 = 35 91 : 2 * 2.0 + 3 * 3.0 + 5 * 3.0 + 6 * 0.0 + 7 * 1.0 = 35 92 : 2 * 2.0 + 3 * 3.0 + 5 * 2.0 + 6 * 2.0 + 7 * 0.0 = 35 93 : 2 * 2.0 + 3 * 2.0 + 5 * 5.0 + 6 * 0.0 + 7 * 0.0 = 35 94 : 2 * 2.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35 95 : 2 * 2.0 + 3 * 2.0 + 5 * 0.0 + 6 * 3.0 + 7 * 1.0 = 35 96 : 2 * 2.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 + 7 * 1.0 = 35 97 : 2 * 2.0 + 3 * 1.0 + 5 * 2.0 + 6 * 3.0 + 7 * 0.0 = 35 98 : 2 * 2.0 + 3 * 1.0 + 5 * 0.0 + 6 * 0.0 + 7 * 4.0 = 35 99 : 2 * 2.0 + 3 * 0.0 + 5 * 5.0 + 6 * 1.0 + 7 * 0.0 = 35 100 : 2 * 2.0 + 3 * 0.0 + 5 * 2.0 + 6 * 0.0 + 7 * 3.0 = 35 101 : 2 * 2.0 + 3 * 0.0 + 5 * 1.0 + 6 * 2.0 + 7 * 2.0 = 35 102 : 2 * 2.0 + 3 * 0.0 + 5 * 0.0 + 6 * 4.0 + 7 * 1.0 = 35 103 : 2 * 1.0 + 3 * 11.0 + 5 * 0.0 + 6 * 0.0 + 7 * 0.0 = 35 104 : 2 * 1.0 + 3 * 9.0 + 5 * 0.0 + 6 * 1.0 + 7 * 0.0 = 35 105 : 2 * 1.0 + 3 * 7.0 + 5 * 1.0 + 6 * 0.0 + 7 * 1.0 = 35 106 : 2 * 1.0 + 3 * 7.0 + 5 * 0.0 + 6 * 2.0 + 7 * 0.0 = 35 107 : 2 * 1.0 + 3 * 6.0 + 5 * 3.0 + 6 * 0.0 + 7 * 0.0 = 35 108 : 2 * 1.0 + 3 * 5.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35 109 : 2 * 1.0 + 3 * 5.0 + 5 * 0.0 + 6 * 3.0 + 7 * 0.0 = 35 110 : 2 * 1.0 + 3 * 4.0 + 5 * 3.0 + 6 * 1.0 + 7 * 0.0 = 35 111 : 2 * 1.0 + 3 * 4.0 + 5 * 0.0 + 6 * 0.0 + 7 * 3.0 = 35 112 : 2 * 1.0 + 3 * 3.0 + 5 * 2.0 + 6 * 0.0 + 7 * 2.0 = 35 113 : 2 * 1.0 + 3 * 3.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35 114 : 2 * 1.0 + 3 * 3.0 + 5 * 0.0 + 6 * 4.0 + 7 * 0.0 = 35 115 : 2 * 1.0 + 3 * 2.0 + 5 * 4.0 + 6 * 0.0 + 7 * 1.0 = 35 116 : 2 * 1.0 + 3 * 2.0 + 5 * 3.0 + 6 * 2.0 + 7 * 0.0 = 35 117 : 2 * 1.0 + 3 * 2.0 + 5 * 0.0 + 6 * 1.0 + 7 * 3.0 = 35 118 : 2 * 1.0 + 3 * 1.0 + 5 * 6.0 + 6 * 0.0 + 7 * 0.0 = 35 119 : 2 * 1.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 2.0 = 35 120 : 2 * 1.0 + 3 * 1.0 + 5 * 1.0 + 6 * 3.0 + 7 * 1.0 = 35 121 : 2 * 1.0 + 3 * 1.0 + 5 * 0.0 + 6 * 5.0 + 7 * 0.0 = 35 122 : 2 * 1.0 + 3 * 0.0 + 5 * 4.0 + 6 * 1.0 + 7 * 1.0 = 35 123 : 2 * 1.0 + 3 * 0.0 + 5 * 3.0 + 6 * 3.0 + 7 * 0.0 = 35 124 : 2 * 1.0 + 3 * 0.0 + 5 * 1.0 + 6 * 0.0 + 7 * 4.0 = 35 125 : 2 * 1.0 + 3 * 0.0 + 5 * 0.0 + 6 * 2.0 + 7 * 3.0 = 35 126 : 2 * 0.0 + 3 * 10.0 + 5 * 1.0 + 6 * 0.0 + 7 * 0.0 = 35 127 : 2 * 0.0 + 3 * 8.0 + 5 * 1.0 + 6 * 1.0 + 7 * 0.0 = 35 128 : 2 * 0.0 + 3 * 7.0 + 5 * 0.0 + 6 * 0.0 + 7 * 2.0 = 35 129 : 2 * 0.0 + 3 * 6.0 + 5 * 2.0 + 6 * 0.0 + 7 * 1.0 = 35 130 : 2 * 0.0 + 3 * 6.0 + 5 * 1.0 + 6 * 2.0 + 7 * 0.0 = 35 131 : 2 * 0.0 + 3 * 5.0 + 5 * 4.0 + 6 * 0.0 + 7 * 0.0 = 35 132 : 2 * 0.0 + 3 * 5.0 + 5 * 0.0 + 6 * 1.0 + 7 * 2.0 = 35 133 : 2 * 0.0 + 3 * 4.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35 134 : 2 * 0.0 + 3 * 4.0 + 5 * 1.0 + 6 * 3.0 + 7 * 0.0 = 35 135 : 2 * 0.0 + 3 * 3.0 + 5 * 4.0 + 6 * 1.0 + 7 * 0.0 = 35 136 : 2 * 0.0 + 3 * 3.0 + 5 * 1.0 + 6 * 0.0 + 7 * 3.0 = 35 137 : 2 * 0.0 + 3 * 3.0 + 5 * 0.0 + 6 * 2.0 + 7 * 2.0 = 35 138 : 2 * 0.0 + 3 * 2.0 + 5 * 3.0 + 6 * 0.0 + 7 * 2.0 = 35 139 : 2 * 0.0 + 3 * 2.0 + 5 * 2.0 + 6 * 2.0 + 7 * 1.0 = 35 140 : 2 * 0.0 + 3 * 2.0 + 5 * 1.0 + 6 * 4.0 + 7 * 0.0 = 35 141 : 2 * 0.0 + 3 * 1.0 + 5 * 5.0 + 6 * 0.0 + 7 * 1.0 = 35 142 : 2 * 0.0 + 3 * 1.0 + 5 * 4.0 + 6 * 2.0 + 7 * 0.0 = 35 143 : 2 * 0.0 + 3 * 1.0 + 5 * 1.0 + 6 * 1.0 + 7 * 3.0 = 35 144 : 2 * 0.0 + 3 * 1.0 + 5 * 0.0 + 6 * 3.0 + 7 * 2.0 = 35 145 : 2 * 0.0 + 3 * 0.0 + 5 * 7.0 + 6 * 0.0 + 7 * 0.0 = 35 146 : 2 * 0.0 + 3 * 0.0 + 5 * 3.0 + 6 * 1.0 + 7 * 2.0 = 35 147 : 2 * 0.0 + 3 * 0.0 + 5 * 2.0 + 6 * 3.0 + 7 * 1.0 = 35 148 : 2 * 0.0 + 3 * 0.0 + 5 * 1.0 + 6 * 5.0 + 7 * 0.0 = 35 149 : 2 * 0.0 + 3 * 0.0 + 5 * 0.0 + 6 * 0.0 + 7 * 5.0 = 35 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 1 : 2 * 3.0 + 3 * 4.0 = 18 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 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 1 : 2 * 2.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 = 24 2 : 2 * 2.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 = 24 3 : 2 * 1.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 = 24 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 1 : 2 * 4.0 + 3 * 3.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35 2 : 2 * 4.0 + 3 * 1.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35 3 : 2 * 3.0 + 3 * 2.0 + 5 * 2.0 + 6 * 1.0 + 7 * 1.0 = 35 4 : 2 * 2.0 + 3 * 2.0 + 5 * 1.0 + 6 * 1.0 + 7 * 2.0 = 35 5 : 2 * 2.0 + 3 * 1.0 + 5 * 3.0 + 6 * 1.0 + 7 * 1.0 = 35 6 : 2 * 1.0 + 3 * 5.0 + 5 * 1.0 + 6 * 1.0 + 7 * 1.0 = 35 7 : 2 * 1.0 + 3 * 3.0 + 5 * 1.0 + 6 * 2.0 + 7 * 1.0 = 35 8 : 2 * 1.0 + 3 * 1.0 + 5 * 2.0 + 6 * 1.0 + 7 * 2.0 = 35 9 : 2 * 1.0 + 3 * 1.0 + 5 * 1.0 + 6 * 3.0 + 7 * 1.0 = 35 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 ] pv_search_test: Normal end of execution. 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. Tue Oct 19 17:01:26 2021