mapFolding 0.17.1__py3-none-any.whl → 0.18.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. easyRun/NOTcountingFolds.py +7 -11
  2. easyRun/countFolds.py +11 -10
  3. easyRun/meanders.py +6 -8
  4. mapFolding/__init__.py +24 -36
  5. mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_hypothesis.py +189 -0
  6. mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_p2d6.py +143 -0
  7. mapFolding/_e/Z0Z_analysisPython/__init__.py +4 -0
  8. mapFolding/_e/Z0Z_analysisPython/exclusionData/__init__.py +0 -0
  9. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200.py +369 -0
  10. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2001.py +694 -0
  11. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/211.py +514 -0
  12. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/2111.py +480 -0
  13. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214.py +511 -0
  14. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/2141.py +515 -0
  15. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/211.py +485 -0
  16. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/2111.py +442 -0
  17. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/211.py +313 -0
  18. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2111.py +343 -0
  19. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214.py +400 -0
  20. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/2141.py +497 -0
  21. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/211.py +463 -0
  22. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/2111.py +441 -0
  23. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266.py +35 -0
  24. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/2661.py +35 -0
  25. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200.py +382 -0
  26. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2001.py +630 -0
  27. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/211.py +488 -0
  28. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/2111.py +475 -0
  29. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214.py +473 -0
  30. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/2141.py +500 -0
  31. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +465 -0
  32. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +439 -0
  33. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/211.py +599 -0
  34. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2111.py +536 -0
  35. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214.py +506 -0
  36. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/2141.py +533 -0
  37. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/211.py +489 -0
  38. mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/2111.py +474 -0
  39. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200.py +1186 -0
  40. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001.py +2158 -0
  41. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001Negative.py +2158 -0
  42. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200Negative.py +1186 -0
  43. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211.py +1397 -0
  44. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111.py +1291 -0
  45. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111Negative.py +1291 -0
  46. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211Negative.py +1397 -0
  47. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214.py +1240 -0
  48. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141.py +1420 -0
  49. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141Negative.py +1420 -0
  50. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214Negative.py +1240 -0
  51. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211.py +1366 -0
  52. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111.py +1274 -0
  53. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +1274 -0
  54. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +1366 -0
  55. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211.py +1186 -0
  56. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111.py +1186 -0
  57. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111Negative.py +1186 -0
  58. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211Negative.py +1186 -0
  59. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214.py +1102 -0
  60. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141.py +1422 -0
  61. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141Negative.py +1422 -0
  62. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214Negative.py +1102 -0
  63. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211.py +1240 -0
  64. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111.py +1228 -0
  65. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111Negative.py +1228 -0
  66. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211Negative.py +1240 -0
  67. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266.py +32 -0
  68. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661.py +1162 -0
  69. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661Negative.py +1162 -0
  70. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266Negative.py +32 -0
  71. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200.py +1186 -0
  72. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001.py +1926 -0
  73. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001Negative.py +1926 -0
  74. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200Negative.py +1186 -0
  75. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211.py +1291 -0
  76. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111.py +1176 -0
  77. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +1176 -0
  78. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +1291 -0
  79. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214.py +1228 -0
  80. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141.py +1324 -0
  81. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +1324 -0
  82. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +1228 -0
  83. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +1274 -0
  84. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +1038 -0
  85. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +1038 -0
  86. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +1274 -0
  87. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211.py +2158 -0
  88. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111.py +1926 -0
  89. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111Negative.py +1926 -0
  90. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211Negative.py +2158 -0
  91. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214.py +1422 -0
  92. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141.py +1364 -0
  93. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141Negative.py +1364 -0
  94. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214Negative.py +1422 -0
  95. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211.py +1420 -0
  96. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111.py +1324 -0
  97. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +1324 -0
  98. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +1420 -0
  99. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200.py +3133 -0
  100. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001.py +6039 -0
  101. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001Negative.py +6039 -0
  102. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200Negative.py +3133 -0
  103. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211.py +3527 -0
  104. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111.py +2300 -0
  105. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111Negative.py +2300 -0
  106. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211Negative.py +3527 -0
  107. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214.py +3597 -0
  108. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141.py +3317 -0
  109. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141Negative.py +3317 -0
  110. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214Negative.py +3597 -0
  111. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211.py +3161 -0
  112. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111.py +2877 -0
  113. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +2877 -0
  114. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +3161 -0
  115. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211.py +2981 -0
  116. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111.py +3055 -0
  117. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111Negative.py +3055 -0
  118. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211Negative.py +2981 -0
  119. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214.py +3221 -0
  120. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141.py +3988 -0
  121. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141Negative.py +3988 -0
  122. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214Negative.py +3221 -0
  123. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211.py +3652 -0
  124. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111.py +2863 -0
  125. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111Negative.py +2863 -0
  126. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211Negative.py +3652 -0
  127. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200.py +2485 -0
  128. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001.py +4566 -0
  129. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001Negative.py +4566 -0
  130. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200Negative.py +2485 -0
  131. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211.py +3006 -0
  132. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111.py +2485 -0
  133. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +2485 -0
  134. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +3006 -0
  135. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214.py +3304 -0
  136. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141.py +3015 -0
  137. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +3015 -0
  138. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +3304 -0
  139. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +2939 -0
  140. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +2589 -0
  141. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +2589 -0
  142. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +2939 -0
  143. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211.py +3899 -0
  144. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111.py +2996 -0
  145. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111Negative.py +2996 -0
  146. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211Negative.py +3899 -0
  147. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214.py +3223 -0
  148. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141.py +3020 -0
  149. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141Negative.py +3020 -0
  150. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214Negative.py +3223 -0
  151. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211.py +3250 -0
  152. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111.py +2667 -0
  153. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +2667 -0
  154. mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +3250 -0
  155. mapFolding/_e/Z0Z_analysisPython/measure.py +162 -0
  156. mapFolding/_e/Z0Z_analysisPython/positionAnalysis.py +403 -0
  157. mapFolding/_e/Z0Z_analysisPython/positionAnalysisPileRanges2d6.py +110 -0
  158. mapFolding/_e/Z0Z_analysisPython/theExcluderBeast.py +640 -0
  159. mapFolding/_e/Z0Z_analysisPython/toolkit.py +166 -0
  160. mapFolding/_e/Z0Z_analysisPython/toolkitCSVsequences.py +188 -0
  161. mapFolding/_e/Z0Z_analysisPython/workBenchPatternFinder.py +284 -0
  162. mapFolding/_e/Z0Z_notes/__init__.py +0 -0
  163. mapFolding/_e/Z0Z_notes/knowledgeDump.py +214 -0
  164. mapFolding/_e/__init__.py +45 -0
  165. mapFolding/_e/_beDRY.py +547 -0
  166. mapFolding/_e/_dataDynamic.py +1164 -0
  167. mapFolding/_e/_measure.py +579 -0
  168. mapFolding/_e/_semiotics.py +363 -0
  169. mapFolding/_e/_theTypes.py +31 -0
  170. mapFolding/_e/algorithms/__init__.py +1 -0
  171. mapFolding/_e/algorithms/constraintPropagation.py +158 -0
  172. mapFolding/_e/algorithms/elimination.py +118 -0
  173. mapFolding/_e/algorithms/eliminationCrease.py +66 -0
  174. mapFolding/_e/algorithms/iff.py +584 -0
  175. mapFolding/_e/basecamp.py +89 -0
  176. mapFolding/_e/dataBaskets.py +123 -0
  177. mapFolding/_e/dataRaw/__init__.py +0 -0
  178. mapFolding/_e/easyRun/__init__.py +0 -0
  179. mapFolding/_e/easyRun/eliminateFolds.py +72 -0
  180. mapFolding/_e/easyRun/pinning.py +62 -0
  181. mapFolding/_e/filters.py +384 -0
  182. mapFolding/_e/pin2/344/270/212nDimensions.py +882 -0
  183. mapFolding/_e/pin2/344/270/212nDimensionsAnnex.py +551 -0
  184. mapFolding/_e/pin2/344/270/212nDimensionsByCrease.py +190 -0
  185. mapFolding/_e/pin2/344/270/212nDimensionsByDomain.py +459 -0
  186. mapFolding/_e/pinIt.py +436 -0
  187. mapFolding/_semiotics.py +42 -0
  188. mapFolding/_theSSOT.py +11 -56
  189. mapFolding/_theTypes.py +52 -67
  190. mapFolding/algorithms/matrixMeandersNumPyndas.py +18 -18
  191. mapFolding/algorithms/oeisIDbyFormula.py +4 -4
  192. mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py +3 -3
  193. mapFolding/basecamp.py +11 -80
  194. mapFolding/beDRY.py +107 -111
  195. mapFolding/dataBaskets.py +0 -56
  196. mapFolding/filesystemToolkit.py +15 -11
  197. mapFolding/oeis.py +17 -16
  198. mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py +2 -2
  199. mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py +0 -1
  200. mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py +8 -10
  201. mapFolding/someAssemblyRequired/RecipeJob.py +5 -5
  202. mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +5 -2
  203. mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +9 -11
  204. mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py +2 -1
  205. mapFolding/someAssemblyRequired/transformationTools.py +1 -1
  206. mapFolding/tests/Z0Z_test_e_excluder.py +155 -0
  207. mapFolding/tests/conftest.py +193 -314
  208. mapFolding/tests/dataSamples/A001417.py +455 -0
  209. mapFolding/tests/dataSamples/__init__.py +1 -0
  210. mapFolding/tests/dataSamples/measurementData.py +1818 -0
  211. mapFolding/tests/dataSamples/p2DnDomain3_2_/351/246/226/344/270/200_/351/246/226/351/233/266/344/270/200.py +17 -0
  212. mapFolding/tests/dataSamples/p2DnDomain3_/351/246/226/344/270/200.py +17 -0
  213. mapFolding/tests/dataSamples/p2DnDomain5_4.py +17 -0
  214. mapFolding/tests/dataSamples/p2DnDomain6_5.py +17 -0
  215. mapFolding/tests/dataSamples/p2DnDomain6_7_5_4.py +17 -0
  216. mapFolding/tests/dataSamples/p2DnDomain7_6.py +17 -0
  217. mapFolding/tests/dataSamples/p2DnDomain/351/246/226/344/272/214_/351/246/226/351/233/266/344/270/200/344/272/214.py +17 -0
  218. mapFolding/tests/dataSamples/p2DnDomain/351/246/226/344/272/214_/351/246/226/351/233/266/344/272/214_/351/246/226/351/233/266/344/270/200/344/272/214_/351/246/226/344/270/200/344/272/214.py +17 -0
  219. mapFolding/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/270/200/344/272/214_/351/246/226/344/270/200/344/272/214.py +15 -0
  220. mapFolding/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/272/214_/351/246/226/344/272/214.py +15 -0
  221. mapFolding/tests/dataSamples/semioticsData.py +135 -0
  222. mapFolding/tests/test_computations.py +134 -80
  223. mapFolding/tests/test_e_computations.py +42 -0
  224. mapFolding/tests/test_e_dataDynamic.py +189 -0
  225. mapFolding/tests/test_e_measurements.py +257 -0
  226. mapFolding/tests/test_e_pinning.py +61 -0
  227. mapFolding/tests/test_e_semiotics.py +128 -0
  228. mapFolding/tests/test_filesystem.py +39 -17
  229. mapFolding/tests/{test_other.py → test_parameterValidation.py} +3 -3
  230. mapFolding/tests/{test_tasks.py → test_taskDivisions.py} +42 -23
  231. mapFolding/zCuzDocStoopid/makeDocstrings.py +3 -2
  232. {mapfolding-0.17.1.dist-info → mapfolding-0.18.0.dist-info}/METADATA +11 -8
  233. mapfolding-0.18.0.dist-info/RECORD +305 -0
  234. {mapfolding-0.17.1.dist-info → mapfolding-0.18.0.dist-info}/WHEEL +1 -1
  235. easyRun/eliminateFolds.py +0 -60
  236. mapFolding/algorithms/constraintPropagation.py +0 -184
  237. mapFolding/algorithms/elimination.py +0 -131
  238. mapFolding/algorithms/eliminationCount.py +0 -26
  239. mapFolding/algorithms/eliminationPinned.py +0 -35
  240. mapFolding/algorithms/iff.py +0 -206
  241. mapFolding/algorithms/patternFinder.py +0 -280
  242. mapFolding/algorithms/pinning2Dn.py +0 -345
  243. mapFolding/algorithms/pinning2DnAnnex.py +0 -43
  244. mapFolding/tests/verify.py +0 -323
  245. mapfolding-0.17.1.dist-info/RECORD +0 -112
  246. {mapfolding-0.17.1.dist-info → mapfolding-0.18.0.dist-info}/entry_points.txt +0 -0
  247. {mapfolding-0.17.1.dist-info → mapfolding-0.18.0.dist-info}/licenses/LICENSE +0 -0
  248. {mapfolding-0.17.1.dist-info → mapfolding-0.18.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,190 @@
1
+ from collections.abc import Iterator
2
+ from gmpy2 import bit_flip, is_even as isEven吗, is_odd as isOdd吗
3
+ from hunterMakesPy import raiseIfNone
4
+ from mapFolding import inclusive
5
+ from mapFolding._e import (
6
+ dimensionIndex, dimensionNearestTail, dimensionNearest首, DOTgetPileIfLeaf, getLeavesCreaseAnte, getLeavesCreasePost,
7
+ Leaf, leafInSubHyperplane, ptount, 一, 三, 二, 五, 四, 零, 首一, 首零, 首零一)
8
+ from mapFolding._e.dataBaskets import EliminationState
9
+ from mapFolding._e.filters import exclude
10
+ from operator import add, neg, sub
11
+ from typing import TYPE_CHECKING
12
+
13
+ if TYPE_CHECKING:
14
+ from collections.abc import Callable
15
+
16
+ #======== crease-based subroutines for analyzing a specific `pile`. =======
17
+ def _getLeavesCrease(state: EliminationState, leaf: Leaf) -> tuple[Leaf, ...]:
18
+ if 0 < leaf:
19
+ return tuple(getLeavesCreaseAnte(state, abs(leaf)))
20
+ return tuple(getLeavesCreasePost(state, abs(leaf)))
21
+
22
+ #-------- Depth 2 ------------------------------------
23
+ def pinPile一ByCrease(state: EliminationState) -> Iterator[Leaf]:
24
+ direction: Callable[[int, int], int] = sub
25
+
26
+ listCreaseIndicesExcluded: list[int] = []
27
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
28
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
29
+
30
+ leafAt一Ante首: Leaf | None = DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首)
31
+
32
+ if leafAt一Ante首 and (0 < dimensionNearestTail(leafAt一Ante首)):
33
+ listCreaseIndicesExcluded.extend([*range(dimensionNearestTail(leafAt一Ante首) - 零, state.dimensionsTotal - 一)])
34
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
35
+
36
+ def pinPile一Ante首ByCrease(state: EliminationState) -> Iterator[Leaf]:
37
+ direction: Callable[[int, int], int] = add
38
+
39
+ listCreaseIndicesExcluded: list[int] = []
40
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
41
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
42
+
43
+ leafAt一: Leaf | None = DOTgetPileIfLeaf(state.permutationSpace, 一)
44
+
45
+ if leafAt一 and (leafAt一.bit_length() < state.dimensionsTotal):
46
+ listCreaseIndicesExcluded.extend([*range(零, leafAt一.bit_length())])
47
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
48
+
49
+ #-------- Depth 3 ------------------------------------
50
+ def pinPile一零ByCrease(state: EliminationState) -> Iterator[Leaf]:
51
+ direction: Callable[[int, int], int] = sub
52
+
53
+ listCreaseIndicesExcluded: list[int] = []
54
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
55
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
56
+
57
+ leafAt一: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一))
58
+ leafAt一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首))
59
+
60
+ if 1 < len(tupleLeavesCrease):
61
+ listCreaseIndicesExcluded.append(0)
62
+ if isEven吗(leafAt一Ante首) and (leafAt一 == (零)+首零(state.dimensionsTotal)):
63
+ listCreaseIndicesExcluded.extend([*range(dimensionNearestTail(leafAt一Ante首) + 零, state.dimensionsTotal)])
64
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
65
+
66
+ def pinPile零一Ante首ByCrease(state: EliminationState) -> Iterator[Leaf]:
67
+ direction: Callable[[int, int], int] = add
68
+
69
+ listCreaseIndicesExcluded: list[int] = []
70
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
71
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
72
+
73
+ leafAt一: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一))
74
+ leafAt一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首))
75
+
76
+ if leafAt一Ante首 < 首零一(state.dimensionsTotal):
77
+ listCreaseIndicesExcluded.append(-1)
78
+ if (leafAt一Ante首 == (零)+首零(state.dimensionsTotal)) and (leafAt一 != 一+零):
79
+ listCreaseIndicesExcluded.extend([*range(dimensionNearest首(leafAt一) - 零)])
80
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
81
+
82
+ #-------- Depth 4 ------------------------------------
83
+ def pinPile二ByCrease(state: EliminationState) -> Iterator[Leaf]:
84
+ direction: Callable[[int, int], int] = sub
85
+
86
+ listCreaseIndicesExcluded: list[int] = []
87
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
88
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
89
+
90
+ leafAt一: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一))
91
+ leafAt一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首))
92
+ leafAt一零: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一+零))
93
+ leafAt零一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(零+一)+state.首))
94
+
95
+ if isOdd吗(leafAt一零):
96
+ listCreaseIndicesExcluded.extend([*range(dimensionNearest首(leafAt一零), 5), ptount(leafAt一零)])
97
+ listCreaseIndicesExcluded.append((dimensionIndex(leafInSubHyperplane(leafAt一Ante首)) + 4) % 5)
98
+ if isEven吗(leafAt一零):
99
+ listCreaseIndicesExcluded.extend([*range(state.dimensionsTotal - 3)][(state.dimensionsTotal - 3) - ((state.dimensionsTotal - 2) - leafInSubHyperplane(leafAt零一Ante首 - (leafAt零一Ante首.bit_count() - isEven吗(leafAt零一Ante首))).bit_count()) % (state.dimensionsTotal - 2) - isEven吗(leafAt零一Ante首): None])
100
+ if isEven吗(leafAt一Ante首):
101
+ listCreaseIndicesExcluded.extend([*range(dimensionNearestTail(leafInSubHyperplane(leafAt一Ante首)) - 一, (state.dimensionsTotal - 3))])
102
+ if leafAt一 == (零)+首零(state.dimensionsTotal):
103
+ listCreaseIndicesExcluded.extend([(dimensionIndex(leafInSubHyperplane(leafAt一Ante首)) + 4) % 5, dimensionNearestTail(leafAt零一Ante首) - 1])
104
+ if (零)+首零(state.dimensionsTotal) < leafAt零一Ante首:
105
+ listCreaseIndicesExcluded.extend([*range(int(leafAt零一Ante首 - int(bit_flip(0, dimensionNearest首(leafAt零一Ante首)))).bit_length() - 1, state.dimensionsTotal - 2)])
106
+ if ((0 < leafAt一零 - leafAt一 <= bit_flip(0, state.dimensionsTotal - 4)) and (0 < (leafAt一Ante首 - leafAt一零) <= bit_flip(0, state.dimensionsTotal - 3))):
107
+ listCreaseIndicesExcluded.extend([ptount(leafAt一零), state.dimensionsTotal - 3, state.dimensionsTotal - 4])
108
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
109
+
110
+ def pinPile二Ante首ByCrease(state: EliminationState) -> Iterator[Leaf]:
111
+ direction: Callable[[int, int], int] = add
112
+
113
+ listCreaseIndicesExcluded: list[int] = []
114
+ leafRoot: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, direction(state.pile, 1)), f"I could not find an `int` type `leaf` at {direction(state.pile, 1)}.")
115
+ tupleLeavesCrease: tuple[Leaf, ...] = _getLeavesCrease(state, direction(0, leafRoot))
116
+
117
+ leafAt一: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一))
118
+ leafAt一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首))
119
+ leafAt一零: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一+零))
120
+ leafAt零一Ante首: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(零+一)+state.首))
121
+ leafAt二: Leaf = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 二))
122
+
123
+ addendDimension首零: int = leafAt零一Ante首 - leafAt一Ante首
124
+ addendDimension一零: int = leafAt二 - leafAt一零
125
+ addendDimension一: int = leafAt一零 - leafAt一
126
+ addendDimension零: int = leafAt一 - 零
127
+
128
+ # ruff: noqa: SIM102
129
+
130
+ if ((addendDimension一零 in [一, 二, 三, 四])
131
+ or ((addendDimension一零 == 五) and (addendDimension首零 != 一))
132
+ or (addendDimension一 in [二, 三])
133
+ or ((addendDimension一 == 一) and not (addendDimension零 == addendDimension首零 and addendDimension一零 < 0))
134
+ ):
135
+ if leafAt零一Ante首 == 首一(state.dimensionsTotal):
136
+ if addendDimension零 == 三:
137
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
138
+ if addendDimension零 == 五:
139
+ if addendDimension一 == 二:
140
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
141
+ if addendDimension一 == 三:
142
+ listCreaseIndicesExcluded.append(dimensionIndex(三))
143
+ if addendDimension一零 == 三:
144
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
145
+
146
+ if 0 < (dimensionTail := dimensionNearestTail(leafAt零一Ante首)) < 5:
147
+ listCreaseIndicesExcluded.extend(list(range(dimensionTail % 4)) or [dimensionIndex(一)])
148
+
149
+ if addendDimension首零 == neg(五):
150
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
151
+ if addendDimension首零 == 一:
152
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
153
+ if addendDimension首零 == 四:
154
+ if addendDimension零 == 三:
155
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(一), dimensionIndex(二) + inclusive)])
156
+ if addendDimension一 == 一:
157
+ if addendDimension一零 == 三:
158
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
159
+
160
+ if addendDimension零 == 一:
161
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
162
+ if addendDimension一零 == 三:
163
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(二), dimensionIndex(三) + inclusive)])
164
+ if addendDimension一零 == 四:
165
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(三), dimensionIndex(四) + inclusive)])
166
+ if addendDimension零 == 二:
167
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(一), dimensionIndex(二) + inclusive)])
168
+ if addendDimension零 == 三:
169
+ listCreaseIndicesExcluded.append(dimensionIndex(三))
170
+
171
+ if addendDimension一 == 二:
172
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
173
+ if addendDimension一 == 三:
174
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(一), dimensionIndex(二) + inclusive)])
175
+ if addendDimension一 == 四:
176
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
177
+ if addendDimension一零 == 三:
178
+ listCreaseIndicesExcluded.extend([*range(dimensionIndex(一), dimensionIndex(三) + inclusive)])
179
+
180
+ if addendDimension一零 == 一:
181
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
182
+ if addendDimension一零 == 二:
183
+ listCreaseIndicesExcluded.append(dimensionIndex(二))
184
+ if addendDimension一零 == 三:
185
+ listCreaseIndicesExcluded.append(dimensionIndex(三))
186
+ if addendDimension一零 == 五:
187
+ listCreaseIndicesExcluded.append(dimensionIndex(一))
188
+
189
+ return exclude(tupleLeavesCrease, listCreaseIndicesExcluded)
190
+
@@ -0,0 +1,459 @@
1
+ from gmpy2 import bit_flip, bit_mask, bit_test, is_even, is_odd
2
+ from hunterMakesPy import raiseIfNone
3
+ from mapFolding import decreasing, zeroIndexed
4
+ from mapFolding._e import (
5
+ dimensionIndex, dimensionNearestTail, dimensionNearest首, dimensionsConsecutiveAtTail, dimensionSecondNearest首,
6
+ DOTgetPileIfLeaf, getDictionaryPileRanges, getLeavesCreaseAnte, getLeavesCreasePost,
7
+ getSumsOfProductsOfDimensionsNearest首, howManyDimensionsHaveOddParity, leafInSubHyperplane, ptount, 一, 三, 二, 五, 四, 零,
8
+ 首一, 首一二, 首二, 首零, 首零一, 首零一二)
9
+ from mapFolding._e.dataBaskets import EliminationState
10
+ from mapFolding._e.filters import exclude, notLeafOriginOrLeaf零
11
+ from more_itertools import last
12
+ from operator import getitem, neg
13
+
14
+ #======== Domain-based subroutines for analyzing a specific `pile`. =======
15
+
16
+ def pinPile零Ante首零AfterDepth4(state: EliminationState) -> list[int]:
17
+ """All fourth-order piles must be pinned or you will get an error.
18
+
19
+ Unless I've made a mistake:
20
+
21
+ I have made a rule to exclude a leaf from pile 零Ante首零
22
+ for all piles in the first four orders (pile <= 4 or pile >= 首 - 4),
23
+ for all leaves in each pile's pile-range
24
+ that exclude a leaf from pile 零Ante首零.
25
+
26
+ If I were to figure out the last few cases, it would remove 23 surplus dictionaries.
27
+ 10 of 23 dictionaries
28
+ if leafAt二 == 15:
29
+ listRemoveLeaves.extend([38])
30
+ 2 of 23 dictionaries
31
+ if leafAt二 == 9:
32
+ listRemoveLeaves.extend([19])
33
+ 2 of 23 dictionaries
34
+ listRemoveLeaves.extend([59])
35
+ 3 of 23 dictionaries
36
+ if leafAt二 == 23:
37
+ listRemoveLeaves.extend([50])
38
+ 4 of 23 dictionaries
39
+ if leafAt二 == 29:
40
+ listRemoveLeaves.extend([7])
41
+ 2 of 23 dictionaries
42
+ listRemoveLeaves.extend([35])
43
+
44
+ But I would still have 1312 surplus dictionaries.
45
+
46
+ Therefore, if I continue to pin pile 零Ante首零, I should probably focus on different strategies.
47
+ """
48
+ leafAt一: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 一))
49
+ leafAt一Ante首: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(一)+state.首))
50
+ leafAt一零: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, (一+零)))
51
+ leafAt零一Ante首: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(零+一)+state.首))
52
+ leafAt二: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, 二))
53
+ leafAt二Ante首: int = raiseIfNone(DOTgetPileIfLeaf(state.permutationSpace, neg(二)+state.首))
54
+
55
+ dictionaryPileRanges: dict[int, tuple[int, ...]] = getDictionaryPileRanges(state)
56
+ listRemoveLeaves: list[int] = []
57
+
58
+ #========= use `leafAt一` to exclude a `leaf` from `pile` ===================
59
+
60
+ pileExcluder: int = 一
61
+ for dimension, leaf in enumerate(dictionaryPileRanges[pileExcluder]):
62
+ if leaf == leafAt一:
63
+ if dimension < state.dimensionsTotal - 2:
64
+ listRemoveLeaves.extend([一, 首零(state.dimensionsTotal) + leafAt一])
65
+ if 0 < dimension < state.dimensionsTotal - 2:
66
+ listRemoveLeaves.extend([一 + leafAt一])
67
+ if dimension == 1:
68
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + leafAt一 + 零])
69
+ if dimension == state.dimensionsTotal - 2:
70
+ listRemoveLeaves.extend([首一(state.dimensionsTotal), 首一(state.dimensionsTotal) + leafAt一])
71
+ del pileExcluder
72
+
73
+ #-------- Use information from other piles to select which leaves to exclude. -------
74
+ if leafAt一 == (零)+首零(state.dimensionsTotal):
75
+ listRemoveLeaves.extend([首一(state.dimensionsTotal), leafAt一Ante首 + 零])
76
+ if dimensionNearest首(leafAt一) < state.dimensionsTotal - 3:
77
+ listRemoveLeaves.extend([一, leafAt一Ante首 + 一])
78
+
79
+ #========= use `leafAt一Ante首` to exclude a `leaf` from `pile` ===================
80
+
81
+ pileExcluder = neg(一)+state.首
82
+ for dimension, leaf in enumerate(dictionaryPileRanges[pileExcluder]):
83
+ if leaf == leafAt一Ante首:
84
+ if dimension == 0:
85
+ listRemoveLeaves.extend([一])
86
+ if dimension < state.dimensionsTotal - 2:
87
+ listRemoveLeaves.extend([首一(state.dimensionsTotal) + leafAt一Ante首])
88
+ if 0 < dimension < state.dimensionsTotal - 2:
89
+ listRemoveLeaves.extend([getitem(state.productsOfDimensions, dimension), 首一(state.dimensionsTotal) + leafAt一Ante首 - getitem(state.sumsOfProductsOfDimensions, dimension)])
90
+ if 0 < dimension < state.dimensionsTotal - 3:
91
+ listRemoveLeaves.extend([零 + leafAt一Ante首])
92
+ if 0 < dimension < state.dimensionsTotal - 1:
93
+ listRemoveLeaves.extend([首一(state.dimensionsTotal)])
94
+ del pileExcluder
95
+
96
+ #-------- Use information from other piles to decide whether to exclude some leaves. -------
97
+ if (leafAt一 == (零)+首二(state.dimensionsTotal)) and (leafAt一Ante首 == 首零一(state.dimensionsTotal)):
98
+ listRemoveLeaves.extend([首二(state.dimensionsTotal), 首零一二(state.dimensionsTotal)])
99
+
100
+ #========= use `leafAt一零` to exclude a `leaf` from `pile` ===================
101
+ # NOTE a leaf in pile一零 does not have leafCrease in the pile-range of pile零Ante首零, but `leafInSubHyperplane(leafAt一零)` does
102
+ # have leafCrease in the pile-range of pile零Ante首零. `ptount` uses leafInSubHyperplane. I wrote this code block long before I
103
+ # understood this.
104
+
105
+ # NOTE this section relies on the exclusions in `leafAt一` and `leafAt一Ante首` to exclude some leaves.
106
+
107
+ listRemoveLeaves.extend([leafAt一零])
108
+ if leafAt一零 == 三+二+零:
109
+ listRemoveLeaves.extend([二+一+零, (零+二)+首零(state.dimensionsTotal)])
110
+ if leafAt一零 == (零+二)+首一(state.dimensionsTotal):
111
+ listRemoveLeaves.extend([首二(state.dimensionsTotal), leafAt一零 + getitem(state.productsOfDimensions, raiseIfNone(dimensionSecondNearest首(leafAt一零))), leafAt一零 + getitem(state.sumsOfProductsOfDimensions, raiseIfNone(dimensionSecondNearest首(leafAt一零)) + 1), 首零一二(state.dimensionsTotal)])
112
+ if leafAt一零 == (零)+首一二(state.dimensionsTotal):
113
+ listRemoveLeaves.extend([首一(state.dimensionsTotal)+(一+零), last(getLeavesCreaseAnte(state, leafInSubHyperplane(leafAt一零)))])
114
+ if leafAt一零 == (零)+首零一(state.dimensionsTotal):
115
+ listRemoveLeaves.extend([首零一二(state.dimensionsTotal)])
116
+ if is_odd(leafAt一零):
117
+ dimensionHeadSecond: int = raiseIfNone(dimensionSecondNearest首(leafAt一零))
118
+ indexBy首Second: int = dimensionHeadSecond * decreasing + decreasing # Are you confused and/or annoyed by this? Blame Python. (Or figure out a better formula.)
119
+ listRemoveLeaves.extend([getitem(state.productsOfDimensions, dimensionHeadSecond)])
120
+ if leafAt一零 < 首零(state.dimensionsTotal):
121
+ sumsOfProductsOfDimensionsNearest首InSubHyperplane: tuple[int, ...] = getSumsOfProductsOfDimensionsNearest首(state.productsOfDimensions, state.dimensionsTotal, state.dimensionsTotal - 1)
122
+ listRemoveLeaves.extend([一, leafAt一零 + getitem(state.sumsOfProductsOfDimensions, (state.dimensionsTotal - 1)), leafAt一零 + getitem(sumsOfProductsOfDimensionsNearest首InSubHyperplane, indexBy首Second)])
123
+ if dimensionHeadSecond == 2:
124
+ listRemoveLeaves.extend([getitem(state.sumsOfProductsOfDimensions, dimensionHeadSecond) + getitem(state.productsOfDimensions, dimensionNearest首(leafAt一零)), getitem(state.sumsOfProductsOfDimensions, dimensionHeadSecond) + 首零(state.dimensionsTotal)])
125
+ if dimensionHeadSecond == 3:
126
+ listRemoveLeaves.extend([一 + leafAt一零 + getitem(state.productsOfDimensions, (state.dimensionsTotal - 1))])
127
+ if 首零(state.dimensionsTotal) < leafAt一零:
128
+ listRemoveLeaves.extend([(零)+首零一(state.dimensionsTotal), getitem(state.productsOfDimensions, (dimensionNearest首(leafAt一零) - 1))])
129
+
130
+ #========= use `leafAt零一Ante首` to exclude a `leaf` from `pile` ===================
131
+ # NOTE a leaf in pile首Less一零 does not have leafCrease in the pile-range of pile零Ante首零, but `leafInSubHyperplane(leafAt首
132
+ # Less一零)` does have leafCrease in the pile-range of pile零Ante首零. `ptount` uses leafInSubHyperplane. I wrote this code block
133
+ # long before I understood this.
134
+
135
+ # NOTE This section could be "modernized" to be more similar to `leafAt一零`, which used to have `comebackOffset`, too.
136
+
137
+ listRemoveLeaves.extend([leafAt零一Ante首])
138
+
139
+ if 首零(state.dimensionsTotal) < leafAt零一Ante首:
140
+ listRemoveLeaves.extend([(零)+首零一(state.dimensionsTotal)])
141
+ if is_even(leafAt零一Ante首):
142
+ listRemoveLeaves.extend([首一(state.dimensionsTotal)])
143
+ dimension: int = 一
144
+ if bit_test(leafAt零一Ante首, dimensionIndex(dimension)):
145
+ listRemoveLeaves.extend([dimension, 首零(state.dimensionsTotal) + dimension + 零, state.首 - sum(state.productsOfDimensions[dimensionIndex(dimension): state.dimensionsTotal - 2]), leafAt零一Ante首 - dimension - getitem(state.sumsOfProductsOfDimensions, (dimensionIndex(dimension) + 1))])
146
+ dimension = 二
147
+ if bit_test(leafAt零一Ante首, dimensionIndex(dimension)):
148
+ listRemoveLeaves.extend([dimension, 首零(state.dimensionsTotal) + dimension + 零])
149
+ if 1 < dimensionNearestTail(leafAt零一Ante首):
150
+ listRemoveLeaves.extend([state.首 - sum(state.productsOfDimensions[dimensionIndex(dimension): state.dimensionsTotal - 2])])
151
+ else: # NOTE IDK and IDC why this works, but it does.
152
+ listRemoveLeaves.extend([getitem(tuple(getLeavesCreaseAnte(state, leafInSubHyperplane(leafAt零一Ante首))), dimensionIndex(dimension)) - 零])
153
+ dimension = 三
154
+ if bit_test(leafAt零一Ante首, dimensionIndex(dimension)):
155
+ if 1 < dimensionNearestTail(leafAt零一Ante首):
156
+ listRemoveLeaves.extend([dimension])
157
+ listRemoveLeaves.extend([state.首 - sum(state.productsOfDimensions[dimensionIndex(dimension): state.dimensionsTotal - 2])])
158
+ if dimensionNearestTail(leafAt零一Ante首) < dimensionIndex(dimension):
159
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + dimension + 零])
160
+ sheepOrGoat = 0
161
+ shepherdOfDimensions: int = int(bit_flip(0, state.dimensionsTotal - 5))
162
+ if (leafAt零一Ante首//shepherdOfDimensions) & bit_mask(5) == 0b10101:
163
+ listRemoveLeaves.extend([二])
164
+ sheepOrGoat: int = ptount(leafAt零一Ante首//shepherdOfDimensions)
165
+ if 0 < sheepOrGoat < state.dimensionsTotal - 3:
166
+ comebackOffset: int = state.productsOfDimensions[dimensionNearest首(leafAt零一Ante首)] - 二
167
+ listRemoveLeaves.extend([leafAt零一Ante首 - comebackOffset])
168
+ if 0 < sheepOrGoat < state.dimensionsTotal - 4:
169
+ comebackOffset = state.productsOfDimensions[raiseIfNone(dimensionSecondNearest首(leafAt零一Ante首))] - 二
170
+ listRemoveLeaves.extend([leafAt零一Ante首 - comebackOffset])
171
+ if is_odd(leafAt零一Ante首):
172
+ listRemoveLeaves.extend([一])
173
+ if leafAt零一Ante首 & bit_mask(4) == 0b001001:
174
+ listRemoveLeaves.extend([0b001011])
175
+ sheepOrGoat = ptount(leafAt零一Ante首)
176
+ if 0 < sheepOrGoat < state.dimensionsTotal - 3:
177
+ comebackOffset = state.productsOfDimensions[dimensionNearest首(leafAt零一Ante首)] - 一
178
+ listRemoveLeaves.extend([leafAt零一Ante首 - comebackOffset])
179
+ if 0 < sheepOrGoat < state.dimensionsTotal - 4:
180
+ comebackOffset = state.productsOfDimensions[raiseIfNone(dimensionSecondNearest首(leafAt零一Ante首))] - 一
181
+ listRemoveLeaves.extend([leafAt零一Ante首 - comebackOffset])
182
+
183
+ #-------- Use information from other piles to decide whether to exclude some leaves. -------
184
+ if (leafAt一 == 一+零) and (leafAt零一Ante首 != next(getLeavesCreaseAnte(state, (零)+首零(state.dimensionsTotal)))):
185
+ listRemoveLeaves.append(首一(state.dimensionsTotal))
186
+
187
+ # NOTE Above this line, all exclusions based on only one leaf in a pile are covered. 😊
188
+ #========= use leafAt二 to exclude a `leaf` from `pile` ===================
189
+ # NOTE Below this line, abandon all hope, the who code here. 😈
190
+
191
+ dimensionHead: int = dimensionNearest首(leafAt二)
192
+ creasePostAt二: tuple[int, ...] = tuple(getLeavesCreasePost(state, leafAt二))
193
+ listIndicesCreasePostToKeep: list[int] = []
194
+
195
+ if (二 < leafAt二 < neg(零)+首一(state.dimensionsTotal)):
196
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal)])
197
+
198
+ dimension = 一
199
+ if bit_test(leafAt二, dimensionIndex(dimension)):
200
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) + dimension])
201
+
202
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
203
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) - dimension])
204
+
205
+ if is_odd(leafAt二):
206
+ dimension = 三
207
+ if bit_test(leafAt二, dimensionIndex(dimension)):
208
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) + dimension])
209
+
210
+ dimension = 四
211
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
212
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) - dimension])
213
+
214
+ if ((首一(state.dimensionsTotal) < leafAt二 < 首零(state.dimensionsTotal)) and raiseIfNone(dimensionSecondNearest首(leafAt二)) != 2):
215
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal)])
216
+
217
+ if is_odd(leafAt二):
218
+ dimension = 二
219
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
220
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) - getitem(state.sumsOfProductsOfDimensions, dimensionIndex(dimension))])
221
+
222
+ dimension = 三
223
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
224
+ listRemoveLeaves.extend([leafAt二 + 首零(state.dimensionsTotal) - dimension, leafAt二 + 首零(state.dimensionsTotal) + getitem(state.sumsOfProductsOfDimensions, dimensionIndex(dimension))])
225
+
226
+ dimension = 四
227
+ if bit_test(leafAt二, dimensionIndex(dimension)):
228
+ listRemoveLeaves.extend([leafAt二 - dimension])
229
+
230
+ if is_even(leafAt二):
231
+ listIndicesCreasePostToKeep.extend(range(state.dimensionsTotal - dimensionHead + 1, (state.dimensionsTotal - zeroIndexed)))
232
+
233
+ listRemoveLeaves.extend([
234
+ leafAt二 + 零, leafAt二 + 首零(state.dimensionsTotal), leafAt二 + getitem(state.sumsOfProductsOfDimensions, (state.dimensionsTotal-1)), getitem(state.productsOfDimensions, dimensionHead) + (一+零)])
235
+
236
+ dimension = 一
237
+ if bit_test(leafAt二, dimensionIndex(dimension)):
238
+ listRemoveLeaves.extend([dimension, 首零(state.dimensionsTotal) + dimension + 零])
239
+
240
+ dimension = 二
241
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
242
+ listIndicesCreasePostToKeep.append(creasePostAt二.index(state.productsOfDimensions[dimensionHead]))
243
+
244
+ if leafAt二 < 首零(state.dimensionsTotal):
245
+ listRemoveLeaves.extend([getitem(state.productsOfDimensions, dimensionIndex(二)), getitem(state.sumsOfProductsOfDimensions, (dimensionIndex(二) + 1))])
246
+
247
+ dimension = 四
248
+ if (not bit_test(leafAt二, dimensionIndex(dimension))) and (首零(state.dimensionsTotal) < leafAt二):
249
+ listRemoveLeaves.extend([getitem(state.productsOfDimensions, dimensionIndex(dimension))])
250
+
251
+ # NOTE 1) I am sure this concept has validity. 2) I am sure there is a more accurate computation for it.
252
+ zerosAtThe首 = 2
253
+ if state.dimensionsTotal - zeroIndexed - dimensionHead == zerosAtThe首:
254
+ sumsOfProductsOfDimensionsNearest首InSubSubHyperplane: tuple[int, ...] = getSumsOfProductsOfDimensionsNearest首(state.productsOfDimensions, state.dimensionsTotal, state.dimensionsTotal - zerosAtThe首)
255
+ addendForUnknownReasons: int = -1
256
+ leavesWeDontWant: list[int] = [aLeaf + addendForUnknownReasons for aLeaf in filter(notLeafOriginOrLeaf零, sumsOfProductsOfDimensionsNearest首InSubSubHyperplane)]
257
+ listRemoveLeaves.extend(leavesWeDontWant)
258
+
259
+ if is_odd(leafAt二):
260
+
261
+ if dimensionNearestTail(leafAt二 - 1) == 1:
262
+ listRemoveLeaves.extend([一])
263
+
264
+ if leafInSubHyperplane(leafAt二) == state.sumsOfProductsOfDimensions[3]:
265
+ listRemoveLeaves.extend([二])
266
+
267
+ dimension = 零
268
+ if bit_test(leafAt二, dimensionIndex(dimension)):
269
+ listRemoveLeaves.extend([dimension, leafAt二 - dimension, 首零(state.dimensionsTotal) + dimension + 零])
270
+
271
+ dimension = 二
272
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
273
+ listIndicesCreasePostToKeep.append(dimensionIndex(dimension))
274
+
275
+ if bit_test(leafAt二, dimensionIndex(dimension)) and bit_test(leafAt二, dimensionIndex(一)):
276
+ listRemoveLeaves.extend([leafAt二 - dimension, 首零(state.dimensionsTotal) + dimension + 零])
277
+
278
+ dimension = 三
279
+ if bit_test(leafAt二, dimensionIndex(dimension)):
280
+ listRemoveLeaves.extend([leafAt二 - dimension, 首零(state.dimensionsTotal) + dimension + 零])
281
+
282
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
283
+ listIndicesCreasePostToKeep.append(dimensionIndex(dimension))
284
+
285
+ dimension = 四
286
+ if not bit_test(leafAt二, dimensionIndex(dimension)):
287
+ listIndicesCreasePostToKeep.append(dimensionIndex(dimension))
288
+
289
+ dimension = 四
290
+ if bit_test(leafAt二, dimensionIndex(dimension)):
291
+
292
+ dimensionBonus: int = 零
293
+ if bit_test(leafAt二, dimensionIndex(dimensionBonus)):
294
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + dimension + dimensionBonus])
295
+
296
+ dimensionBonus = 二
297
+ if bit_test(leafAt二, dimensionIndex(dimensionBonus)):
298
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + dimension + dimensionBonus])
299
+
300
+ dimensionBonus = 三
301
+ if bit_test(leafAt二, dimensionIndex(dimensionBonus)):
302
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + dimension + dimensionBonus])
303
+
304
+ dimension = 五
305
+ if bit_test(leafAt二, dimensionIndex(dimension)):
306
+ listRemoveLeaves.extend([首一(state.dimensionsTotal),(零)+首零一(state.dimensionsTotal)])
307
+
308
+ # --- small ---
309
+ if leafAt二 < 首一(state.dimensionsTotal):
310
+ listRemoveLeaves.extend([一])
311
+
312
+ # --- medium ---
313
+ if 首一(state.dimensionsTotal) < leafAt二 < 首零(state.dimensionsTotal):
314
+ listRemoveLeaves.extend([leafAt二 + getitem(state.sumsOfProductsOfDimensions, (state.dimensionsTotal - 2)), 首一(state.dimensionsTotal)+(一+零)])
315
+
316
+ # --- large ---
317
+ if 首零(state.dimensionsTotal) < leafAt二:
318
+ dimension = 二
319
+ if bit_test(leafAt二, dimensionIndex(dimension)):
320
+ listRemoveLeaves.extend([leafAt二 - dimension, 首零(state.dimensionsTotal) + dimension + 零])
321
+
322
+ dimension = 四
323
+ if bit_test(leafAt二, dimensionIndex(dimension)):
324
+ listRemoveLeaves.extend([dimension, leafAt二 - dimension, 首零(state.dimensionsTotal) + dimension + 零, 首零一二(state.dimensionsTotal)])
325
+
326
+ if bit_test(leafAt二, dimensionIndex(三)):
327
+ listRemoveLeaves.extend([leafAt二 - 五])
328
+
329
+ listRemoveLeaves.extend(exclude(creasePostAt二, listIndicesCreasePostToKeep))
330
+
331
+ #========= use leafAt首Less二 to exclude a `leaf` from `pile` ===================
332
+
333
+ dimensionHead: int = dimensionNearest首(leafAt二Ante首)
334
+ dimensionTail: int = dimensionNearestTail(leafAt二Ante首)
335
+
336
+ #-------- I DON'T KNOW AND I DON'T CARE WHY THIS WORKS AS LONG AS IT WORKS -------
337
+ if (leafAt二Ante首 - 1) in getitem(dictionaryPileRanges, (neg(二)+state.首)):
338
+ dimension = 三
339
+ if not bit_test(leafAt二Ante首, dimensionIndex(dimension)):
340
+
341
+ enumerateFrom1: int = zeroIndexed
342
+ for bitToTest, leafToRemove in enumerate(tuple(getLeavesCreaseAnte(state, (leafAt二Ante首 - 1))), start=enumerateFrom1):
343
+ if bit_test(leafAt二Ante首, bitToTest):
344
+ listRemoveLeaves.extend([leafToRemove])
345
+
346
+ if dimensionHead < bitToTest:
347
+ listRemoveLeaves.extend([leafToRemove])
348
+
349
+ theLastPossibleIndexOfCreaseAnteIfCountingFromTheHead: int = 1
350
+ if bit_test(leafAt二Ante首, theLastPossibleIndexOfCreaseAnteIfCountingFromTheHead):
351
+ creaseAnteAt二Ante首: tuple[int, ...] = tuple(getLeavesCreaseAnte(state, leafAt二Ante首))
352
+
353
+ largestPossibleLengthOfListOfCreases: int = state.dimensionsTotal - 1
354
+ if len(creaseAnteAt二Ante首) == largestPossibleLengthOfListOfCreases:
355
+
356
+ voodooAddend: int = 2
357
+ if not bit_test(leafAt二Ante首, voodooAddend + theLastPossibleIndexOfCreaseAnteIfCountingFromTheHead):
358
+ voodooMath: int = creaseAnteAt二Ante首[largestPossibleLengthOfListOfCreases - zeroIndexed]
359
+
360
+ listRemoveLeaves.extend([voodooMath])
361
+ # /voodooMath
362
+
363
+ # --- only 17 allows 49 ---
364
+
365
+ if leafAt二Ante首 !=(零)+首一(state.dimensionsTotal):
366
+ listRemoveLeaves.extend([(零)+首零一(state.dimensionsTotal)])
367
+
368
+ # --- odd and even ---
369
+
370
+ if howManyDimensionsHaveOddParity(leafAt二Ante首) == 1:
371
+ listRemoveLeaves.extend([leafInSubHyperplane(leafAt二Ante首)])
372
+
373
+ dimension = 二
374
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
375
+ listRemoveLeaves.extend([leafAt二Ante首 - dimension])
376
+
377
+ if (is_even(leafAt二Ante首)
378
+ or (is_odd(leafAt二Ante首) and (dimensionIndex(dimension) < dimensionsConsecutiveAtTail(state, leafAt二Ante首)))):
379
+ listRemoveLeaves.extend([dimension])
380
+
381
+ dimension = 三
382
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
383
+ listRemoveLeaves.extend([leafAt二Ante首 - dimension])
384
+
385
+ dimension = 四
386
+ if is_even(leafAt二Ante首) and (not bit_test(leafAt二Ante首, dimensionIndex(dimension))):
387
+ listRemoveLeaves.extend([leafAt二Ante首 - getitem(state.sumsOfProductsOfDimensions, dimensionIndex(dimension))])
388
+
389
+ if dimensionTail == 3:
390
+ listRemoveLeaves.extend([getitem(state.sumsOfProductsOfDimensionsNearest首, dimensionTail)])
391
+
392
+ # --- large ---
393
+
394
+ if 首零(state.dimensionsTotal) < leafAt二Ante首:
395
+
396
+ dimension = 一
397
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
398
+ listRemoveLeaves.extend([dimension, 首零(state.dimensionsTotal) + dimension + 零])
399
+
400
+ if is_odd(leafAt二Ante首) and (not bit_test(leafAt二Ante首, dimensionIndex(dimension))):
401
+ listRemoveLeaves.extend([leafAt二Ante首 - 首零(state.dimensionsTotal) - dimension])
402
+
403
+ dimension = 二
404
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
405
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + getitem(state.sumsOfProductsOfDimensions, dimensionIndex(dimension))])
406
+
407
+ dimension = 二
408
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
409
+ listRemoveLeaves.extend([首零(state.dimensionsTotal) + dimension + 零])
410
+
411
+ dimension = 三
412
+ if is_even(leafAt二Ante首) and bit_test(leafAt二Ante首, dimensionIndex(dimension)):
413
+ listRemoveLeaves.extend([dimension])
414
+
415
+ dimension = 四
416
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
417
+ listRemoveLeaves.extend([leafAt二Ante首 - dimension])
418
+
419
+ if not bit_test(leafAt二Ante首, dimensionIndex(dimension)):
420
+ listRemoveLeaves.extend([leafAt二Ante首 + dimension])
421
+
422
+ if is_odd(leafAt二Ante首):
423
+ dimension = 零 # This is redundant but it might help expose patterns.
424
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
425
+ listRemoveLeaves.extend([一, leafAt二Ante首 - dimension, leafAt二Ante首 - getitem(state.productsOfDimensions, raiseIfNone(dimensionSecondNearest首(leafAt二Ante首)))])
426
+
427
+ if is_even(leafAt二Ante首):
428
+ dimension = 零 # This is redundant but it might help expose patterns.
429
+ if not bit_test(leafAt二Ante首, dimensionIndex(dimension)):
430
+ listRemoveLeaves.extend([leafAt二Ante首 + dimension, state.productsOfDimensions[dimensionTail], leafAt二Ante首 - state.productsOfDimensions[dimensionTail]])
431
+
432
+ dimension = 二
433
+ if bit_test(leafAt二Ante首, dimensionIndex(dimension)):
434
+ listRemoveLeaves.extend([dimension])
435
+
436
+ if 首零(state.dimensionsTotal) < leafAt二Ante首 < 首零一二(state.dimensionsTotal):
437
+ listRemoveLeaves.extend([leafAt二Ante首 + dimensionTail])
438
+
439
+ if dimensionTail == 2:
440
+ addendIDC: int = (state.首 - leafAt二Ante首) // 2
441
+ listRemoveLeaves.extend([addendIDC + leafAt二Ante首])
442
+
443
+ if leafAt二Ante首 < 首零(state.dimensionsTotal):
444
+ listRemoveLeaves.extend([leafAt二Ante首 + state.sumsOfProductsOfDimensions[dimensionTail], state.首 - leafAt二Ante首])
445
+
446
+ if leafAt二Ante首 < 首零(state.dimensionsTotal):
447
+ listRemoveLeaves.extend([首一(state.dimensionsTotal), leafAt二Ante首 + state.productsOfDimensions[dimensionNearest首(leafAt二Ante首) + 1]])
448
+
449
+ dimension = 三
450
+ if not bit_test(leafAt二Ante首, dimensionIndex(dimension)):
451
+ listRemoveLeaves.extend([dimension, leafAt二Ante首 + dimension, state.sumsOfProductsOfDimensionsNearest首[dimensionIndex(dimension)]])
452
+
453
+ if leafAt二Ante首 !=(一)+首零(state.dimensionsTotal):
454
+ listRemoveLeaves.extend([首一(state.dimensionsTotal)])
455
+
456
+ del dimensionHead, dimensionTail
457
+
458
+ return sorted(set(dictionaryPileRanges[state.pile]).difference(set(listRemoveLeaves)))
459
+