mapFolding 0.17.0__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.
- easyRun/NOTcountingFolds.py +16 -10
- easyRun/__init__.py +1 -0
- easyRun/countFolds.py +17 -9
- easyRun/meanders.py +6 -8
- mapFolding/__init__.py +24 -35
- mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_hypothesis.py +189 -0
- mapFolding/_e/Z0Z_analysisPython/SORTZ0Z_p2d6.py +143 -0
- mapFolding/_e/Z0Z_analysisPython/__init__.py +4 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/__init__.py +0 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200.py +369 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2001.py +694 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/211.py +514 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/270/2111.py +480 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214.py +511 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/2141.py +515 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/211.py +485 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/200/344/272/214/344/270/2111.py +442 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/211.py +313 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/270/2111.py +343 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214.py +400 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/2141.py +497 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/211.py +463 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/344/272/214/344/270/2111.py +441 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266.py +35 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/2661.py +35 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200.py +382 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2001.py +630 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/211.py +488 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/270/2111.py +475 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214.py +473 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/2141.py +500 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +465 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +439 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/211.py +599 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/270/2111.py +536 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214.py +506 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/2141.py +533 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/211.py +489 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/aggregated/351/246/226/351/233/266/344/272/214/344/270/2111.py +474 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001.py +2158 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2001Negative.py +2158 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200Negative.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211.py +1397 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111.py +1291 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/2111Negative.py +1291 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/270/211Negative.py +1397 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214.py +1240 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141.py +1420 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/2141Negative.py +1420 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214Negative.py +1240 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211.py +1366 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111.py +1274 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +1274 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +1366 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/2111Negative.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/270/211Negative.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214.py +1102 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141.py +1422 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/2141Negative.py +1422 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214Negative.py +1102 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211.py +1240 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111.py +1228 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/2111Negative.py +1228 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/344/272/214/344/270/211Negative.py +1240 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266.py +32 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661.py +1162 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/2661Negative.py +1162 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266Negative.py +32 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001.py +1926 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2001Negative.py +1926 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200Negative.py +1186 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211.py +1291 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111.py +1176 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +1176 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +1291 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214.py +1228 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141.py +1324 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +1324 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +1228 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +1274 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +1038 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +1038 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +1274 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211.py +2158 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111.py +1926 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/2111Negative.py +1926 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/270/211Negative.py +2158 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214.py +1422 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141.py +1364 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/2141Negative.py +1364 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214Negative.py +1422 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211.py +1420 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111.py +1324 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +1324 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d5/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +1420 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200.py +3133 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001.py +6039 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2001Negative.py +6039 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200Negative.py +3133 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211.py +3527 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111.py +2300 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/2111Negative.py +2300 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/270/211Negative.py +3527 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214.py +3597 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141.py +3317 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/2141Negative.py +3317 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214Negative.py +3597 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211.py +3161 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111.py +2877 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/2111Negative.py +2877 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/200/344/272/214/344/270/211Negative.py +3161 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211.py +2981 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111.py +3055 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/2111Negative.py +3055 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/270/211Negative.py +2981 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214.py +3221 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141.py +3988 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/2141Negative.py +3988 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214Negative.py +3221 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211.py +3652 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111.py +2863 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/2111Negative.py +2863 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/344/272/214/344/270/211Negative.py +3652 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200.py +2485 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001.py +4566 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2001Negative.py +4566 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200Negative.py +2485 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211.py +3006 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111.py +2485 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/2111Negative.py +2485 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/270/211Negative.py +3006 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214.py +3304 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141.py +3015 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/2141Negative.py +3015 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214Negative.py +3304 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211.py +2939 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111.py +2589 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/2111Negative.py +2589 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/200/344/272/214/344/270/211Negative.py +2939 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211.py +3899 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111.py +2996 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/2111Negative.py +2996 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/270/211Negative.py +3899 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214.py +3223 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141.py +3020 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/2141Negative.py +3020 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214Negative.py +3223 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211.py +3250 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111.py +2667 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/2111Negative.py +2667 -0
- mapFolding/_e/Z0Z_analysisPython/exclusionData/collatedp2d6/351/246/226/351/233/266/344/272/214/344/270/211Negative.py +3250 -0
- mapFolding/_e/Z0Z_analysisPython/measure.py +162 -0
- mapFolding/_e/Z0Z_analysisPython/positionAnalysis.py +403 -0
- mapFolding/_e/Z0Z_analysisPython/positionAnalysisPileRanges2d6.py +110 -0
- mapFolding/_e/Z0Z_analysisPython/theExcluderBeast.py +640 -0
- mapFolding/_e/Z0Z_analysisPython/toolkit.py +166 -0
- mapFolding/_e/Z0Z_analysisPython/toolkitCSVsequences.py +188 -0
- mapFolding/_e/Z0Z_analysisPython/workBenchPatternFinder.py +284 -0
- mapFolding/_e/Z0Z_notes/__init__.py +0 -0
- mapFolding/_e/Z0Z_notes/knowledgeDump.py +214 -0
- mapFolding/_e/__init__.py +45 -0
- mapFolding/_e/_beDRY.py +547 -0
- mapFolding/_e/_dataDynamic.py +1164 -0
- mapFolding/_e/_measure.py +579 -0
- mapFolding/_e/_semiotics.py +363 -0
- mapFolding/_e/_theTypes.py +31 -0
- mapFolding/_e/algorithms/__init__.py +1 -0
- mapFolding/_e/algorithms/constraintPropagation.py +158 -0
- mapFolding/_e/algorithms/elimination.py +118 -0
- mapFolding/_e/algorithms/eliminationCrease.py +66 -0
- mapFolding/_e/algorithms/iff.py +584 -0
- mapFolding/_e/basecamp.py +89 -0
- mapFolding/_e/dataBaskets.py +123 -0
- mapFolding/_e/dataRaw/__init__.py +0 -0
- mapFolding/_e/easyRun/__init__.py +0 -0
- mapFolding/_e/easyRun/eliminateFolds.py +72 -0
- mapFolding/_e/easyRun/pinning.py +62 -0
- mapFolding/_e/filters.py +384 -0
- mapFolding/_e/pin2/344/270/212nDimensions.py +882 -0
- mapFolding/_e/pin2/344/270/212nDimensionsAnnex.py +551 -0
- mapFolding/_e/pin2/344/270/212nDimensionsByCrease.py +190 -0
- mapFolding/_e/pin2/344/270/212nDimensionsByDomain.py +459 -0
- mapFolding/_e/pinIt.py +436 -0
- mapFolding/_semiotics.py +42 -0
- mapFolding/_theSSOT.py +11 -56
- mapFolding/_theTypes.py +52 -68
- mapFolding/algorithms/A086345.py +8 -3
- mapFolding/algorithms/__init__.py +1 -1
- mapFolding/algorithms/matrixMeandersNumPyndas.py +18 -18
- mapFolding/algorithms/oeisIDbyFormula.py +4 -4
- mapFolding/algorithms/zCuzDocStoopidoeisIDbyFormula.py +3 -3
- mapFolding/basecamp.py +13 -28
- mapFolding/beDRY.py +108 -99
- mapFolding/filesystemToolkit.py +15 -11
- mapFolding/oeis.py +17 -16
- mapFolding/reference/matrixMeandersAnalysis/prefixNotationNotes.py +2 -2
- mapFolding/reference/meandersDumpingGround/matrixMeandersBaselineV2.py +0 -1
- mapFolding/reference/meandersDumpingGround/matrixMeandersNumPyV1finalForm.py +8 -10
- mapFolding/someAssemblyRequired/RecipeJob.py +5 -5
- mapFolding/someAssemblyRequired/makeJobTheorem2Numba.py +5 -2
- mapFolding/someAssemblyRequired/makeJobTheorem2codon.py +9 -11
- mapFolding/someAssemblyRequired/mapFoldingModules/makeMapFoldingModules.py +2 -1
- mapFolding/someAssemblyRequired/transformationTools.py +2 -2
- mapFolding/tests/Z0Z_test_e_excluder.py +155 -0
- mapFolding/tests/conftest.py +193 -314
- mapFolding/tests/dataSamples/A001417.py +455 -0
- mapFolding/tests/dataSamples/__init__.py +1 -0
- mapFolding/tests/dataSamples/measurementData.py +1818 -0
- mapFolding/tests/dataSamples/p2DnDomain3_2_/351/246/226/344/270/200_/351/246/226/351/233/266/344/270/200.py +17 -0
- mapFolding/tests/dataSamples/p2DnDomain3_/351/246/226/344/270/200.py +17 -0
- mapFolding/tests/dataSamples/p2DnDomain5_4.py +17 -0
- mapFolding/tests/dataSamples/p2DnDomain6_5.py +17 -0
- mapFolding/tests/dataSamples/p2DnDomain6_7_5_4.py +17 -0
- mapFolding/tests/dataSamples/p2DnDomain7_6.py +17 -0
- 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
- 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
- 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
- mapFolding/tests/dataSamples/p2DnDomain/351/246/226/351/233/266/344/272/214_/351/246/226/344/272/214.py +15 -0
- mapFolding/tests/dataSamples/semioticsData.py +135 -0
- mapFolding/tests/test_computations.py +133 -88
- mapFolding/tests/test_e_computations.py +42 -0
- mapFolding/tests/test_e_dataDynamic.py +189 -0
- mapFolding/tests/test_e_measurements.py +257 -0
- mapFolding/tests/test_e_pinning.py +61 -0
- mapFolding/tests/test_e_semiotics.py +128 -0
- mapFolding/tests/test_filesystem.py +39 -17
- mapFolding/tests/{test_other.py → test_parameterValidation.py} +3 -3
- mapFolding/tests/{test_tasks.py → test_taskDivisions.py} +42 -23
- mapFolding/zCuzDocStoopid/makeDocstrings.py +3 -2
- {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/METADATA +15 -9
- mapfolding-0.18.0.dist-info/RECORD +305 -0
- {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/WHEEL +1 -1
- easyRun/A000682.py +0 -25
- easyRun/A005316.py +0 -20
- mapFolding/algorithms/A000136constraintPropagation.py +0 -95
- mapFolding/algorithms/A000136elimination.py +0 -163
- mapFolding/algorithms/A000136eliminationParallel.py +0 -77
- mapfolding-0.17.0.dist-info/RECORD +0 -107
- {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/entry_points.txt +0 -0
- {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/licenses/LICENSE +0 -0
- {mapfolding-0.17.0.dist-info → mapfolding-0.18.0.dist-info}/top_level.txt +0 -0
easyRun/NOTcountingFolds.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ruff: noqa
|
|
2
2
|
from collections import ChainMap
|
|
3
|
-
from mapFolding import dictionaryOEIS, dictionaryOEISMapFolding
|
|
3
|
+
from mapFolding import ansiColorReset, ansiColors, dictionaryOEIS, dictionaryOEISMapFolding
|
|
4
4
|
from mapFolding.basecamp import NOTcountingFolds
|
|
5
5
|
import sys
|
|
6
6
|
import time
|
|
@@ -11,26 +11,33 @@ if __name__ == '__main__':
|
|
|
11
11
|
def _write() -> None:
|
|
12
12
|
sys.stdout.write(
|
|
13
13
|
f"{(match:=countTotal == dictionaryONE[oeisID]['valuesKnown'][n])}\t"
|
|
14
|
-
f"
|
|
14
|
+
f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
|
|
15
15
|
f"{n}\t"
|
|
16
16
|
f"{countTotal}\t"
|
|
17
17
|
f"{time.perf_counter() - timeStart:.2f}\t"
|
|
18
|
-
"\
|
|
18
|
+
f"{ansiColorReset}\n"
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
CPUlimit: bool | float | int | None = -2
|
|
22
22
|
flow: str | None = None
|
|
23
23
|
|
|
24
24
|
oeisID = 'A007822'
|
|
25
|
+
oeisID = 'A000136'
|
|
25
26
|
|
|
26
27
|
flow = 'algorithm'
|
|
27
|
-
flow = 'asynchronous'
|
|
28
|
-
flow = 'theorem2Trimmed'
|
|
29
|
-
flow = 'theorem2Numba'
|
|
30
28
|
flow = 'theorem2'
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
sys.stdout.write(f"{ansiColors[int(oeisID,36)%len(ansiColors)]}{oeisID} ")
|
|
31
|
+
sys.stdout.write(f"{ansiColors[int(flow,36)%len(ansiColors)]}{flow}")
|
|
32
|
+
sys.stdout.write(ansiColorReset + '\n')
|
|
33
|
+
|
|
34
|
+
nList: list[int] = []
|
|
35
|
+
nList.extend(range(7, 11))
|
|
36
|
+
# nList.extend(range(9, 13))
|
|
37
|
+
# nList.extend(range(11, 15))
|
|
38
|
+
# nList.extend(range(13, 17))
|
|
39
|
+
|
|
40
|
+
for n in dict.fromkeys(nList):
|
|
34
41
|
|
|
35
42
|
timeStart = time.perf_counter()
|
|
36
43
|
countTotal = NOTcountingFolds(oeisID, n, flow, CPUlimit)
|
|
@@ -38,7 +45,6 @@ if __name__ == '__main__':
|
|
|
38
45
|
_write()
|
|
39
46
|
|
|
40
47
|
r"""
|
|
41
|
-
|
|
48
|
+
|
|
42
49
|
title running && start "working" /B /HIGH /wait py -X faulthandler=0 -X tracemalloc=0 -X frozen_modules=on easyRun\NOTcountingFolds.py & title I'm done
|
|
43
50
|
"""
|
|
44
|
-
|
easyRun/__init__.py
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Instead of learning to make a Python UI, I made these modules."""
|
easyRun/countFolds.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# ruff: noqa
|
|
2
2
|
# pyright: basic
|
|
3
3
|
from collections.abc import Sequence
|
|
4
|
-
from mapFolding import
|
|
4
|
+
from mapFolding import ansiColorReset, ansiColors, dictionaryOEISMapFolding
|
|
5
|
+
from mapFolding.basecamp import countFolds
|
|
5
6
|
from os import PathLike
|
|
6
7
|
from pathlib import PurePath
|
|
7
8
|
import sys
|
|
@@ -11,11 +12,12 @@ if __name__ == '__main__':
|
|
|
11
12
|
def _write() -> None:
|
|
12
13
|
sys.stdout.write(
|
|
13
14
|
f"{(match:=foldsTotal == dictionaryOEISMapFolding[oeisID]['valuesKnown'][n])}\t"
|
|
14
|
-
f"
|
|
15
|
+
f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
|
|
15
16
|
f"{n}\t"
|
|
16
17
|
f"{foldsTotal}\t"
|
|
18
|
+
f"{dictionaryOEISMapFolding[oeisID]['valuesKnown'][n]}\t"
|
|
17
19
|
f"{time.perf_counter() - timeStart:.2f}\t"
|
|
18
|
-
"\
|
|
20
|
+
f"{ansiColorReset}\n"
|
|
19
21
|
)
|
|
20
22
|
|
|
21
23
|
listDimensions: Sequence[int] | None = None
|
|
@@ -23,21 +25,27 @@ if __name__ == '__main__':
|
|
|
23
25
|
computationDivisions: int | str | None = None
|
|
24
26
|
CPUlimit: bool | float | int | None = None
|
|
25
27
|
# mapShape: tuple[int, ...] | None = None
|
|
26
|
-
flow = 'daoOfMapFolding'
|
|
27
28
|
flow = 'numba'
|
|
28
29
|
flow = 'theorem2'
|
|
29
30
|
flow = 'theorem2Numba'
|
|
30
|
-
flow
|
|
31
|
-
|
|
31
|
+
flow = 'daoOfMapFolding'
|
|
32
32
|
|
|
33
|
-
oeisID: str = '
|
|
33
|
+
oeisID: str = 'A195646'
|
|
34
|
+
oeisID: str = 'A001416'
|
|
35
|
+
oeisID: str = 'A001418'
|
|
36
|
+
oeisID: str = 'A001417'
|
|
34
37
|
oeisID: str = 'A000136'
|
|
35
|
-
|
|
38
|
+
oeisID: str = 'A001415'
|
|
39
|
+
|
|
40
|
+
sys.stdout.write(f"{ansiColors[int(oeisID,36)%len(ansiColors)]}{oeisID} ")
|
|
41
|
+
sys.stdout.write(f"{ansiColors[int(flow,36)%len(ansiColors)]}{flow}")
|
|
42
|
+
sys.stdout.write(ansiColorReset + '\n')
|
|
43
|
+
|
|
44
|
+
for n in range(2):
|
|
36
45
|
|
|
37
46
|
mapShape: tuple[int, ...] = dictionaryOEISMapFolding[oeisID]['getMapShape'](n)
|
|
38
47
|
|
|
39
48
|
timeStart = time.perf_counter()
|
|
40
|
-
# foldsTotal: int = countFolds(listDimensions=None, pathLikeWriteFoldsTotal=None, computationDivisions=None, CPUlimit=None, mapShape=(2, 3), flow='theorem2Trimmed')
|
|
41
49
|
foldsTotal: int = countFolds(listDimensions=listDimensions
|
|
42
50
|
, pathLikeWriteFoldsTotal=pathLikeWriteFoldsTotal
|
|
43
51
|
, computationDivisions=computationDivisions
|
easyRun/meanders.py
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
# ruff: noqa
|
|
2
2
|
# pyright: basic
|
|
3
|
-
from mapFolding import dictionaryOEIS
|
|
3
|
+
from mapFolding import ansiColorReset, ansiColors, dictionaryOEIS
|
|
4
4
|
from mapFolding.basecamp import NOTcountingFolds
|
|
5
5
|
import gc
|
|
6
|
-
import multiprocessing
|
|
7
6
|
import sys
|
|
8
7
|
import time
|
|
9
8
|
import warnings
|
|
10
9
|
|
|
11
10
|
def write() -> None:
|
|
12
11
|
sys.stdout.write(
|
|
13
|
-
f"{(
|
|
14
|
-
f"
|
|
12
|
+
f"{(match:=(countTotal == dictionaryOEIS[oeisID]['valuesKnown'][n]))}\t"
|
|
13
|
+
f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
|
|
15
14
|
f"{n}\t"
|
|
16
15
|
# f"{countTotal}\t"
|
|
17
16
|
# f"{dictionaryOEISMeanders[oeisID]['valuesKnown'][n]}\t"
|
|
18
17
|
f"{time.perf_counter() - timeStart:.2f}\t"
|
|
19
|
-
"\
|
|
18
|
+
f"{ansiColorReset}\n"
|
|
20
19
|
)
|
|
21
20
|
|
|
22
21
|
if __name__ == '__main__':
|
|
23
|
-
multiprocessing.set_start_method('spawn')
|
|
24
22
|
if sys.version_info >= (3, 14):
|
|
25
23
|
warnings.filterwarnings("ignore", category=FutureWarning)
|
|
26
24
|
|
|
@@ -34,7 +32,7 @@ if __name__ == '__main__':
|
|
|
34
32
|
]:
|
|
35
33
|
sys.stdout.write(f"\n{oeisID}\n")
|
|
36
34
|
|
|
37
|
-
"""TODO Identifiers. improve
|
|
35
|
+
"""# TODO Identifiers. improve
|
|
38
36
|
"generate up to four targets."
|
|
39
37
|
1. Adding a new loop.
|
|
40
38
|
2. Dragging up a loop end.
|
|
@@ -63,7 +61,7 @@ if __name__ == '__main__':
|
|
|
63
61
|
sys.stdout.write(f"{n} {countTotal} {time.perf_counter() - timeStart:.2f}\n")
|
|
64
62
|
|
|
65
63
|
r"""
|
|
66
|
-
|
|
64
|
+
|
|
67
65
|
title running && start "meanders" /B /HIGH /wait py -X faulthandler=0 -X tracemalloc=0 -X frozen_modules=on easyRun\meanders.py && title I'm done || title Error
|
|
68
66
|
|
|
69
67
|
"""
|
mapFolding/__init__.py
CHANGED
|
@@ -1,49 +1,38 @@
|
|
|
1
1
|
"""Map folding, meanders, stamp folding, semi-meanders. Experiment with algorithm transformations, and analyze computational states."""
|
|
2
2
|
|
|
3
|
+
# isort: split
|
|
4
|
+
from mapFolding._semiotics import (
|
|
5
|
+
ansiColorReset as ansiColorReset, ansiColors as ansiColors, decreasing as decreasing, inclusive as inclusive,
|
|
6
|
+
zeroIndexed as zeroIndexed)
|
|
7
|
+
|
|
8
|
+
# isort: split
|
|
3
9
|
from mapFolding._theTypes import (
|
|
4
|
-
Array1DElephino as Array1DElephino,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
DatatypeLeavesTotal as DatatypeLeavesTotal,
|
|
13
|
-
MetadataOEISid as MetadataOEISid,
|
|
14
|
-
MetadataOEISidManuallySet as MetadataOEISidManuallySet,
|
|
15
|
-
MetadataOEISidMapFolding as MetadataOEISidMapFolding,
|
|
16
|
-
MetadataOEISidMapFoldingManuallySet as MetadataOEISidMapFoldingManuallySet,
|
|
17
|
-
NumPyElephino as NumPyElephino,
|
|
18
|
-
NumPyFoldsTotal as NumPyFoldsTotal,
|
|
19
|
-
NumPyIntegerType as NumPyIntegerType,
|
|
20
|
-
NumPyLeavesTotal as NumPyLeavesTotal,
|
|
21
|
-
ShapeArray as ShapeArray,
|
|
22
|
-
ShapeSlicer as ShapeSlicer)
|
|
10
|
+
Array1DElephino as Array1DElephino, Array1DFoldsTotal as Array1DFoldsTotal, Array1DLeavesTotal as Array1DLeavesTotal,
|
|
11
|
+
Array2DLeavesTotal as Array2DLeavesTotal, Array3DLeavesTotal as Array3DLeavesTotal, axisOfLength as axisOfLength,
|
|
12
|
+
DatatypeElephino as DatatypeElephino, DatatypeFoldsTotal as DatatypeFoldsTotal,
|
|
13
|
+
DatatypeLeavesTotal as DatatypeLeavesTotal, MetadataOEISid as MetadataOEISid,
|
|
14
|
+
MetadataOEISidManuallySet as MetadataOEISidManuallySet, MetadataOEISidMapFolding as MetadataOEISidMapFolding,
|
|
15
|
+
MetadataOEISidMapFoldingManuallySet as MetadataOEISidMapFoldingManuallySet, NumPyElephino as NumPyElephino,
|
|
16
|
+
NumPyFoldsTotal as NumPyFoldsTotal, NumPyIntegerType as NumPyIntegerType, NumPyLeavesTotal as NumPyLeavesTotal,
|
|
17
|
+
ShapeArray as ShapeArray, ShapeSlicer as ShapeSlicer)
|
|
23
18
|
|
|
19
|
+
# isort: split
|
|
24
20
|
from mapFolding._theSSOT import packageSettings as packageSettings
|
|
25
21
|
|
|
22
|
+
# isort: split
|
|
26
23
|
from mapFolding.beDRY import (
|
|
27
|
-
getConnectionGraph as getConnectionGraph,
|
|
28
|
-
getLeavesTotal as getLeavesTotal,
|
|
29
|
-
getTaskDivisions as getTaskDivisions,
|
|
30
|
-
makeDataContainer as makeDataContainer,
|
|
31
|
-
setProcessorLimit as setProcessorLimit,
|
|
24
|
+
defineProcessorLimit as defineProcessorLimit, getConnectionGraph as getConnectionGraph,
|
|
25
|
+
getLeavesTotal as getLeavesTotal, getTaskDivisions as getTaskDivisions, makeDataContainer as makeDataContainer,
|
|
32
26
|
validateListDimensions as validateListDimensions)
|
|
33
27
|
|
|
28
|
+
# isort: split
|
|
34
29
|
from mapFolding.filesystemToolkit import (
|
|
35
|
-
getFilenameFoldsTotal as getFilenameFoldsTotal,
|
|
36
|
-
|
|
37
|
-
getPathRootJobDEFAULT as getPathRootJobDEFAULT,
|
|
38
|
-
saveFoldsTotal as saveFoldsTotal,
|
|
30
|
+
getFilenameFoldsTotal as getFilenameFoldsTotal, getPathFilenameFoldsTotal as getPathFilenameFoldsTotal,
|
|
31
|
+
getPathRootJobDEFAULT as getPathRootJobDEFAULT, saveFoldsTotal as saveFoldsTotal,
|
|
39
32
|
saveFoldsTotalFAILearly as saveFoldsTotalFAILearly)
|
|
40
33
|
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
# isort: split
|
|
43
35
|
from mapFolding.oeis import (
|
|
44
|
-
dictionaryOEIS as dictionaryOEIS,
|
|
45
|
-
|
|
46
|
-
getFoldsTotalKnown as getFoldsTotalKnown,
|
|
47
|
-
getOEISids as getOEISids,
|
|
48
|
-
OEIS_for_n as OEIS_for_n,
|
|
36
|
+
dictionaryOEIS as dictionaryOEIS, dictionaryOEISMapFolding as dictionaryOEISMapFolding,
|
|
37
|
+
getFoldsTotalKnown as getFoldsTotalKnown, getOEISids as getOEISids, OEIS_for_n as OEIS_for_n,
|
|
49
38
|
oeisIDfor_n as oeisIDfor_n)
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
from cytoolz.dicttoolz import valfilter
|
|
3
|
+
from functools import cache
|
|
4
|
+
from gmpy2 import bit_flip, bit_mask, bit_test, is_even
|
|
5
|
+
from hunterMakesPy import raiseIfNone
|
|
6
|
+
from mapFolding import decreasing
|
|
7
|
+
from mapFolding._e import dimensionNearestTail, dimensionNearest首, howManyDimensionsHaveOddParity, leafOrigin, 零
|
|
8
|
+
from mapFolding._e.algorithms.iff import getCreasePost, ImaOddLeaf
|
|
9
|
+
from mapFolding._e.dataBaskets import EliminationState
|
|
10
|
+
from math import log2, prod
|
|
11
|
+
from pprint import pprint
|
|
12
|
+
|
|
13
|
+
def getDictionaryAddends4Next(state: EliminationState) -> dict[int, list[int]]:
|
|
14
|
+
@cache
|
|
15
|
+
def workhorse(mapShape: tuple[int, ...], dimensionsTotal: int, leavesTotal: int) -> dict[int, list[int]]:
|
|
16
|
+
dictionaryAddends: dict[int, list[int]] = {leafOrigin: [1]}
|
|
17
|
+
|
|
18
|
+
productsOfDimensions: list[int] = [prod(mapShape[0:dimension], start=1) for dimension in range(dimensionsTotal)]
|
|
19
|
+
|
|
20
|
+
for leaf in range(零, leavesTotal):
|
|
21
|
+
products下_leaf: list[int] = productsOfDimensions.copy()
|
|
22
|
+
|
|
23
|
+
theMaskOfDirectionality = bit_mask(leavesTotal - 零) & leaf
|
|
24
|
+
for index in range(dimensionsTotal):
|
|
25
|
+
if bit_test(theMaskOfDirectionality, index):
|
|
26
|
+
products下_leaf[index] *= -1
|
|
27
|
+
|
|
28
|
+
slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1 ^ 1
|
|
29
|
+
slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
|
|
30
|
+
|
|
31
|
+
if (slicingIndexStart == 1) and is_even(leaf):
|
|
32
|
+
slicingIndexStart += dimensionNearestTail(leaf)
|
|
33
|
+
|
|
34
|
+
products下_leaf = products下_leaf[slicingIndexStart:None]
|
|
35
|
+
products下_leaf = products下_leaf[0:slicingIndexEnd]
|
|
36
|
+
dictionaryAddends[leaf] = products下_leaf
|
|
37
|
+
|
|
38
|
+
return dictionaryAddends
|
|
39
|
+
return workhorse(state.mapShape, state.dimensionsTotal, state.leavesTotal)
|
|
40
|
+
|
|
41
|
+
def getDictionaryAddends4Prior(state: EliminationState) -> dict[int, list[int]]:
|
|
42
|
+
@cache
|
|
43
|
+
def workhorse(mapShape: tuple[int, ...], dimensionsTotal: int, leavesTotal: int) -> dict[int, list[int]]:
|
|
44
|
+
dictionaryAddends: dict[int, list[int]] = {leafOrigin: [], 零: [-1]}
|
|
45
|
+
|
|
46
|
+
productsOfDimensions: list[int] = [prod(mapShape[0:dimension], start=1) for dimension in range(dimensionsTotal)]
|
|
47
|
+
|
|
48
|
+
for leaf in range(leavesTotal + decreasing, 1, decreasing):
|
|
49
|
+
products下_leaf: list[int] = productsOfDimensions.copy()
|
|
50
|
+
|
|
51
|
+
theMaskOfDirectionality = bit_mask(leavesTotal - 零) & leaf
|
|
52
|
+
for index in range(dimensionsTotal):
|
|
53
|
+
if bit_test(theMaskOfDirectionality, index):
|
|
54
|
+
products下_leaf[index] *= -1
|
|
55
|
+
|
|
56
|
+
slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1
|
|
57
|
+
slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
|
|
58
|
+
|
|
59
|
+
if (slicingIndexStart == 1) and is_even(leaf):
|
|
60
|
+
slicingIndexStart += dimensionNearestTail(leaf)
|
|
61
|
+
|
|
62
|
+
products下_leaf = products下_leaf[slicingIndexStart:None]
|
|
63
|
+
products下_leaf = products下_leaf[0:slicingIndexEnd]
|
|
64
|
+
dictionaryAddends[leaf] = products下_leaf
|
|
65
|
+
|
|
66
|
+
return dictionaryAddends
|
|
67
|
+
return workhorse(state.mapShape, state.dimensionsTotal, state.leavesTotal)
|
|
68
|
+
|
|
69
|
+
if __name__ == '__main__':
|
|
70
|
+
state = EliminationState((2,) * 5)
|
|
71
|
+
|
|
72
|
+
dictionaryAddends4Next: dict[int, list[int]] = getDictionaryAddends4Next(state)
|
|
73
|
+
dictionaryAddends4Prior: dict[int, list[int]] = getDictionaryAddends4Prior(state)
|
|
74
|
+
|
|
75
|
+
printThis = False
|
|
76
|
+
|
|
77
|
+
for leaf in range(state.leavesTotal):
|
|
78
|
+
dictionaryNextCreaseLeafV0: dict[int, int | None] = {dimension: getCreasePost(state.mapShape, leaf, dimension) for dimension in range(state.dimensionsTotal)}
|
|
79
|
+
listAddendLeaves = sorted([leaf + addend for addend in dictionaryAddends4Next[leaf]])
|
|
80
|
+
if printThis:
|
|
81
|
+
print(leaf, end='\t')
|
|
82
|
+
print(leaf)
|
|
83
|
+
for indexAddend, leafW in enumerate(listAddendLeaves):
|
|
84
|
+
if leafW > leaf:
|
|
85
|
+
# NOTE parity of leaf is ALWAYS even on this branch
|
|
86
|
+
# continue
|
|
87
|
+
dimension = next(dim for dim, creaseLeaf in dictionaryNextCreaseLeafV0.items() if creaseLeaf == leafW)
|
|
88
|
+
if printThis:
|
|
89
|
+
print(ImaOddLeaf(state.mapShape, leaf, dimension), end='\t')
|
|
90
|
+
print(leafW in dictionaryNextCreaseLeafV0.values(), end='\t')
|
|
91
|
+
print('\t', indexAddend, leafW, dictionaryNextCreaseLeafV0, len(listAddendLeaves), listAddendLeaves, leafW==dictionaryNextCreaseLeafV0[indexAddend+1 + (state.dimensionsTotal - 1 - len(listAddendLeaves))])
|
|
92
|
+
else:
|
|
93
|
+
# NOTE parity of leaf is ALWAYS odd on this branch
|
|
94
|
+
# holy fuck, I've had all of this data for weeks but didn't realize it was huge.
|
|
95
|
+
# continue
|
|
96
|
+
dictionaryNextCreaseLeafW: dict[int, int | None] = {dimension: getCreasePost(state.mapShape, leafW, dimension) for dimension in range(state.dimensionsTotal)}
|
|
97
|
+
dimension = next(dim for dim, creaseLeaf in dictionaryNextCreaseLeafW.items() if creaseLeaf == leaf)
|
|
98
|
+
if printThis:
|
|
99
|
+
print(ImaOddLeaf(state.mapShape, leaf, dimension), end='\t')
|
|
100
|
+
print(leaf in dictionaryNextCreaseLeafW.values(), end='\t')
|
|
101
|
+
|
|
102
|
+
if printThis:
|
|
103
|
+
print()
|
|
104
|
+
|
|
105
|
+
printThis = False
|
|
106
|
+
|
|
107
|
+
dictionaryListNextCreaseLeaf: dict[int, list[int | None]] = {leaf: [] for leaf in range(state.leavesTotal)}
|
|
108
|
+
dictionaryNextCreaseLeaf: dict[int, dict[int, int | None]] = {leaf: {} for leaf in range(state.leavesTotal)}
|
|
109
|
+
for leaf in range(state.leavesTotal):
|
|
110
|
+
dictionaryListNextCreaseLeaf[leaf] = list(dictionaryNextCreaseLeaf[leaf].values())
|
|
111
|
+
dictionaryNextCreaseLeaf[leaf] = {dimension: getCreasePost(state.mapShape, leaf, dimension) for dimension in range(state.dimensionsTotal)}
|
|
112
|
+
dictionaryNextCreaseLeaf[leaf] = valfilter(bool, dictionaryNextCreaseLeaf[leaf])
|
|
113
|
+
listLeavesNextAndPriorInSequence = valfilter(lambda flipped: flipped > leaf, {dimension: bit_flip(leaf, dimension) for dimension in range(state.dimensionsTotal)})
|
|
114
|
+
if printThis:
|
|
115
|
+
print(leaf, len(dictionaryNextCreaseLeaf[leaf]), dictionaryNextCreaseLeaf[leaf], dictionaryNextCreaseLeaf[leaf] == listLeavesNextAndPriorInSequence, sep='\t')
|
|
116
|
+
|
|
117
|
+
printThis = False
|
|
118
|
+
|
|
119
|
+
for leaf in range(state.leavesTotal):
|
|
120
|
+
listAddendLeaves = [leaf + addend for addend in dictionaryAddends4Next[leaf]]
|
|
121
|
+
listAddendPriorLeaves = [leaf + addend for addend in dictionaryAddends4Prior[leaf]]
|
|
122
|
+
list1 = list(dict.fromkeys([*listAddendLeaves, *listAddendPriorLeaves]))
|
|
123
|
+
if len(list1) < state.dimensionsTotal and 0 < leaf:
|
|
124
|
+
index = int(log2(leaf))
|
|
125
|
+
list1.insert(index, 0)
|
|
126
|
+
|
|
127
|
+
listLeavesNextAndPriorInSequence = [int(bit_flip(leaf, dimension)) for dimension in range(state.dimensionsTotal)]
|
|
128
|
+
|
|
129
|
+
if leaf == leafOrigin:
|
|
130
|
+
listLeavesNext = [1]
|
|
131
|
+
listLeavesPrior = []
|
|
132
|
+
else:
|
|
133
|
+
slicingIndexStart: int = howManyDimensionsHaveOddParity(leaf) & 1 ^ 1
|
|
134
|
+
slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
|
|
135
|
+
|
|
136
|
+
if (slicingIndexStart == 1) and is_even(leaf):
|
|
137
|
+
slicingIndexStart += dimensionNearestTail(leaf)
|
|
138
|
+
listLeavesNext = listLeavesNextAndPriorInSequence[slicingIndexStart: slicingIndexEnd]
|
|
139
|
+
|
|
140
|
+
slicingIndexStart = howManyDimensionsHaveOddParity(leaf) & 1
|
|
141
|
+
slicingIndexEnd = dimensionNearest首(leaf) * (slicingIndexStart ^ 1) or None
|
|
142
|
+
|
|
143
|
+
if (slicingIndexStart == 1) and is_even(leaf):
|
|
144
|
+
slicingIndexStart += dimensionNearestTail(leaf)
|
|
145
|
+
listLeavesPrior = listLeavesNextAndPriorInSequence[slicingIndexStart: slicingIndexEnd]
|
|
146
|
+
|
|
147
|
+
if leaf == 1:
|
|
148
|
+
listLeavesPrior = [0]
|
|
149
|
+
|
|
150
|
+
if printThis:
|
|
151
|
+
print(leaf, listAddendLeaves==listLeavesNext, listAddendPriorLeaves==listLeavesPrior, listLeavesNextAndPriorInSequence, sep='\t', end='\n')
|
|
152
|
+
else:
|
|
153
|
+
if printThis:
|
|
154
|
+
print(leaf, leaf.bit_count() - 1 & 1, dimensionNearestTail(leaf), sep='\t', end='\n')
|
|
155
|
+
print(leaf, listAddendLeaves, listAddendPriorLeaves, listLeavesNextAndPriorInSequence, sep='\n', end='\n\n')
|
|
156
|
+
print(leaf, listLeavesNextAndPriorInSequence, sorted(list1) == sorted(listLeavesNextAndPriorInSequence), sep='\t', end='\n')
|
|
157
|
+
print(leaf, list1, listLeavesNextAndPriorInSequence, sorted(list1), sorted(listLeavesNextAndPriorInSequence), sep='\n', end='\n\n')
|
|
158
|
+
|
|
159
|
+
printThis = False
|
|
160
|
+
|
|
161
|
+
creasesByDimension: dict[int, list[tuple[int, int]]] = {dimension: [] for dimension in range(state.dimensionsTotal)}
|
|
162
|
+
for dimension in range(state.dimensionsTotal):
|
|
163
|
+
for leaf in range(state.leavesTotal):
|
|
164
|
+
leafW = dictionaryNextCreaseLeaf[leaf].get(dimension)
|
|
165
|
+
if leafW is not None:
|
|
166
|
+
creasesByDimension[dimension].append((leaf, leafW))
|
|
167
|
+
if printThis:
|
|
168
|
+
pprint(creasesByDimension, width=140, compact=True)
|
|
169
|
+
|
|
170
|
+
printThis = False
|
|
171
|
+
|
|
172
|
+
for qq, ww in dictionaryListNextCreaseLeaf.items():
|
|
173
|
+
if printThis:
|
|
174
|
+
print(qq, *ww, sep='\t')
|
|
175
|
+
|
|
176
|
+
printThis = True
|
|
177
|
+
|
|
178
|
+
for leaf, dd in dictionaryNextCreaseLeaf.items():
|
|
179
|
+
tt = True
|
|
180
|
+
if printThis:
|
|
181
|
+
print(leaf, len(dd), sep='\t', end='\t')
|
|
182
|
+
for nn in dd.values():
|
|
183
|
+
qq = dictionaryNextCreaseLeaf[raiseIfNone(nn)]
|
|
184
|
+
tt &= len(dd) == 1+ len(qq)
|
|
185
|
+
if printThis:
|
|
186
|
+
print(len(qq), end='\t')
|
|
187
|
+
if printThis:
|
|
188
|
+
print(bool(tt))
|
|
189
|
+
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# pyright: basic
|
|
2
|
+
# ruff: noqa
|
|
3
|
+
from functools import partial
|
|
4
|
+
from itertools import pairwise, permutations, product as CartesianProduct
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from pprint import pprint
|
|
7
|
+
from toolz import compose
|
|
8
|
+
import numpy
|
|
9
|
+
import pickle
|
|
10
|
+
|
|
11
|
+
fileStem = "p2d4"
|
|
12
|
+
pathFilename: Path = Path(f"/apps/mapFolding/Z0Z_notes/{fileStem}.csv")
|
|
13
|
+
|
|
14
|
+
headerLength = 182
|
|
15
|
+
headerLength = 86
|
|
16
|
+
headerLength = 38
|
|
17
|
+
data2Dn: str = pathFilename.read_text(encoding="utf-8")[headerLength:None]
|
|
18
|
+
|
|
19
|
+
def parseLineToIntegers(textLine: str) -> list[int]:
|
|
20
|
+
return [int(numberText) for numberText in textLine.strip().split(",")]
|
|
21
|
+
|
|
22
|
+
listFoldings2Dn: list[list[int]] = []
|
|
23
|
+
|
|
24
|
+
for textLine in data2Dn.splitlines():
|
|
25
|
+
sequenceIntegers = parseLineToIntegers(textLine)
|
|
26
|
+
listFoldings2Dn.append(sequenceIntegers)
|
|
27
|
+
|
|
28
|
+
arrayFoldings2Dn = numpy.array(listFoldings2Dn, dtype=numpy.uint8)
|
|
29
|
+
|
|
30
|
+
pathFilename.with_name(f'listFoldings{fileStem}.pkl').write_bytes(pickle.dumps(listFoldings2Dn))
|
|
31
|
+
pathFilename.with_name(f'arrayFoldings{fileStem}.pkl').write_bytes(pickle.dumps(arrayFoldings2Dn))
|
|
32
|
+
|
|
33
|
+
dictionaryDifferencesReverse: dict[int, list[int]] = {}
|
|
34
|
+
|
|
35
|
+
for rowIndex in range(arrayFoldings2Dn.shape[0]):
|
|
36
|
+
for columnIndex in range(1, arrayFoldings2Dn.shape[1]):
|
|
37
|
+
valueOriginal = int(arrayFoldings2Dn[rowIndex, columnIndex])
|
|
38
|
+
valueLeft = int(arrayFoldings2Dn[rowIndex, columnIndex - 1])
|
|
39
|
+
differenceToLeft = valueLeft - valueOriginal
|
|
40
|
+
|
|
41
|
+
if valueOriginal not in dictionaryDifferencesReverse:
|
|
42
|
+
dictionaryDifferencesReverse[valueOriginal] = []
|
|
43
|
+
|
|
44
|
+
if differenceToLeft not in dictionaryDifferencesReverse[valueOriginal]:
|
|
45
|
+
dictionaryDifferencesReverse[valueOriginal].append(differenceToLeft)
|
|
46
|
+
|
|
47
|
+
for valueOriginal in dictionaryDifferencesReverse:
|
|
48
|
+
dictionaryDifferencesReverse[valueOriginal].sort(key=abs)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
pprint(dictionaryDifferencesReverse)
|
|
52
|
+
|
|
53
|
+
l5 = listLeft = [8] + [8, 16] + [2]
|
|
54
|
+
r4 = listRight = [8] + [8, 16]
|
|
55
|
+
|
|
56
|
+
l6 = listLeft = [8] + [8, 16] # 2,6 is on the list of 3,2.
|
|
57
|
+
# However, to concatenate leafLeft,3,2,6 with 2,6,7,leafRight, leafLeft+4 == leafRight ,1,3,2,6,7,5, ,11,3,2,6,7,15, ,19,3,2,6,7,23, ,35,3,2,6,7,39,
|
|
58
|
+
r7 = listRight = [8] + [8, 16] + [-2]
|
|
59
|
+
# 7: [-2, -4, 8, 16, 32],
|
|
60
|
+
l=6; r=7
|
|
61
|
+
|
|
62
|
+
l8 = listLeft = [1] + [1, 2]
|
|
63
|
+
r40 = listRight = [1] + [1, 2] + [16]
|
|
64
|
+
|
|
65
|
+
l16 = listLeft = [1] + [1, 2, 4]
|
|
66
|
+
r48 = listRight = [1] + [1, 2, 4] + [-16] # 48 > 16
|
|
67
|
+
|
|
68
|
+
l56 = listLeft = [1] + [1, 2] + [-16]
|
|
69
|
+
r24 = listRight = [1] + [1, 2] #24,16 is on the list of 8,40.
|
|
70
|
+
|
|
71
|
+
l9 = listLeft = [16] + [16] + [2]
|
|
72
|
+
r8 = listRight = [16] + [16]
|
|
73
|
+
l=9; r=8
|
|
74
|
+
|
|
75
|
+
l52 = listLeft = [1] + [1] + [-16]
|
|
76
|
+
r20 = listRight = [1] + [1]
|
|
77
|
+
# NOTE appends, below.
|
|
78
|
+
l=52; r=20
|
|
79
|
+
# 16, 21, 22, 28
|
|
80
|
+
# 36, 53, 54, 60
|
|
81
|
+
|
|
82
|
+
l4 = listLeft = [1] + [1]
|
|
83
|
+
r36 = listRight = [1] + [1] + [16]
|
|
84
|
+
l=4; r=36
|
|
85
|
+
# 37, 38, 32, 44, 52
|
|
86
|
+
# +1, +2, -4, +8, +16
|
|
87
|
+
|
|
88
|
+
l10 = listLeft = [16] + [16]
|
|
89
|
+
r11 = listRight = [16] + [16] + [-2]
|
|
90
|
+
# NOTE appends, below.
|
|
91
|
+
l=10; r=11
|
|
92
|
+
# 9, 15, 3, 27, 43
|
|
93
|
+
# -2, +4, -8, +16, +32
|
|
94
|
+
|
|
95
|
+
l3 = listLeft = [4] + [4, 8, 16] + [-2] # 3 > 2
|
|
96
|
+
r2 = listRight = [4] + [4, 8, 16]
|
|
97
|
+
l=3; r=2
|
|
98
|
+
|
|
99
|
+
ll = []
|
|
100
|
+
for index in range(1, len(listLeft)):
|
|
101
|
+
ll.append(l + sum(listLeft[0:index]))
|
|
102
|
+
rr = []
|
|
103
|
+
for index in range(1, len(listRight)):
|
|
104
|
+
rr.append(r + sum(listRight[0:index]))
|
|
105
|
+
|
|
106
|
+
if l > r:
|
|
107
|
+
ll.append(l + listLeft[-1])
|
|
108
|
+
rr.append(r + sum(listRight[0:None]))
|
|
109
|
+
else:
|
|
110
|
+
ll.append(l + sum(listLeft[0:None]))
|
|
111
|
+
rr.append(r + listRight[-1])
|
|
112
|
+
|
|
113
|
+
if (l == 4) and (r == 36): # NOTE idk.
|
|
114
|
+
rr.append(44)
|
|
115
|
+
|
|
116
|
+
if (l == 6) and (r == 7): # 2,6 is on the list of 3,2.
|
|
117
|
+
ll.append(2)
|
|
118
|
+
|
|
119
|
+
if (l == 9) and (r == 8): # NOTE I can't explain 13. 9+4=13.
|
|
120
|
+
ll.append(13)
|
|
121
|
+
|
|
122
|
+
if (l == 10) and (r == 11): # NOTE similar to 9,8.
|
|
123
|
+
rr.append(15) # An additional, stand-alone +4. 11+4=15.
|
|
124
|
+
ll.append(14) # An additional, stand-alone +4. 10+4=14.
|
|
125
|
+
ll.append(2) # 2,10 is on the list of 3,2.
|
|
126
|
+
|
|
127
|
+
if (l == 52) and (r == 20): # 20,16 is on the list of 16,48.
|
|
128
|
+
rr.append(16)
|
|
129
|
+
rr.append(28)
|
|
130
|
+
ll.append(60)
|
|
131
|
+
|
|
132
|
+
if (l == 56) and (r == 24): # 24,16 is on the list of 16,48.
|
|
133
|
+
rr.append(16)
|
|
134
|
+
|
|
135
|
+
# infix: str = f",{l},{r}"
|
|
136
|
+
# total = 0
|
|
137
|
+
# for left, right in CartesianProduct(ll, rr):
|
|
138
|
+
# this: str = f",{left}{infix},{right},"
|
|
139
|
+
# count = data2Dn.count(this)
|
|
140
|
+
# total += count
|
|
141
|
+
# print(f"{count}\t{this}")
|
|
142
|
+
|
|
143
|
+
# print(total)
|
|
File without changes
|