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
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# ruff: noqa: E701
|
|
2
|
+
from mapFolding import (
|
|
3
|
+
defineProcessorLimit, getPathFilenameFoldsTotal, packageSettings, saveFoldsTotal, saveFoldsTotalFAILearly)
|
|
4
|
+
from mapFolding._e import mapShapeIs2上nDimensions
|
|
5
|
+
from mapFolding._e.dataBaskets import EliminationState
|
|
6
|
+
from os import PathLike
|
|
7
|
+
from pathlib import Path, PurePath
|
|
8
|
+
|
|
9
|
+
def eliminateFolds(mapShape: tuple[int, ...] | None = None
|
|
10
|
+
, state: EliminationState | None = None
|
|
11
|
+
, pathLikeWriteFoldsTotal: PathLike[str] | PurePath | None = None
|
|
12
|
+
# , * # TODO improve `standardizedEqualToCallableReturn` so it will work with keyword arguments
|
|
13
|
+
, CPUlimit: bool | float | int | None = None # noqa: FBT001
|
|
14
|
+
, flow: str | None = None
|
|
15
|
+
) -> int:
|
|
16
|
+
"""
|
|
17
|
+
Compute foldsTotal by elimination.
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
mapShape : tuple[int, ...] | None = None
|
|
22
|
+
Tuple of integers representing the dimensions of the map to be folded. Mathematicians almost always use the term
|
|
23
|
+
"dimensions", such as in the seminal paper, "Multi-dimensional map-folding". Nevertheless, in contemporary Python
|
|
24
|
+
programming, in the context of these algorithms, the term "shape" makes it much easier to align the mathematics with the
|
|
25
|
+
syntax of the programming language.
|
|
26
|
+
pathLikeWriteFoldsTotal : PathLike[str] | PurePath | None = None
|
|
27
|
+
A filename, a path of only directories, or a path with directories and a filename to which `countFolds` will write the
|
|
28
|
+
value of `foldsTotal`. If `pathLikeWriteFoldsTotal` is a path of only directories, `countFolds` creates a filename based
|
|
29
|
+
on the map dimensions.
|
|
30
|
+
CPUlimit : bool | float | int | None = None
|
|
31
|
+
If relevant, whether and how to limit the number of processors `countFolds` will use.
|
|
32
|
+
- `False`, `None`, or `0`: No limits on processor usage; uses all available processors. All other values will
|
|
33
|
+
potentially limit processor usage.
|
|
34
|
+
- `True`: Yes, limit the processor usage; limits to 1 processor.
|
|
35
|
+
- `int >= 1`: The maximum number of available processors to use.
|
|
36
|
+
- `0 < float < 1`: The maximum number of processors to use expressed as a fraction of available processors.
|
|
37
|
+
- `-1 < float < 0`: The number of processors to *not* use expressed as a fraction of available processors.
|
|
38
|
+
- `int <= -1`: The number of available processors to *not* use.
|
|
39
|
+
- If the value of `CPUlimit` is a `float` greater than 1 or less than -1, `countFolds` truncates the value to an `int`
|
|
40
|
+
with the same sign as the `float`.
|
|
41
|
+
flow : str | None = None
|
|
42
|
+
My stupid way of selecting the version of the algorithm to use in the computation.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
foldsTotal : int
|
|
47
|
+
Number of distinct ways to fold a map of the given dimensions.
|
|
48
|
+
"""
|
|
49
|
+
#-------- state ---------------------------------------------------------------------
|
|
50
|
+
if not state:
|
|
51
|
+
if not mapShape:
|
|
52
|
+
message: str = (f"""I received these values:
|
|
53
|
+
`{mapShape = }` and `{state = }`,
|
|
54
|
+
but I was unable to select a map of which to count the folds."""
|
|
55
|
+
)
|
|
56
|
+
raise ValueError(message)
|
|
57
|
+
state = EliminationState(mapShape)
|
|
58
|
+
|
|
59
|
+
#-------- concurrency limit -----------------------------------------------------
|
|
60
|
+
|
|
61
|
+
concurrencyLimit: int = defineProcessorLimit(CPUlimit, packageSettings.concurrencyPackage)
|
|
62
|
+
|
|
63
|
+
#-------- memorialization instructions ---------------------------------------------
|
|
64
|
+
|
|
65
|
+
if pathLikeWriteFoldsTotal is not None:
|
|
66
|
+
pathFilenameFoldsTotal: Path | None = getPathFilenameFoldsTotal(state.mapShape, pathLikeWriteFoldsTotal)
|
|
67
|
+
saveFoldsTotalFAILearly(pathFilenameFoldsTotal)
|
|
68
|
+
else:
|
|
69
|
+
pathFilenameFoldsTotal = None
|
|
70
|
+
|
|
71
|
+
#-------- Algorithm version -----------------------------------------------------
|
|
72
|
+
match flow:
|
|
73
|
+
case 'constraintPropagation': from mapFolding._e.algorithms.constraintPropagation import doTheNeedful # noqa: PLC0415
|
|
74
|
+
case 'crease':
|
|
75
|
+
if mapShapeIs2上nDimensions(state.mapShape, youMustBeDimensionsTallToPinThis=4):
|
|
76
|
+
from mapFolding._e.algorithms.eliminationCrease import doTheNeedful # noqa: PLC0415
|
|
77
|
+
else:
|
|
78
|
+
message: str = "As of 25 December 2025, this algorithm only works on mapShape = (2,) * n, n >= 4. Did I forget to update this barrier?"
|
|
79
|
+
raise NotImplementedError(message)
|
|
80
|
+
case 'elimination' | _: from mapFolding._e.algorithms.elimination import doTheNeedful # noqa: PLC0415
|
|
81
|
+
|
|
82
|
+
state = doTheNeedful(state, concurrencyLimit)
|
|
83
|
+
|
|
84
|
+
#-------- Follow memorialization instructions ---------------------------------------------
|
|
85
|
+
|
|
86
|
+
if pathFilenameFoldsTotal is not None:
|
|
87
|
+
saveFoldsTotal(pathFilenameFoldsTotal, state.foldsTotal)
|
|
88
|
+
|
|
89
|
+
return state.foldsTotal
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""Use data baskets to easily move data, including values that affect computations: don't limit yourself to one data basket per algorithm."""
|
|
2
|
+
from mapFolding import getLeavesTotal
|
|
3
|
+
from mapFolding._e import (
|
|
4
|
+
Folding, getProductsOfDimensions, getSumsOfProductsOfDimensions, getSumsOfProductsOfDimensionsNearest首, Leaf,
|
|
5
|
+
LeafOrPileRangeOfLeaves, PermutationSpace, Pile)
|
|
6
|
+
from math import prod
|
|
7
|
+
import dataclasses
|
|
8
|
+
|
|
9
|
+
@dataclasses.dataclass(slots=True)
|
|
10
|
+
class EliminationState:
|
|
11
|
+
"""Computational state for algorithms that compute `foldsTotal` by elimination.
|
|
12
|
+
|
|
13
|
+
This data basket stores both mutable workbench fields (which change during the search) and
|
|
14
|
+
precomputed constants derived from `mapShape` (which do not change after `__post_init__`).
|
|
15
|
+
|
|
16
|
+
Attributes
|
|
17
|
+
----------
|
|
18
|
+
mapShape : tuple[int, ...]
|
|
19
|
+
Dimension lengths of the map being analyzed.
|
|
20
|
+
groupsOfFolds : int = 0
|
|
21
|
+
Count of distinct `Folding` pattern groups found so far.
|
|
22
|
+
listFolding : list[`Folding`]
|
|
23
|
+
List of `Folding` patterns found.
|
|
24
|
+
listPermutationSpace : list[`PermutationSpace`]
|
|
25
|
+
List of exclusive `PermutationSpace` dictionaries.
|
|
26
|
+
pile : `Pile` = -1
|
|
27
|
+
The current `pile` on the workbench.
|
|
28
|
+
permutationSpace : `PermutationSpace`
|
|
29
|
+
The current `PermutationSpace` dictionary on the workbench.
|
|
30
|
+
Theorem2Multiplier : int = 1
|
|
31
|
+
Multiplier applied by Theorem 2 optimizations.
|
|
32
|
+
Theorem3Multiplier : int = 1
|
|
33
|
+
Multiplier applied by Theorem 3 optimizations.
|
|
34
|
+
Theorem4Multiplier : int = 1
|
|
35
|
+
Multiplier applied by Theorem 4 optimizations.
|
|
36
|
+
dimensionsTotal : int
|
|
37
|
+
Unchanging total number of axes in `mapShape`.
|
|
38
|
+
foldingCheckSum : int
|
|
39
|
+
Unchanging triangular-number check-sum for a valid `Folding`.
|
|
40
|
+
leafLast : `Leaf`
|
|
41
|
+
Unchanging 0-indexed largest `leaf` value.
|
|
42
|
+
leavesTotal : int
|
|
43
|
+
Unchanging total number of leaves in the map.
|
|
44
|
+
pileLast : `Pile`
|
|
45
|
+
Unchanging 0-indexed largest `pile` value.
|
|
46
|
+
pilesTotal : int
|
|
47
|
+
Unchanging total number of piles in the map.
|
|
48
|
+
productsOfDimensions : tuple[int, ...]
|
|
49
|
+
Unchanging products of dimension lengths, from the empty product through all dimensions.
|
|
50
|
+
sumsOfProductsOfDimensions : tuple[int, ...]
|
|
51
|
+
Unchanging sums of `productsOfDimensions` from the head.
|
|
52
|
+
sumsOfProductsOfDimensionsNearest首 : tuple[int, ...]
|
|
53
|
+
Unchanging sums of `productsOfDimensions` from the head `首`.
|
|
54
|
+
首 : int
|
|
55
|
+
Unchanging single-base positional-numeral value of the first out-of-bounds Cartesian coordinate.
|
|
56
|
+
|
|
57
|
+
Notes
|
|
58
|
+
-----
|
|
59
|
+
The computed `foldsTotal` is `groupsOfFolds * leavesTotal * Theorem2Multiplier * Theorem3Multiplier * Theorem4Multiplier`.
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
mapShape: tuple[int, ...] = dataclasses.field(init=True)
|
|
64
|
+
"""Dimensions of the map being analyzed for folding patterns."""
|
|
65
|
+
|
|
66
|
+
groupsOfFolds: int = 0
|
|
67
|
+
"""`foldsTotal` is divisible by `leavesTotal`; the algorithm counts each `Folding` that represents a group of `leavesTotal`-many foldings."""
|
|
68
|
+
|
|
69
|
+
listFolding: list[Folding] = dataclasses.field(default_factory=list[Folding], init=True)
|
|
70
|
+
"""A list of `Folding` patterns found."""
|
|
71
|
+
listPermutationSpace: list[PermutationSpace] = dataclasses.field(default_factory=list[PermutationSpace], init=True)
|
|
72
|
+
"""A list of dictionaries (`{pile: leaf or possible leaves}`) that each define an exclusive permutation space: no overlap between dictionaries."""
|
|
73
|
+
|
|
74
|
+
pile: Pile = -1
|
|
75
|
+
"""The `pile` on the workbench."""
|
|
76
|
+
permutationSpace: PermutationSpace = dataclasses.field(default_factory=dict[Pile, LeafOrPileRangeOfLeaves], init=True)
|
|
77
|
+
"""The `permutationSpace` dictionary (`{pile: leaf or possible leaves}`) on the workbench."""
|
|
78
|
+
|
|
79
|
+
Theorem2aMultiplier: int = 1
|
|
80
|
+
Theorem2Multiplier: int = 1
|
|
81
|
+
Theorem3Multiplier: int = 1
|
|
82
|
+
Theorem4Multiplier: int = 1
|
|
83
|
+
|
|
84
|
+
dimensionsTotal: int = dataclasses.field(init=False)
|
|
85
|
+
"""Unchanging total number of dimensions in the map."""
|
|
86
|
+
foldingCheckSum: int = dataclasses.field(init=False)
|
|
87
|
+
"""Unchanging triangular number check-sum for a valid `Folding`."""
|
|
88
|
+
leafLast: Leaf = dataclasses.field(init=False)
|
|
89
|
+
"""Unchanging 0-indexed largest `leaf` in a `Folding`."""
|
|
90
|
+
leavesTotal: int = dataclasses.field(init=False)
|
|
91
|
+
"""Unchanging total number of leaves in the map."""
|
|
92
|
+
pileLast: Pile = dataclasses.field(init=False)
|
|
93
|
+
"""Unchanging 0-indexed final `pile` in a `Folding`."""
|
|
94
|
+
pilesTotal: int = dataclasses.field(init=False)
|
|
95
|
+
"""Unchanging total number of piles in the map."""
|
|
96
|
+
productsOfDimensions: tuple[int, ...] = dataclasses.field(init=False)
|
|
97
|
+
"""Unchanging list of products of map dimensions from the product of no dimensions, `[0]`, to the product of all dimensions, `[dimensionsTotal + inclusive]`."""
|
|
98
|
+
sumsOfProductsOfDimensions: tuple[int, ...] = dataclasses.field(init=False)
|
|
99
|
+
"""Unchanging list of sums of products of map dimensions from the sum of no products, `[0]`, to the sum of all products, `[len(productsOfDimensions) + inclusive]`."""
|
|
100
|
+
sumsOfProductsOfDimensionsNearest首: tuple[int, ...] = dataclasses.field(init=False)
|
|
101
|
+
"""Unchanging list of sums of products of map dimensions starting from the head `首`, from the sum of no products, `[0]`, to the sum of all products, `[len(productsOfDimensions) + inclusive]`."""
|
|
102
|
+
首: int = dataclasses.field(init=False)
|
|
103
|
+
"""Unchanging single-base positional-numeral value of the Cartesian coordinates that are the first to be _out-of-bounds_ for the `mapShape`."""
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def foldsTotal(self) -> int:
|
|
107
|
+
"""The computed number of distinct `Folding` patterns for this `mapShape`."""
|
|
108
|
+
return prod((self.groupsOfFolds, self.Theorem2aMultiplier, self.Theorem2Multiplier, self.Theorem3Multiplier, self.Theorem4Multiplier))
|
|
109
|
+
|
|
110
|
+
def __post_init__(self) -> None:
|
|
111
|
+
"""One-time computation of unchanging values."""
|
|
112
|
+
self.dimensionsTotal = len(self.mapShape)
|
|
113
|
+
self.leavesTotal = getLeavesTotal(self.mapShape)
|
|
114
|
+
if 0 < self.leavesTotal:
|
|
115
|
+
self.Theorem2aMultiplier = self.leavesTotal
|
|
116
|
+
self.leafLast = self.leavesTotal - 1
|
|
117
|
+
self.foldingCheckSum = self.leafLast * self.leavesTotal // 2 # https://en.wikipedia.org/wiki/Triangular_number
|
|
118
|
+
self.pilesTotal = self.leavesTotal
|
|
119
|
+
self.pileLast = self.pilesTotal - 1
|
|
120
|
+
self.首 = self.leavesTotal
|
|
121
|
+
self.productsOfDimensions = getProductsOfDimensions(self.mapShape)
|
|
122
|
+
self.sumsOfProductsOfDimensions = getSumsOfProductsOfDimensions(self.mapShape)
|
|
123
|
+
self.sumsOfProductsOfDimensionsNearest首 = getSumsOfProductsOfDimensionsNearest首(self.productsOfDimensions, self.dimensionsTotal, self.dimensionsTotal)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
# pyright: basic
|
|
3
|
+
from functools import partial
|
|
4
|
+
from itertools import filterfalse
|
|
5
|
+
from mapFolding import ansiColorReset, ansiColors, dictionaryOEISMapFolding, packageSettings
|
|
6
|
+
from mapFolding._e import PermutationSpace
|
|
7
|
+
from mapFolding._e.basecamp import eliminateFolds
|
|
8
|
+
from mapFolding._e.dataBaskets import EliminationState
|
|
9
|
+
from mapFolding._e.filters import between, extractPinnedLeaves
|
|
10
|
+
from mapFolding._e.pin2上nDimensions import (
|
|
11
|
+
pinLeavesDimensions0零一, pinLeavesDimension一, pinLeavesDimension二, pinLeavesDimension首二, pinPilesAtEnds, pinPile零Ante首零)
|
|
12
|
+
from os import PathLike
|
|
13
|
+
from pathlib import Path, PurePath
|
|
14
|
+
from tqdm import tqdm
|
|
15
|
+
import csv
|
|
16
|
+
import sys
|
|
17
|
+
import time
|
|
18
|
+
|
|
19
|
+
if __name__ == "__main__":
|
|
20
|
+
|
|
21
|
+
def _write() -> None:
|
|
22
|
+
sys.stdout.write(
|
|
23
|
+
f"{(match := foldsTotal == dictionaryOEISMapFolding[oeisID]['valuesKnown'][n])}\t"
|
|
24
|
+
f"{(ansiColors.YellowOnRed, ansiColors.GreenOnBlack)[match]}"
|
|
25
|
+
f"{n}\t"
|
|
26
|
+
# f"{mapShape}\t"
|
|
27
|
+
f"{foldsTotal}\t"
|
|
28
|
+
f"{dictionaryOEISMapFolding[oeisID]['valuesKnown'][n]}\t"
|
|
29
|
+
f"{time.perf_counter() - timeStart:.2f}\t"
|
|
30
|
+
f"{ansiColorReset}\n"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
pathLikeWriteFoldsTotal: PathLike[str] | PurePath | None = None
|
|
34
|
+
oeisID: str = ""
|
|
35
|
+
flow: str = ""
|
|
36
|
+
CPUlimit: bool | float | int | None = -2
|
|
37
|
+
state: EliminationState | None = None
|
|
38
|
+
|
|
39
|
+
flow = "constraintPropagation"
|
|
40
|
+
flow = "elimination"
|
|
41
|
+
flow = "crease"
|
|
42
|
+
|
|
43
|
+
oeisID: str = "A195646"
|
|
44
|
+
oeisID: str = "A000136"
|
|
45
|
+
oeisID: str = "A001416"
|
|
46
|
+
oeisID: str = "A001418"
|
|
47
|
+
oeisID: str = "A001415"
|
|
48
|
+
oeisID: str = "A001417"
|
|
49
|
+
|
|
50
|
+
sys.stdout.write(f"{ansiColors[int(oeisID, 36) % len(ansiColors)]}{oeisID} ")
|
|
51
|
+
sys.stdout.write(f"{ansiColors[int(flow, 36) % len(ansiColors)]}{flow}")
|
|
52
|
+
sys.stdout.write(ansiColorReset + "\n")
|
|
53
|
+
|
|
54
|
+
for n in range(6,7):
|
|
55
|
+
mapShape: tuple[int, ...] = dictionaryOEISMapFolding[oeisID]["getMapShape"](n)
|
|
56
|
+
if oeisID == "A001417" and n > 3:
|
|
57
|
+
state = EliminationState(mapShape)
|
|
58
|
+
# state = pinPilesAtEnds(state, 4)
|
|
59
|
+
state = pinPile零Ante首零(state)
|
|
60
|
+
state = pinLeavesDimensions0零一(state)
|
|
61
|
+
# state = pinLeavesDimension二(state)
|
|
62
|
+
# state = pinLeavesDimension首二(state)
|
|
63
|
+
|
|
64
|
+
timeStart = time.perf_counter()
|
|
65
|
+
foldsTotal: int = eliminateFolds(mapShape=mapShape, state=state, pathLikeWriteFoldsTotal=pathLikeWriteFoldsTotal, CPUlimit=CPUlimit, flow=flow)
|
|
66
|
+
|
|
67
|
+
_write()
|
|
68
|
+
|
|
69
|
+
r"""
|
|
70
|
+
title running && start "working" /B /HIGH /wait py -X faulthandler=0 -X tracemalloc=0 -X frozen_modules=on mapFolding\_e\easyRun\eliminateFolds.py & title I'm done
|
|
71
|
+
"""
|
|
72
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# ruff: noqa: T201, T203, D103, TC003, ERA001 # noqa: RUF100
|
|
2
|
+
# pyright: reportUnusedImport=false
|
|
3
|
+
from collections.abc import Callable, Iterable
|
|
4
|
+
from cytoolz.curried import map as toolz_map
|
|
5
|
+
from cytoolz.functoolz import compose
|
|
6
|
+
from gmpy2 import fac
|
|
7
|
+
from mapFolding._e import (
|
|
8
|
+
DOTvalues, getDictionaryConditionalLeafPredecessors, getDictionaryLeafDomains, getDictionaryPileRanges, getLeafDomain,
|
|
9
|
+
getLeavesCreaseAnte, getLeavesCreasePost, getPileRange, PermutationSpace, PileRangeOfLeaves)
|
|
10
|
+
from mapFolding._e.dataBaskets import EliminationState
|
|
11
|
+
from mapFolding._e.filters import extractPilesWithPileRangeOfLeaves
|
|
12
|
+
from mapFolding._e.pin2上nDimensions import (
|
|
13
|
+
pinLeavesDimensions0零一, pinLeavesDimension二, pinLeavesDimension首二, pinPilesAtEnds, pinPile零Ante首零)
|
|
14
|
+
from mapFolding._e.Z0Z_analysisPython.toolkit import verifyPinning2Dn
|
|
15
|
+
from math import prod
|
|
16
|
+
from pprint import pprint
|
|
17
|
+
import time
|
|
18
|
+
|
|
19
|
+
def printStatisticsPermutations(state: EliminationState) -> None:
|
|
20
|
+
def prodOfDOTvalues(listPileRangeOfLeaves: Iterable[PileRangeOfLeaves]) -> int:
|
|
21
|
+
return prod([pileRangeOfLeaves.bit_count() - 1 for pileRangeOfLeaves in listPileRangeOfLeaves])
|
|
22
|
+
permutationsPermutationSpaceTotal: Callable[[list[PermutationSpace]], int] = compose(sum, toolz_map(compose(prodOfDOTvalues, DOTvalues, extractPilesWithPileRangeOfLeaves)))
|
|
23
|
+
print(len(str(mm:=fac(state.leavesTotal))), mm, "Maximum permutations of leaves")
|
|
24
|
+
print(len(str(rr:=prod(toolz_map(len, filter(None, DOTvalues(getDictionaryPileRanges(state))))))), rr, "dictionaryPileRanges")
|
|
25
|
+
print(len(str(pp:=permutationsPermutationSpaceTotal(state.listPermutationSpace))), pp, "Pinning these leaves")
|
|
26
|
+
|
|
27
|
+
if __name__ == '__main__':
|
|
28
|
+
state = EliminationState((2,) * 6)
|
|
29
|
+
|
|
30
|
+
printThis = True
|
|
31
|
+
|
|
32
|
+
"""
|
|
33
|
+
4th order piles and leaves dimensions 0, 零, 一. 2d6.
|
|
34
|
+
11.42 seconds
|
|
35
|
+
2688492703286605023848766675550409414155249702868353306025321493319522402099200 permutations
|
|
36
|
+
len(state.listPermutationSpace)=3205
|
|
37
|
+
2537 surplus dictionaries: 79%
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
if printThis:
|
|
41
|
+
timeStart: float = time.perf_counter()
|
|
42
|
+
state: EliminationState = pinPile零Ante首零(state)
|
|
43
|
+
state: EliminationState = pinLeavesDimensions0零一(state)
|
|
44
|
+
print(f"{time.perf_counter() - timeStart:.2f}\tpinning")
|
|
45
|
+
verifyPinning2Dn(state)
|
|
46
|
+
print(f"{time.perf_counter() - timeStart:.2f}\tverifyPinning2Dn")
|
|
47
|
+
printStatisticsPermutations(state)
|
|
48
|
+
print(f"{len(state.listPermutationSpace)=}")
|
|
49
|
+
|
|
50
|
+
elif printThis:
|
|
51
|
+
state: EliminationState = pinLeavesDimension首二(state)
|
|
52
|
+
state: EliminationState = pinPilesAtEnds(state, 4)
|
|
53
|
+
print(state.sumsOfProductsOfDimensionsNearest首)
|
|
54
|
+
pprint(dictionaryPileRanges := getDictionaryPileRanges(state), width=200)
|
|
55
|
+
pprint(dictionaryLeafDomains := getDictionaryLeafDomains(state))
|
|
56
|
+
pprint(getDictionaryConditionalLeafPredecessors(state), width=260)
|
|
57
|
+
state: EliminationState = pinLeavesDimension二(state)
|
|
58
|
+
print(*getLeavesCreasePost(state, 22))
|
|
59
|
+
print(*getLeavesCreaseAnte(state, 53))
|
|
60
|
+
print(*(format(x, '06b') for x in getPileRange(state, 60)))
|
|
61
|
+
print(list(getLeafDomain(state, 37)))
|
|
62
|
+
pprint(state.listPermutationSpace)
|