diff --git a/.vscode/settings.json b/.vscode/settings.json index f776680..7dcf4c0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,5 @@ "**/*.pyc": true, "**/__pycache__": true }, - "python.pythonPath": "~/.local/share/virtualenvs/py-H3fe-p_n/bin/python" + "python.pythonPath": "/usr/local/bin/python3" } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index f776680..7dcf4c0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,5 @@ "**/*.pyc": true, "**/__pycache__": true }, - "python.pythonPath": "~/.local/share/virtualenvs/py-H3fe-p_n/bin/python" + "python.pythonPath": "/usr/local/bin/python3" } \ No newline at end of file diff --git a/Pipfile.lock b/Pipfile.lock index a61b507..77af3a5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "bacdafb02274e91e6b626d22d4b069ff8c1321beee335721e5163494e68fa35e" + "sha256": "dd38906e3fa8df87c340f55945eb46401419dcc038ec03944585ee39d9452cdb" }, "pipfile-spec": 6, "requires": { @@ -57,42 +57,48 @@ "index": "pypi", "version": "==1.2.0" }, + "numpy": { + "hashes": [ + "sha256:0cdbbaa30ae69281b18dd995d3079c4e552ad6d5426977f66b9a2a95f11f552a", + "sha256:2b0cca1049bd39d1879fa4d598624cafe82d35529c72de1b3d528d68031cdd95", + "sha256:31d3fe5b673e99d33d70cfee2ea8fe8dccd60f265c3ed990873a88647e3dd288", + "sha256:34dd4922aab246c39bf5df03ca653d6265e65971deca6784c956bf356bca6197", + "sha256:384e2dfa03da7c8d54f8f934f61b6a5e4e1ebb56a65b287567629d6c14578003", + "sha256:392e2ea22b41a22c0289a88053204b616181288162ba78e6823e1760309d5277", + "sha256:4341a39fc085f31a583be505eabf00e17c619b469fef78dc7e8241385bfddaa4", + "sha256:45080f065dcaa573ebecbfe13cdd86e8c0a68c4e999aa06bd365374ea7137706", + "sha256:485cb1eb4c9962f4cd042fed9424482ec1d83fee5dc2ef3f2552ac47852cb259", + "sha256:575cefd28d3e0da85b0864506ae26b06483ee4a906e308be5a7ad11083f9d757", + "sha256:62784b35df7de7ca4d0d81c5b6af5983f48c5cdef32fc3635b445674e56e3266", + "sha256:69c152f7c11bf3b4fc11bc4cc62eb0334371c0db6844ebace43b7c815b602805", + "sha256:6ccfdcefd287f252cf1ea7a3f1656070da330c4a5658e43ad223269165cdf977", + "sha256:7298fbd73c0b3eff1d53dc9b9bdb7add8797bb55eeee38c8ccd7906755ba28af", + "sha256:79463d918d1bf3aeb9186e3df17ddb0baca443f41371df422f99ee94f4f2bbfe", + "sha256:8bbee788d82c0ac656536de70e817af09b7694f5326b0ef08e5c1014fcb96bb3", + "sha256:a863957192855c4c57f60a75a1ac06ce5362ad18506d362dd807e194b4baf3ce", + "sha256:ae602ba425fb2b074e16d125cdce4f0194903da935b2e7fe284ebecca6d92e76", + "sha256:b13faa258b20fa66d29011f99fdf498641ca74a0a6d9266bc27d83c70fea4a6a", + "sha256:c2c39d69266621dd7464e2bb740d6eb5abc64ddc339cc97aa669f3bb4d75c103", + "sha256:e9c88f173d31909d881a60f08a8494e63f1aff2a4052476b24d4f50e82c47e24", + "sha256:f1a29267ac29fff0913de0f11f3a9edfcd3f39595f467026c29376fad243ebe3", + "sha256:f69dde0c5a137d887676a8129373e44366055cf19d1b434e853310c7a1e68f93" + ], + "version": "==1.16.1" + }, "pygame": { "hashes": [ - "sha256:06dc92ccfea33b85f209db3d49f99a2a30c88fe9fb80fa2564cee443ece787b5", - "sha256:0919a2ec5fcb0d00518c2a5fa99858ccf22d7fbcc0e12818b317062d11386984", - "sha256:0a8c92e700e0042faefa998fa064616f330201890d6ea1c993eb3ff30ab53e99", - "sha256:220a1048ebb3d11a4d48cc4219ec8f65ca62fcafd255239478677625e8ead2e9", - "sha256:315861d2b8428f7b4d56d2c98d6c1acc18f08c77af4b129211bc036774f64be2", - "sha256:3469e87867832fe5226396626a8a6a9dac9b2e21a7819dd8cd96cf0e08bbcd41", - "sha256:54c19960180626165512d596235d75dc022d38844467cec769a8d8153fd66645", - "sha256:5ba598736ab9716f53dc943a659a9578f62acfe00c0c9c5490f3aca61d078f75", - "sha256:60ddc4f361babb30ff2d554132b1f3296490f3149d6c1c77682213563f59937a", - "sha256:6a49ab8616a9de534f1bf62c98beabf0e0bb0b6ff8917576bba22820bba3fdad", - "sha256:6d4966eeba652df2fd9a757b3fc5b29b578b47b58f991ad714471661ea2141cb", - "sha256:700d1781c999af25d11bfd1f3e158ebb660f72ebccb2040ecafe5069d0b2c0b6", - "sha256:73f4c28e894e76797b8ccaf6eb1205b433efdb803c70f489ebc3db6ac9c097e6", - "sha256:786eca2bea11abd924f3f67eb2483bcb22acff08f28dbdbf67130abe54b23797", - "sha256:7bcf586a1c51a735361ca03561979eea3180de45e6165bcdfa12878b752544af", - "sha256:82a1e93d82c1babceeb278c55012a9f5140e77665d372a6d97ec67786856d254", - "sha256:9e03589bc80a21ae951fca7659a767b7cac668289937e3756c0ab3d753cf6d24", - "sha256:aa8926a4e34fb0943abe1a8bb04a0ad82265341bf20064c0862db0a521100dfc", - "sha256:aa90689b889c417d2ac571ef2bbb5f7e735ae30c7553c60fae7508404f46c101", - "sha256:c9f8cdefee267a2e690bf17d61a8f5670b620f25a981f24781b034363a8eedc9", - "sha256:d9177afb2f46103bfc28a51fbc49ce18987a857e5c934db47b4a7030cb30fbd0", - "sha256:deb0551d4bbfb8131e2463a7fe1943bfcec5beb11acdf9c4bfa27fa5a9758d62", - "sha256:e7edfe57a5972aa9130ce9a186020a0f097e7a8e4c25e292109bdae1432b77f9", - "sha256:f0ad32efb9e26160645d62ba6cf3e5a5828dc4e82e8f41f9badfe7b685b07295" + "sha256:9b811036eebebca68f166683f21427d1682f62159cb6de2b6724dec2be322c2a", + "sha256:9fba43308b121628a6c70edc7fac4b07ae5e30ccfe5bf36b914b3a2130e1671a", + "sha256:b48da4cd1b70487791767fcae7e9e3ce8eaf4d340667b5eea14d49a4104e23d1" ], - "version": "==1.9.4" + "index": "pypi", + "version": "==1.9.5.dev0" }, "pyopengl": { "hashes": [ - "sha256:2f3e757ded041c0c1e6175a0bb19f6e77f4063c54ad4ae0c8d3ff1a0996822b5", - "sha256:9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf", - "sha256:efa4e39a49b906ccbe66758812ca81ced13a6f26931ab2ba2dba2750c016c0d0" + "sha256:ac73b4c0b433be02d6a55b9ed768acf07003a92a3315ba9d62bc8f8da5f0c291" ], - "version": "==3.1.0" + "version": "==3.1.3b2" }, "python-constraint": { "hashes": [ @@ -109,6 +115,40 @@ "index": "pypi", "version": "==2.21.0" }, + "scipy": { + "hashes": [ + "sha256:014cb900c003b5ac81a53f2403294e8ecf37aedc315b59a6b9370dce0aa7627a", + "sha256:281a34da34a5e0de42d26aed692ab710141cad9d5d218b20643a9cb538ace976", + "sha256:588f9cc4bfab04c45fbd19c1354b5ade377a8124d6151d511c83730a9b6b2338", + "sha256:5a10661accd36b6e2e8855addcf3d675d6222006a15795420a39c040362def66", + "sha256:628f60be272512ca1123524969649a8cb5ae8b31cca349f7c6f8903daf9034d7", + "sha256:6dcc43a88e25b815c2dea1c6fac7339779fc988f5df8396e1de01610604a7c38", + "sha256:70e37cec0ac0fe95c85b74ca4e0620169590fd5d3f44765f3c3a532cedb0e5fd", + "sha256:7274735fb6fb5d67d3789ddec2cd53ed6362539b41aa6cc0d33a06c003aaa390", + "sha256:78e12972e144da47326958ac40c2bd1c1cca908edc8b01c26a36f9ffd3dce466", + "sha256:790cbd3c8d09f3a6d9c47c4558841e25bac34eb7a0864a9def8f26be0b8706af", + "sha256:79792c8fe8e9d06ebc50fe23266522c8c89f20aa94ac8e80472917ecdce1e5ba", + "sha256:865afedf35aaef6df6344bee0de391ee5e99d6e802950a237f9fb9b13e441f91", + "sha256:870fd401ec7b64a895cff8e206ee16569158db00254b2f7157b4c9a5db72c722", + "sha256:963815c226b29b0176d5e3d37fc9de46e2778ce4636a5a7af11a48122ef2577c", + "sha256:9726791484f08e394af0b59eb80489ad94d0a53bbb58ab1837dcad4d58489863", + "sha256:9de84a71bb7979aa8c089c4fb0ea0e2ed3917df3fb2a287a41aaea54bbad7f5d", + "sha256:b2c324ddc5d6dbd3f13680ad16a29425841876a84a1de23a984236d1afff4fa6", + "sha256:b86ae13c597fca087cb8c193870507c8916cefb21e52e1897da320b5a35075e5", + "sha256:ba0488d4dbba2af5bf9596b849873102d612e49a118c512d9d302ceafa36e01a", + "sha256:d78702af4102a3a4e23bb7372cec283e78f32f5573d92091aa6aaba870370fe1", + "sha256:def0e5d681dd3eb562b059d355ae8bebe27f5cc455ab7c2b6655586b63d3a8ea", + "sha256:e085d1babcb419bbe58e2e805ac61924dac4ca45a07c9fa081144739e500aa3c", + "sha256:e2cfcbab37c082a5087aba5ff00209999053260441caadd4f0e8f4c2d6b72088", + "sha256:e742f1f5dcaf222e8471c37ee3d1fd561568a16bb52e031c25674ff1cf9702d5", + "sha256:f06819b028b8ef9010281e74c59cb35483933583043091ed6b261bb1540f11cc", + "sha256:f15f2d60a11c306de7700ee9f65df7e9e463848dbea9c8051e293b704038da60", + "sha256:f31338ee269d201abe76083a990905473987371ff6f3fdb76a3f9073a361cf37", + "sha256:f6b88c8d302c3dac8dff7766955e38d670c82e0d79edfc7eae47d6bb2c186594" + ], + "index": "pypi", + "version": "==1.2.1" + }, "urllib3": { "hashes": [ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", @@ -120,10 +160,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:35b032003d6a863f5dcd7ec11abd5cd5893428beaa31ab164982403bcb311f22", - "sha256:6a5d668d7dc69110de01cdf7aeec69a679ef486862a0850cc0fd5571505b6b7e" + "sha256:110f590c8775f6c371027793204d60c65051c4349768df7a0f30d24fe40a4614", + "sha256:1c4aea7133a5b0f33ca3944a9ed37453ff27bac0a8a0587f96e1f392eaecca99" ], - "version": "==2.1.0" + "version": "==2.2.0.dev1" }, "isort": { "hashes": [ @@ -176,11 +216,11 @@ }, "pylint": { "hashes": [ - "sha256:689de29ae747642ab230c6d37be2b969bf75663176658851f456619aacf27492", - "sha256:771467c434d0d9f081741fec1d64dfb011ed26e65e12a28fe06ca2f61c4d556c" + "sha256:daa2dfc3aec7252e5d5c00cb5fb2bfc8a4d43c593f8e58366fb43dc2b13f3ec3", + "sha256:fea08b65e41a13f31133f04af57e103d52c3cca06f044468e0ec53140c18f95a" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.3.0.dev2" }, "six": { "hashes": [ @@ -189,6 +229,31 @@ ], "version": "==1.12.0" }, + "typed-ast": { + "hashes": [ + "sha256:035a54ede6ce1380599b2ce57844c6554666522e376bd111eb940fbc7c3dad23", + "sha256:037c35f2741ce3a9ac0d55abfcd119133cbd821fffa4461397718287092d9d15", + "sha256:049feae7e9f180b64efacbdc36b3af64a00393a47be22fa9cb6794e68d4e73d3", + "sha256:19228f7940beafc1ba21a6e8e070e0b0bfd1457902a3a81709762b8b9039b88d", + "sha256:2ea681e91e3550a30c2265d2916f40a5f5d89b59469a20f3bad7d07adee0f7a6", + "sha256:3a6b0a78af298d82323660df5497bcea0f0a4a25a0b003afd0ce5af049bd1f60", + "sha256:5385da8f3b801014504df0852bf83524599df890387a3c2b17b7caa3d78b1773", + "sha256:606d8afa07eef77280c2bf84335e24390055b478392e1975f96286d99d0cb424", + "sha256:69245b5b23bbf7fb242c9f8f08493e9ecd7711f063259aefffaeb90595d62287", + "sha256:6f6d839ab09830d59b7fa8fb6917023d8cb5498ee1f1dbd82d37db78eb76bc99", + "sha256:730888475f5ac0e37c1de4bd05eeb799fdb742697867f524dc8a4cd74bcecc23", + "sha256:9819b5162ffc121b9e334923c685b0d0826154e41dfe70b2ede2ce29034c71d8", + "sha256:9e60ef9426efab601dd9aa120e4ff560f4461cf8442e9c0a2b92548d52800699", + "sha256:af5fbdde0690c7da68e841d7fc2632345d570768ea7406a9434446d7b33b0ee1", + "sha256:b64efdbdf3bbb1377562c179f167f3bf301251411eb5ac77dec6b7d32bcda463", + "sha256:bac5f444c118aeb456fac1b0b5d14c6a71ea2a42069b09c176f75e9bd4c186f6", + "sha256:bda9068aafb73859491e13b99b682bd299c1b5fd50644d697533775828a28ee0", + "sha256:d659517ca116e6750101a1326107d3479028c5191f0ecee3c7203c50f5b915b0", + "sha256:eddd3fb1f3e0f82e5915a899285a39ee34ce18fd25d89582bc89fc9fb16cd2c6" + ], + "markers": "python_version >= '3.7' and implementation_name == 'cpython'", + "version": "==1.3.1" + }, "wrapt": { "hashes": [ "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" diff --git a/.vscode/settings.json b/.vscode/settings.json index f776680..7dcf4c0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,5 @@ "**/*.pyc": true, "**/__pycache__": true }, - "python.pythonPath": "~/.local/share/virtualenvs/py-H3fe-p_n/bin/python" + "python.pythonPath": "/usr/local/bin/python3" } \ No newline at end of file diff --git a/Pipfile.lock b/Pipfile.lock index a61b507..77af3a5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "bacdafb02274e91e6b626d22d4b069ff8c1321beee335721e5163494e68fa35e" + "sha256": "dd38906e3fa8df87c340f55945eb46401419dcc038ec03944585ee39d9452cdb" }, "pipfile-spec": 6, "requires": { @@ -57,42 +57,48 @@ "index": "pypi", "version": "==1.2.0" }, + "numpy": { + "hashes": [ + "sha256:0cdbbaa30ae69281b18dd995d3079c4e552ad6d5426977f66b9a2a95f11f552a", + "sha256:2b0cca1049bd39d1879fa4d598624cafe82d35529c72de1b3d528d68031cdd95", + "sha256:31d3fe5b673e99d33d70cfee2ea8fe8dccd60f265c3ed990873a88647e3dd288", + "sha256:34dd4922aab246c39bf5df03ca653d6265e65971deca6784c956bf356bca6197", + "sha256:384e2dfa03da7c8d54f8f934f61b6a5e4e1ebb56a65b287567629d6c14578003", + "sha256:392e2ea22b41a22c0289a88053204b616181288162ba78e6823e1760309d5277", + "sha256:4341a39fc085f31a583be505eabf00e17c619b469fef78dc7e8241385bfddaa4", + "sha256:45080f065dcaa573ebecbfe13cdd86e8c0a68c4e999aa06bd365374ea7137706", + "sha256:485cb1eb4c9962f4cd042fed9424482ec1d83fee5dc2ef3f2552ac47852cb259", + "sha256:575cefd28d3e0da85b0864506ae26b06483ee4a906e308be5a7ad11083f9d757", + "sha256:62784b35df7de7ca4d0d81c5b6af5983f48c5cdef32fc3635b445674e56e3266", + "sha256:69c152f7c11bf3b4fc11bc4cc62eb0334371c0db6844ebace43b7c815b602805", + "sha256:6ccfdcefd287f252cf1ea7a3f1656070da330c4a5658e43ad223269165cdf977", + "sha256:7298fbd73c0b3eff1d53dc9b9bdb7add8797bb55eeee38c8ccd7906755ba28af", + "sha256:79463d918d1bf3aeb9186e3df17ddb0baca443f41371df422f99ee94f4f2bbfe", + "sha256:8bbee788d82c0ac656536de70e817af09b7694f5326b0ef08e5c1014fcb96bb3", + "sha256:a863957192855c4c57f60a75a1ac06ce5362ad18506d362dd807e194b4baf3ce", + "sha256:ae602ba425fb2b074e16d125cdce4f0194903da935b2e7fe284ebecca6d92e76", + "sha256:b13faa258b20fa66d29011f99fdf498641ca74a0a6d9266bc27d83c70fea4a6a", + "sha256:c2c39d69266621dd7464e2bb740d6eb5abc64ddc339cc97aa669f3bb4d75c103", + "sha256:e9c88f173d31909d881a60f08a8494e63f1aff2a4052476b24d4f50e82c47e24", + "sha256:f1a29267ac29fff0913de0f11f3a9edfcd3f39595f467026c29376fad243ebe3", + "sha256:f69dde0c5a137d887676a8129373e44366055cf19d1b434e853310c7a1e68f93" + ], + "version": "==1.16.1" + }, "pygame": { "hashes": [ - "sha256:06dc92ccfea33b85f209db3d49f99a2a30c88fe9fb80fa2564cee443ece787b5", - "sha256:0919a2ec5fcb0d00518c2a5fa99858ccf22d7fbcc0e12818b317062d11386984", - "sha256:0a8c92e700e0042faefa998fa064616f330201890d6ea1c993eb3ff30ab53e99", - "sha256:220a1048ebb3d11a4d48cc4219ec8f65ca62fcafd255239478677625e8ead2e9", - "sha256:315861d2b8428f7b4d56d2c98d6c1acc18f08c77af4b129211bc036774f64be2", - "sha256:3469e87867832fe5226396626a8a6a9dac9b2e21a7819dd8cd96cf0e08bbcd41", - "sha256:54c19960180626165512d596235d75dc022d38844467cec769a8d8153fd66645", - "sha256:5ba598736ab9716f53dc943a659a9578f62acfe00c0c9c5490f3aca61d078f75", - "sha256:60ddc4f361babb30ff2d554132b1f3296490f3149d6c1c77682213563f59937a", - "sha256:6a49ab8616a9de534f1bf62c98beabf0e0bb0b6ff8917576bba22820bba3fdad", - "sha256:6d4966eeba652df2fd9a757b3fc5b29b578b47b58f991ad714471661ea2141cb", - "sha256:700d1781c999af25d11bfd1f3e158ebb660f72ebccb2040ecafe5069d0b2c0b6", - "sha256:73f4c28e894e76797b8ccaf6eb1205b433efdb803c70f489ebc3db6ac9c097e6", - "sha256:786eca2bea11abd924f3f67eb2483bcb22acff08f28dbdbf67130abe54b23797", - "sha256:7bcf586a1c51a735361ca03561979eea3180de45e6165bcdfa12878b752544af", - "sha256:82a1e93d82c1babceeb278c55012a9f5140e77665d372a6d97ec67786856d254", - "sha256:9e03589bc80a21ae951fca7659a767b7cac668289937e3756c0ab3d753cf6d24", - "sha256:aa8926a4e34fb0943abe1a8bb04a0ad82265341bf20064c0862db0a521100dfc", - "sha256:aa90689b889c417d2ac571ef2bbb5f7e735ae30c7553c60fae7508404f46c101", - "sha256:c9f8cdefee267a2e690bf17d61a8f5670b620f25a981f24781b034363a8eedc9", - "sha256:d9177afb2f46103bfc28a51fbc49ce18987a857e5c934db47b4a7030cb30fbd0", - "sha256:deb0551d4bbfb8131e2463a7fe1943bfcec5beb11acdf9c4bfa27fa5a9758d62", - "sha256:e7edfe57a5972aa9130ce9a186020a0f097e7a8e4c25e292109bdae1432b77f9", - "sha256:f0ad32efb9e26160645d62ba6cf3e5a5828dc4e82e8f41f9badfe7b685b07295" + "sha256:9b811036eebebca68f166683f21427d1682f62159cb6de2b6724dec2be322c2a", + "sha256:9fba43308b121628a6c70edc7fac4b07ae5e30ccfe5bf36b914b3a2130e1671a", + "sha256:b48da4cd1b70487791767fcae7e9e3ce8eaf4d340667b5eea14d49a4104e23d1" ], - "version": "==1.9.4" + "index": "pypi", + "version": "==1.9.5.dev0" }, "pyopengl": { "hashes": [ - "sha256:2f3e757ded041c0c1e6175a0bb19f6e77f4063c54ad4ae0c8d3ff1a0996822b5", - "sha256:9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf", - "sha256:efa4e39a49b906ccbe66758812ca81ced13a6f26931ab2ba2dba2750c016c0d0" + "sha256:ac73b4c0b433be02d6a55b9ed768acf07003a92a3315ba9d62bc8f8da5f0c291" ], - "version": "==3.1.0" + "version": "==3.1.3b2" }, "python-constraint": { "hashes": [ @@ -109,6 +115,40 @@ "index": "pypi", "version": "==2.21.0" }, + "scipy": { + "hashes": [ + "sha256:014cb900c003b5ac81a53f2403294e8ecf37aedc315b59a6b9370dce0aa7627a", + "sha256:281a34da34a5e0de42d26aed692ab710141cad9d5d218b20643a9cb538ace976", + "sha256:588f9cc4bfab04c45fbd19c1354b5ade377a8124d6151d511c83730a9b6b2338", + "sha256:5a10661accd36b6e2e8855addcf3d675d6222006a15795420a39c040362def66", + "sha256:628f60be272512ca1123524969649a8cb5ae8b31cca349f7c6f8903daf9034d7", + "sha256:6dcc43a88e25b815c2dea1c6fac7339779fc988f5df8396e1de01610604a7c38", + "sha256:70e37cec0ac0fe95c85b74ca4e0620169590fd5d3f44765f3c3a532cedb0e5fd", + "sha256:7274735fb6fb5d67d3789ddec2cd53ed6362539b41aa6cc0d33a06c003aaa390", + "sha256:78e12972e144da47326958ac40c2bd1c1cca908edc8b01c26a36f9ffd3dce466", + "sha256:790cbd3c8d09f3a6d9c47c4558841e25bac34eb7a0864a9def8f26be0b8706af", + "sha256:79792c8fe8e9d06ebc50fe23266522c8c89f20aa94ac8e80472917ecdce1e5ba", + "sha256:865afedf35aaef6df6344bee0de391ee5e99d6e802950a237f9fb9b13e441f91", + "sha256:870fd401ec7b64a895cff8e206ee16569158db00254b2f7157b4c9a5db72c722", + "sha256:963815c226b29b0176d5e3d37fc9de46e2778ce4636a5a7af11a48122ef2577c", + "sha256:9726791484f08e394af0b59eb80489ad94d0a53bbb58ab1837dcad4d58489863", + "sha256:9de84a71bb7979aa8c089c4fb0ea0e2ed3917df3fb2a287a41aaea54bbad7f5d", + "sha256:b2c324ddc5d6dbd3f13680ad16a29425841876a84a1de23a984236d1afff4fa6", + "sha256:b86ae13c597fca087cb8c193870507c8916cefb21e52e1897da320b5a35075e5", + "sha256:ba0488d4dbba2af5bf9596b849873102d612e49a118c512d9d302ceafa36e01a", + "sha256:d78702af4102a3a4e23bb7372cec283e78f32f5573d92091aa6aaba870370fe1", + "sha256:def0e5d681dd3eb562b059d355ae8bebe27f5cc455ab7c2b6655586b63d3a8ea", + "sha256:e085d1babcb419bbe58e2e805ac61924dac4ca45a07c9fa081144739e500aa3c", + "sha256:e2cfcbab37c082a5087aba5ff00209999053260441caadd4f0e8f4c2d6b72088", + "sha256:e742f1f5dcaf222e8471c37ee3d1fd561568a16bb52e031c25674ff1cf9702d5", + "sha256:f06819b028b8ef9010281e74c59cb35483933583043091ed6b261bb1540f11cc", + "sha256:f15f2d60a11c306de7700ee9f65df7e9e463848dbea9c8051e293b704038da60", + "sha256:f31338ee269d201abe76083a990905473987371ff6f3fdb76a3f9073a361cf37", + "sha256:f6b88c8d302c3dac8dff7766955e38d670c82e0d79edfc7eae47d6bb2c186594" + ], + "index": "pypi", + "version": "==1.2.1" + }, "urllib3": { "hashes": [ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", @@ -120,10 +160,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:35b032003d6a863f5dcd7ec11abd5cd5893428beaa31ab164982403bcb311f22", - "sha256:6a5d668d7dc69110de01cdf7aeec69a679ef486862a0850cc0fd5571505b6b7e" + "sha256:110f590c8775f6c371027793204d60c65051c4349768df7a0f30d24fe40a4614", + "sha256:1c4aea7133a5b0f33ca3944a9ed37453ff27bac0a8a0587f96e1f392eaecca99" ], - "version": "==2.1.0" + "version": "==2.2.0.dev1" }, "isort": { "hashes": [ @@ -176,11 +216,11 @@ }, "pylint": { "hashes": [ - "sha256:689de29ae747642ab230c6d37be2b969bf75663176658851f456619aacf27492", - "sha256:771467c434d0d9f081741fec1d64dfb011ed26e65e12a28fe06ca2f61c4d556c" + "sha256:daa2dfc3aec7252e5d5c00cb5fb2bfc8a4d43c593f8e58366fb43dc2b13f3ec3", + "sha256:fea08b65e41a13f31133f04af57e103d52c3cca06f044468e0ec53140c18f95a" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.3.0.dev2" }, "six": { "hashes": [ @@ -189,6 +229,31 @@ ], "version": "==1.12.0" }, + "typed-ast": { + "hashes": [ + "sha256:035a54ede6ce1380599b2ce57844c6554666522e376bd111eb940fbc7c3dad23", + "sha256:037c35f2741ce3a9ac0d55abfcd119133cbd821fffa4461397718287092d9d15", + "sha256:049feae7e9f180b64efacbdc36b3af64a00393a47be22fa9cb6794e68d4e73d3", + "sha256:19228f7940beafc1ba21a6e8e070e0b0bfd1457902a3a81709762b8b9039b88d", + "sha256:2ea681e91e3550a30c2265d2916f40a5f5d89b59469a20f3bad7d07adee0f7a6", + "sha256:3a6b0a78af298d82323660df5497bcea0f0a4a25a0b003afd0ce5af049bd1f60", + "sha256:5385da8f3b801014504df0852bf83524599df890387a3c2b17b7caa3d78b1773", + "sha256:606d8afa07eef77280c2bf84335e24390055b478392e1975f96286d99d0cb424", + "sha256:69245b5b23bbf7fb242c9f8f08493e9ecd7711f063259aefffaeb90595d62287", + "sha256:6f6d839ab09830d59b7fa8fb6917023d8cb5498ee1f1dbd82d37db78eb76bc99", + "sha256:730888475f5ac0e37c1de4bd05eeb799fdb742697867f524dc8a4cd74bcecc23", + "sha256:9819b5162ffc121b9e334923c685b0d0826154e41dfe70b2ede2ce29034c71d8", + "sha256:9e60ef9426efab601dd9aa120e4ff560f4461cf8442e9c0a2b92548d52800699", + "sha256:af5fbdde0690c7da68e841d7fc2632345d570768ea7406a9434446d7b33b0ee1", + "sha256:b64efdbdf3bbb1377562c179f167f3bf301251411eb5ac77dec6b7d32bcda463", + "sha256:bac5f444c118aeb456fac1b0b5d14c6a71ea2a42069b09c176f75e9bd4c186f6", + "sha256:bda9068aafb73859491e13b99b682bd299c1b5fd50644d697533775828a28ee0", + "sha256:d659517ca116e6750101a1326107d3479028c5191f0ecee3c7203c50f5b915b0", + "sha256:eddd3fb1f3e0f82e5915a899285a39ee34ce18fd25d89582bc89fc9fb16cd2c6" + ], + "markers": "python_version >= '3.7' and implementation_name == 'cpython'", + "version": "==1.3.1" + }, "wrapt": { "hashes": [ "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" diff --git a/generators/skewed_random.py b/generators/skewed_random.py index 561f2b4..6096b36 100644 --- a/generators/skewed_random.py +++ b/generators/skewed_random.py @@ -1,22 +1,22 @@ import logging import random - +import csv class SequenceGenerator: """Generates random sequence of stimuli for the n-back task. Implementation is based on Ralph (2014).""" - seq = [] - - def __init__(self, - N=2, - trials=16, # Number of total trials - alphabet=['A', 'B', 'C', 'D', 'E', 'F'], - T=2, # Number of targets - L1=1, # Number of lures (foil) similar to the (N+1)-back - L2=1 # Number of lures (foil) similar to the (N-1)-back - ): - self.N, self.alphabet, self.trials, self.T, self.L1, self.L2 = N, alphabet, trials, T, L1, L2 - self.D = trials - T - L1 - L2 + def __init__( + self, + choices: list, + n=2, + trials=64, # Number of total trials + targets=22, # Number of targets + lures1=1, # Number of lures (foil) similar to the (N+1)-back + lures2=1 # Number of lures (foil) similar to the (N-1)-back + ): + self.n, self.choices, self.trials, self.targets, self.lures1, self.lures2 = n, choices, trials, targets, lures1, lures2 + self.distractors = trials - targets - lures1 - lures2 + self.seq = [] def generate(self) -> list: trial = 1 @@ -28,24 +28,31 @@ def random_stimulus(self, trial): rnd = random.randint(1, self.trials - trial + 1) - T, L1, L2 = self.T, self.L1, self.L2 - if rnd <= T and len(self.seq) >= self.N: - self.T -= 1 - return self.seq[-self.N] - elif T < rnd <= T + L1 and len(self.seq) >= self.N+1: - self.L1 -= 1 - return self.seq[-(self.N+1)] - elif T + L1 < rnd <= T + L1 + L2 and len(self.seq) >= self.N-1: - self.L2 -= 1 - return self.seq[-(self.N-1)] + targets, lures1, lures2 = self.targets, self.lures1, self.lures2 + if rnd <= targets and len(self.seq) >= self.n: + self.targets -= 1 + return self.seq[-self.n] + elif targets < rnd <= targets + lures1 and len(self.seq) >= self.n + 1: + self.lures1 -= 1 + return self.seq[-(self.n+1)] + elif targets + lures1 < rnd <= targets + lures1 + lures2 and len(self.seq) >= self.n - 1: + self.lures2 -= 1 + return self.seq[-(self.n-1)] # distract - self.D -= 1 - alphabet = [item for item in self.alphabet if item not in self.seq[-self.N-1:-self.N+1]] - return random.choice(alphabet) + self.distractors -= 1 + choices = [item for item in self.choices if item not in self.seq[-self.n - 1:-self.n + 1]] + return random.choice(choices) if __name__ == '__main__': - generator = SequenceGenerator() - seq = generator.generate() - print('Skewed Random Sequence: %s' % ''.join(seq)) + choices = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] + generator = SequenceGenerator(choices, n=2, trials=240) + with open('../demo/data/skewed_random_statistical_distributions.csv', mode='w') as stat_dist_file: + writer = csv.writer(stat_dist_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + writer.writerow(['index'] + choices) + for i in range(1000): + seq = generator.generate() + dist = [str(seq.count(c)) for c in choices] + writer.writerow([i] + dist) + diff --git a/.vscode/settings.json b/.vscode/settings.json index f776680..7dcf4c0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,5 @@ "**/*.pyc": true, "**/__pycache__": true }, - "python.pythonPath": "~/.local/share/virtualenvs/py-H3fe-p_n/bin/python" + "python.pythonPath": "/usr/local/bin/python3" } \ No newline at end of file diff --git a/Pipfile.lock b/Pipfile.lock index a61b507..77af3a5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "bacdafb02274e91e6b626d22d4b069ff8c1321beee335721e5163494e68fa35e" + "sha256": "dd38906e3fa8df87c340f55945eb46401419dcc038ec03944585ee39d9452cdb" }, "pipfile-spec": 6, "requires": { @@ -57,42 +57,48 @@ "index": "pypi", "version": "==1.2.0" }, + "numpy": { + "hashes": [ + "sha256:0cdbbaa30ae69281b18dd995d3079c4e552ad6d5426977f66b9a2a95f11f552a", + "sha256:2b0cca1049bd39d1879fa4d598624cafe82d35529c72de1b3d528d68031cdd95", + "sha256:31d3fe5b673e99d33d70cfee2ea8fe8dccd60f265c3ed990873a88647e3dd288", + "sha256:34dd4922aab246c39bf5df03ca653d6265e65971deca6784c956bf356bca6197", + "sha256:384e2dfa03da7c8d54f8f934f61b6a5e4e1ebb56a65b287567629d6c14578003", + "sha256:392e2ea22b41a22c0289a88053204b616181288162ba78e6823e1760309d5277", + "sha256:4341a39fc085f31a583be505eabf00e17c619b469fef78dc7e8241385bfddaa4", + "sha256:45080f065dcaa573ebecbfe13cdd86e8c0a68c4e999aa06bd365374ea7137706", + "sha256:485cb1eb4c9962f4cd042fed9424482ec1d83fee5dc2ef3f2552ac47852cb259", + "sha256:575cefd28d3e0da85b0864506ae26b06483ee4a906e308be5a7ad11083f9d757", + "sha256:62784b35df7de7ca4d0d81c5b6af5983f48c5cdef32fc3635b445674e56e3266", + "sha256:69c152f7c11bf3b4fc11bc4cc62eb0334371c0db6844ebace43b7c815b602805", + "sha256:6ccfdcefd287f252cf1ea7a3f1656070da330c4a5658e43ad223269165cdf977", + "sha256:7298fbd73c0b3eff1d53dc9b9bdb7add8797bb55eeee38c8ccd7906755ba28af", + "sha256:79463d918d1bf3aeb9186e3df17ddb0baca443f41371df422f99ee94f4f2bbfe", + "sha256:8bbee788d82c0ac656536de70e817af09b7694f5326b0ef08e5c1014fcb96bb3", + "sha256:a863957192855c4c57f60a75a1ac06ce5362ad18506d362dd807e194b4baf3ce", + "sha256:ae602ba425fb2b074e16d125cdce4f0194903da935b2e7fe284ebecca6d92e76", + "sha256:b13faa258b20fa66d29011f99fdf498641ca74a0a6d9266bc27d83c70fea4a6a", + "sha256:c2c39d69266621dd7464e2bb740d6eb5abc64ddc339cc97aa669f3bb4d75c103", + "sha256:e9c88f173d31909d881a60f08a8494e63f1aff2a4052476b24d4f50e82c47e24", + "sha256:f1a29267ac29fff0913de0f11f3a9edfcd3f39595f467026c29376fad243ebe3", + "sha256:f69dde0c5a137d887676a8129373e44366055cf19d1b434e853310c7a1e68f93" + ], + "version": "==1.16.1" + }, "pygame": { "hashes": [ - "sha256:06dc92ccfea33b85f209db3d49f99a2a30c88fe9fb80fa2564cee443ece787b5", - "sha256:0919a2ec5fcb0d00518c2a5fa99858ccf22d7fbcc0e12818b317062d11386984", - "sha256:0a8c92e700e0042faefa998fa064616f330201890d6ea1c993eb3ff30ab53e99", - "sha256:220a1048ebb3d11a4d48cc4219ec8f65ca62fcafd255239478677625e8ead2e9", - "sha256:315861d2b8428f7b4d56d2c98d6c1acc18f08c77af4b129211bc036774f64be2", - "sha256:3469e87867832fe5226396626a8a6a9dac9b2e21a7819dd8cd96cf0e08bbcd41", - "sha256:54c19960180626165512d596235d75dc022d38844467cec769a8d8153fd66645", - "sha256:5ba598736ab9716f53dc943a659a9578f62acfe00c0c9c5490f3aca61d078f75", - "sha256:60ddc4f361babb30ff2d554132b1f3296490f3149d6c1c77682213563f59937a", - "sha256:6a49ab8616a9de534f1bf62c98beabf0e0bb0b6ff8917576bba22820bba3fdad", - "sha256:6d4966eeba652df2fd9a757b3fc5b29b578b47b58f991ad714471661ea2141cb", - "sha256:700d1781c999af25d11bfd1f3e158ebb660f72ebccb2040ecafe5069d0b2c0b6", - "sha256:73f4c28e894e76797b8ccaf6eb1205b433efdb803c70f489ebc3db6ac9c097e6", - "sha256:786eca2bea11abd924f3f67eb2483bcb22acff08f28dbdbf67130abe54b23797", - "sha256:7bcf586a1c51a735361ca03561979eea3180de45e6165bcdfa12878b752544af", - "sha256:82a1e93d82c1babceeb278c55012a9f5140e77665d372a6d97ec67786856d254", - "sha256:9e03589bc80a21ae951fca7659a767b7cac668289937e3756c0ab3d753cf6d24", - "sha256:aa8926a4e34fb0943abe1a8bb04a0ad82265341bf20064c0862db0a521100dfc", - "sha256:aa90689b889c417d2ac571ef2bbb5f7e735ae30c7553c60fae7508404f46c101", - "sha256:c9f8cdefee267a2e690bf17d61a8f5670b620f25a981f24781b034363a8eedc9", - "sha256:d9177afb2f46103bfc28a51fbc49ce18987a857e5c934db47b4a7030cb30fbd0", - "sha256:deb0551d4bbfb8131e2463a7fe1943bfcec5beb11acdf9c4bfa27fa5a9758d62", - "sha256:e7edfe57a5972aa9130ce9a186020a0f097e7a8e4c25e292109bdae1432b77f9", - "sha256:f0ad32efb9e26160645d62ba6cf3e5a5828dc4e82e8f41f9badfe7b685b07295" + "sha256:9b811036eebebca68f166683f21427d1682f62159cb6de2b6724dec2be322c2a", + "sha256:9fba43308b121628a6c70edc7fac4b07ae5e30ccfe5bf36b914b3a2130e1671a", + "sha256:b48da4cd1b70487791767fcae7e9e3ce8eaf4d340667b5eea14d49a4104e23d1" ], - "version": "==1.9.4" + "index": "pypi", + "version": "==1.9.5.dev0" }, "pyopengl": { "hashes": [ - "sha256:2f3e757ded041c0c1e6175a0bb19f6e77f4063c54ad4ae0c8d3ff1a0996822b5", - "sha256:9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf", - "sha256:efa4e39a49b906ccbe66758812ca81ced13a6f26931ab2ba2dba2750c016c0d0" + "sha256:ac73b4c0b433be02d6a55b9ed768acf07003a92a3315ba9d62bc8f8da5f0c291" ], - "version": "==3.1.0" + "version": "==3.1.3b2" }, "python-constraint": { "hashes": [ @@ -109,6 +115,40 @@ "index": "pypi", "version": "==2.21.0" }, + "scipy": { + "hashes": [ + "sha256:014cb900c003b5ac81a53f2403294e8ecf37aedc315b59a6b9370dce0aa7627a", + "sha256:281a34da34a5e0de42d26aed692ab710141cad9d5d218b20643a9cb538ace976", + "sha256:588f9cc4bfab04c45fbd19c1354b5ade377a8124d6151d511c83730a9b6b2338", + "sha256:5a10661accd36b6e2e8855addcf3d675d6222006a15795420a39c040362def66", + "sha256:628f60be272512ca1123524969649a8cb5ae8b31cca349f7c6f8903daf9034d7", + "sha256:6dcc43a88e25b815c2dea1c6fac7339779fc988f5df8396e1de01610604a7c38", + "sha256:70e37cec0ac0fe95c85b74ca4e0620169590fd5d3f44765f3c3a532cedb0e5fd", + "sha256:7274735fb6fb5d67d3789ddec2cd53ed6362539b41aa6cc0d33a06c003aaa390", + "sha256:78e12972e144da47326958ac40c2bd1c1cca908edc8b01c26a36f9ffd3dce466", + "sha256:790cbd3c8d09f3a6d9c47c4558841e25bac34eb7a0864a9def8f26be0b8706af", + "sha256:79792c8fe8e9d06ebc50fe23266522c8c89f20aa94ac8e80472917ecdce1e5ba", + "sha256:865afedf35aaef6df6344bee0de391ee5e99d6e802950a237f9fb9b13e441f91", + "sha256:870fd401ec7b64a895cff8e206ee16569158db00254b2f7157b4c9a5db72c722", + "sha256:963815c226b29b0176d5e3d37fc9de46e2778ce4636a5a7af11a48122ef2577c", + "sha256:9726791484f08e394af0b59eb80489ad94d0a53bbb58ab1837dcad4d58489863", + "sha256:9de84a71bb7979aa8c089c4fb0ea0e2ed3917df3fb2a287a41aaea54bbad7f5d", + "sha256:b2c324ddc5d6dbd3f13680ad16a29425841876a84a1de23a984236d1afff4fa6", + "sha256:b86ae13c597fca087cb8c193870507c8916cefb21e52e1897da320b5a35075e5", + "sha256:ba0488d4dbba2af5bf9596b849873102d612e49a118c512d9d302ceafa36e01a", + "sha256:d78702af4102a3a4e23bb7372cec283e78f32f5573d92091aa6aaba870370fe1", + "sha256:def0e5d681dd3eb562b059d355ae8bebe27f5cc455ab7c2b6655586b63d3a8ea", + "sha256:e085d1babcb419bbe58e2e805ac61924dac4ca45a07c9fa081144739e500aa3c", + "sha256:e2cfcbab37c082a5087aba5ff00209999053260441caadd4f0e8f4c2d6b72088", + "sha256:e742f1f5dcaf222e8471c37ee3d1fd561568a16bb52e031c25674ff1cf9702d5", + "sha256:f06819b028b8ef9010281e74c59cb35483933583043091ed6b261bb1540f11cc", + "sha256:f15f2d60a11c306de7700ee9f65df7e9e463848dbea9c8051e293b704038da60", + "sha256:f31338ee269d201abe76083a990905473987371ff6f3fdb76a3f9073a361cf37", + "sha256:f6b88c8d302c3dac8dff7766955e38d670c82e0d79edfc7eae47d6bb2c186594" + ], + "index": "pypi", + "version": "==1.2.1" + }, "urllib3": { "hashes": [ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", @@ -120,10 +160,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:35b032003d6a863f5dcd7ec11abd5cd5893428beaa31ab164982403bcb311f22", - "sha256:6a5d668d7dc69110de01cdf7aeec69a679ef486862a0850cc0fd5571505b6b7e" + "sha256:110f590c8775f6c371027793204d60c65051c4349768df7a0f30d24fe40a4614", + "sha256:1c4aea7133a5b0f33ca3944a9ed37453ff27bac0a8a0587f96e1f392eaecca99" ], - "version": "==2.1.0" + "version": "==2.2.0.dev1" }, "isort": { "hashes": [ @@ -176,11 +216,11 @@ }, "pylint": { "hashes": [ - "sha256:689de29ae747642ab230c6d37be2b969bf75663176658851f456619aacf27492", - "sha256:771467c434d0d9f081741fec1d64dfb011ed26e65e12a28fe06ca2f61c4d556c" + "sha256:daa2dfc3aec7252e5d5c00cb5fb2bfc8a4d43c593f8e58366fb43dc2b13f3ec3", + "sha256:fea08b65e41a13f31133f04af57e103d52c3cca06f044468e0ec53140c18f95a" ], "index": "pypi", - "version": "==2.2.2" + "version": "==2.3.0.dev2" }, "six": { "hashes": [ @@ -189,6 +229,31 @@ ], "version": "==1.12.0" }, + "typed-ast": { + "hashes": [ + "sha256:035a54ede6ce1380599b2ce57844c6554666522e376bd111eb940fbc7c3dad23", + "sha256:037c35f2741ce3a9ac0d55abfcd119133cbd821fffa4461397718287092d9d15", + "sha256:049feae7e9f180b64efacbdc36b3af64a00393a47be22fa9cb6794e68d4e73d3", + "sha256:19228f7940beafc1ba21a6e8e070e0b0bfd1457902a3a81709762b8b9039b88d", + "sha256:2ea681e91e3550a30c2265d2916f40a5f5d89b59469a20f3bad7d07adee0f7a6", + "sha256:3a6b0a78af298d82323660df5497bcea0f0a4a25a0b003afd0ce5af049bd1f60", + "sha256:5385da8f3b801014504df0852bf83524599df890387a3c2b17b7caa3d78b1773", + "sha256:606d8afa07eef77280c2bf84335e24390055b478392e1975f96286d99d0cb424", + "sha256:69245b5b23bbf7fb242c9f8f08493e9ecd7711f063259aefffaeb90595d62287", + "sha256:6f6d839ab09830d59b7fa8fb6917023d8cb5498ee1f1dbd82d37db78eb76bc99", + "sha256:730888475f5ac0e37c1de4bd05eeb799fdb742697867f524dc8a4cd74bcecc23", + "sha256:9819b5162ffc121b9e334923c685b0d0826154e41dfe70b2ede2ce29034c71d8", + "sha256:9e60ef9426efab601dd9aa120e4ff560f4461cf8442e9c0a2b92548d52800699", + "sha256:af5fbdde0690c7da68e841d7fc2632345d570768ea7406a9434446d7b33b0ee1", + "sha256:b64efdbdf3bbb1377562c179f167f3bf301251411eb5ac77dec6b7d32bcda463", + "sha256:bac5f444c118aeb456fac1b0b5d14c6a71ea2a42069b09c176f75e9bd4c186f6", + "sha256:bda9068aafb73859491e13b99b682bd299c1b5fd50644d697533775828a28ee0", + "sha256:d659517ca116e6750101a1326107d3479028c5191f0ecee3c7203c50f5b915b0", + "sha256:eddd3fb1f3e0f82e5915a899285a39ee34ce18fd25d89582bc89fc9fb16cd2c6" + ], + "markers": "python_version >= '3.7' and implementation_name == 'cpython'", + "version": "==1.3.1" + }, "wrapt": { "hashes": [ "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" diff --git a/generators/skewed_random.py b/generators/skewed_random.py index 561f2b4..6096b36 100644 --- a/generators/skewed_random.py +++ b/generators/skewed_random.py @@ -1,22 +1,22 @@ import logging import random - +import csv class SequenceGenerator: """Generates random sequence of stimuli for the n-back task. Implementation is based on Ralph (2014).""" - seq = [] - - def __init__(self, - N=2, - trials=16, # Number of total trials - alphabet=['A', 'B', 'C', 'D', 'E', 'F'], - T=2, # Number of targets - L1=1, # Number of lures (foil) similar to the (N+1)-back - L2=1 # Number of lures (foil) similar to the (N-1)-back - ): - self.N, self.alphabet, self.trials, self.T, self.L1, self.L2 = N, alphabet, trials, T, L1, L2 - self.D = trials - T - L1 - L2 + def __init__( + self, + choices: list, + n=2, + trials=64, # Number of total trials + targets=22, # Number of targets + lures1=1, # Number of lures (foil) similar to the (N+1)-back + lures2=1 # Number of lures (foil) similar to the (N-1)-back + ): + self.n, self.choices, self.trials, self.targets, self.lures1, self.lures2 = n, choices, trials, targets, lures1, lures2 + self.distractors = trials - targets - lures1 - lures2 + self.seq = [] def generate(self) -> list: trial = 1 @@ -28,24 +28,31 @@ def random_stimulus(self, trial): rnd = random.randint(1, self.trials - trial + 1) - T, L1, L2 = self.T, self.L1, self.L2 - if rnd <= T and len(self.seq) >= self.N: - self.T -= 1 - return self.seq[-self.N] - elif T < rnd <= T + L1 and len(self.seq) >= self.N+1: - self.L1 -= 1 - return self.seq[-(self.N+1)] - elif T + L1 < rnd <= T + L1 + L2 and len(self.seq) >= self.N-1: - self.L2 -= 1 - return self.seq[-(self.N-1)] + targets, lures1, lures2 = self.targets, self.lures1, self.lures2 + if rnd <= targets and len(self.seq) >= self.n: + self.targets -= 1 + return self.seq[-self.n] + elif targets < rnd <= targets + lures1 and len(self.seq) >= self.n + 1: + self.lures1 -= 1 + return self.seq[-(self.n+1)] + elif targets + lures1 < rnd <= targets + lures1 + lures2 and len(self.seq) >= self.n - 1: + self.lures2 -= 1 + return self.seq[-(self.n-1)] # distract - self.D -= 1 - alphabet = [item for item in self.alphabet if item not in self.seq[-self.N-1:-self.N+1]] - return random.choice(alphabet) + self.distractors -= 1 + choices = [item for item in self.choices if item not in self.seq[-self.n - 1:-self.n + 1]] + return random.choice(choices) if __name__ == '__main__': - generator = SequenceGenerator() - seq = generator.generate() - print('Skewed Random Sequence: %s' % ''.join(seq)) + choices = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] + generator = SequenceGenerator(choices, n=2, trials=240) + with open('../demo/data/skewed_random_statistical_distributions.csv', mode='w') as stat_dist_file: + writer = csv.writer(stat_dist_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) + writer.writerow(['index'] + choices) + for i in range(1000): + seq = generator.generate() + dist = [str(seq.count(c)) for c in choices] + writer.writerow([i] + dist) + diff --git a/stat/skewed_random_statistical_distributions_1000runs_240trials_8stimuli.csv b/stat/skewed_random_statistical_distributions_1000runs_240trials_8stimuli.csv new file mode 100644 index 0000000..b7f92ea --- /dev/null +++ b/stat/skewed_random_statistical_distributions_1000runs_240trials_8stimuli.csv @@ -0,0 +1,1001 @@ +index,A,B,C,D,E,F,G,H,max,skewness +0,30,28,30,27,31,32,29,33,33,0 +1,30,35,32,27,32,25,31,28,35,-0.5 +2,33,31,28,31,34,28,27,28,34,0.612372435695795 +3,30,28,37,24,31,27,31,32,37,-0.416025147168922 +4,33,29,27,31,34,27,31,28,34,0 +5,23,37,24,37,24,27,38,30,38,0.744845299742131 +6,21,28,35,28,27,36,32,33,36,0 +7,22,31,33,32,31,30,33,28,33,-0.884651736929383 +8,26,31,29,31,26,33,29,35,35,0 +9,23,28,32,28,35,30,33,31,35,-0.433012701892219 +10,30,29,34,27,34,27,34,25,34,0.442325868464691 +11,30,25,27,35,29,32,35,27,35,0.428571428571429 +12,31,34,27,30,32,34,28,24,34,-0.457495710997814 +13,23,30,32,35,33,29,25,33,35,-0.768221279597376 +14,27,25,25,42,34,25,32,30,42,0.808223859120487 +15,26,32,38,27,26,40,28,23,40,1.31055608499156 +16,25,34,25,24,32,29,40,31,40,0 +17,34,34,28,28,39,30,17,30,39,0 +18,29,30,34,32,31,27,28,29,34,0.707106781186548 +19,34,33,30,24,31,38,22,28,38,-0.304603849540086 +20,31,37,25,31,30,31,24,31,37,-0.794719414239026 +21,36,35,29,27,23,29,27,34,36,0.702246883176783 +22,26,30,29,33,33,26,34,29,34,0.514495755427526 +23,33,26,31,30,28,29,27,36,36,0.486664263392288 +24,26,35,30,37,32,23,25,32,37,-0.64699663922063 +25,32,27,30,28,34,29,29,31,34,0.707106781186548 +26,30,29,30,28,32,36,27,28,36,0.557086014531156 +27,31,28,29,37,33,28,22,32,37,0 +28,36,35,23,29,29,36,22,30,36,0.291385758707179 +29,27,29,30,33,32,37,29,23,37,0.384110639798688 +30,32,27,27,32,32,29,28,33,33,-0.639602149066831 +31,34,37,23,27,29,27,32,31,37,0 +32,28,30,32,27,31,26,37,29,37,0.462910049886276 +33,31,34,34,26,21,32,32,30,34,-1.08347267777192 +34,28,29,27,27,32,32,39,26,39,1.125 +35,26,28,31,31,31,34,30,29,34,-0.670820393249937 +36,35,23,27,34,36,26,34,25,36,-0.306186217847897 +37,35,31,29,25,27,30,28,35,35,0.447213595499958 +38,34,28,29,28,27,34,30,30,34,0.6 +39,33,29,30,37,34,25,28,24,37,0.358568582800318 +40,31,23,36,34,31,26,29,30,36,-0.387298334620742 +41,27,37,29,31,29,30,32,25,37,0.447213595499958 +42,34,36,25,28,34,26,28,29,36,1.17170019882741 +43,34,30,28,32,32,35,23,26,35,-0.781133465884943 +44,30,33,26,29,33,25,32,32,33,-1.02899151085505 +45,33,32,24,34,33,27,27,30,34,-0.884651736929383 +46,30,32,24,28,29,32,34,31,34,-0.522232967867094 +47,27,27,32,38,27,32,29,28,38,1.24807544150677 +48,32,28,24,31,35,22,34,34,35,-0.987878339907213 +49,32,29,31,35,25,33,22,33,35,-1.08347267777192 +50,29,30,30,33,30,37,26,25,37,0 +51,29,27,38,33,31,27,25,30,38,0.390566732942472 +52,31,31,31,27,28,30,29,33,33,-0.832050294337844 +53,30,33,31,24,32,30,36,24,36,-0.384110639798688 +54,42,34,30,21,28,27,29,29,42,0.530330085889911 +55,27,30,30,31,30,34,34,24,34,0 +56,34,31,37,25,25,31,23,34,37,-0.628970902033151 +57,29,26,27,36,33,30,29,30,36,0.5 +58,29,25,31,27,31,34,40,23,40,0 +59,26,32,29,26,30,36,25,36,36,0.366508333068916 +60,28,35,28,38,26,23,33,29,38,0.970494958830946 +61,32,27,29,33,30,21,36,32,36,-0.707106781186548 +62,29,31,28,31,27,38,27,29,38,0.894427190999916 +63,21,34,25,30,33,31,39,27,39,-0.28474739872575 +64,27,31,32,33,30,28,30,29,33,0 +65,32,28,29,28,32,26,31,34,34,0 +66,22,38,24,35,22,29,36,34,38,-0.727606875108999 +67,34,30,31,20,26,29,32,38,38,-0.298511157062997 +68,26,35,27,29,30,38,27,28,38,1.125 +69,32,33,30,26,31,30,32,26,33,-0.6 +70,37,31,35,25,30,25,36,21,37,-0.272727272727273 +71,36,24,29,29,32,35,28,27,36,0.787838597158335 +72,27,31,28,34,28,31,29,32,34,0 +73,31,30,34,30,29,31,30,25,34,0 +74,27,26,34,32,30,31,31,29,34,-0.612372435695795 +75,30,30,37,31,32,28,25,27,37,0 +76,26,28,28,30,24,33,40,31,40,0.650791373455968 +77,35,32,33,23,30,26,32,29,35,-0.816496580927726 +78,32,26,34,31,30,29,30,28,34,0 +79,27,31,26,30,34,24,31,37,37,-0.375 +80,33,36,30,24,20,36,26,35,36,-0.792405815693061 +81,31,36,31,32,28,35,22,25,36,-0.670820393249937 +82,33,27,32,28,28,27,33,32,33,0 +83,28,31,23,29,32,31,35,31,35,-0.914991421995628 +84,29,33,25,27,33,34,28,31,34,0 +85,27,39,26,30,37,22,30,29,39,0.286038776773678 +86,35,21,34,31,38,32,25,24,38,-0.801783725737273 +87,28,31,26,30,37,28,28,32,37,0.937042571331636 +88,25,31,30,29,30,35,31,29,35,0 +89,30,32,30,23,32,28,35,30,35,0 +90,22,36,23,23,31,33,35,37,37,-1.01058230527982 +91,33,31,27,37,28,23,29,32,37,0 +92,31,28,24,30,31,35,29,32,35,-0.5 +93,35,27,36,23,29,26,28,36,36,0.959403223600247 +94,36,35,26,26,29,24,29,35,36,0.679366220486757 +95,31,24,34,32,33,27,27,32,34,-1.35680105059994 +96,41,29,37,28,27,27,26,25,41,1.38675049056307 +97,31,30,27,25,28,41,30,28,41,0.662589156449079 +98,33,20,36,30,35,26,29,31,36,-0.309426373877638 +99,35,27,26,29,27,28,35,33,35,1.28571428571429 +100,31,30,25,28,35,31,36,24,36,-0.375 +101,28,33,29,31,22,39,22,36,39,0 +102,29,29,35,27,29,30,31,30,35,0.688247201611685 +103,31,32,30,27,34,29,29,28,34,0.707106781186548 +104,39,30,29,33,31,27,19,32,39,-0.282216260515079 +105,27,21,24,36,34,29,36,33,36,-0.566946709513841 +106,22,33,28,34,28,33,32,30,34,-0.80903983495589 +107,29,29,29,36,24,29,33,31,36,0.914991421995628 +108,27,34,30,25,29,26,33,36,36,0.400891862868637 +109,29,30,31,26,30,37,29,28,37,0.5 +110,25,30,31,28,31,33,34,28,34,-0.547722557505166 +111,30,30,32,35,23,27,30,33,35,0 +112,26,35,24,27,23,34,33,38,38,0 +113,33,33,27,26,34,28,32,27,34,0 +114,29,26,36,25,33,30,32,29,36,0.442325868464691 +115,22,28,33,27,38,38,31,23,38,0.261116483933547 +116,28,30,33,30,23,34,31,31,34,-0.474341649025257 +117,33,36,24,19,32,34,34,28,36,-1.36363636363636 +118,32,27,37,28,28,36,27,25,37,1.43427433120127 +119,25,36,29,21,36,32,26,35,36,-0.28347335475692 +120,26,30,33,28,28,31,30,34,34,0 +121,22,27,27,33,28,33,34,36,36,-0.339683110243379 +122,24,29,32,33,33,30,30,29,33,0 +123,31,24,24,31,32,30,34,34,34,-0.80903983495589 +124,30,31,28,26,30,34,26,35,35,0 +125,27,27,32,32,35,30,28,29,35,0.566946709513841 +126,30,26,39,29,30,28,30,28,39,0.412081691846067 +127,39,31,29,34,29,25,23,30,39,0.321633760451338 +128,33,26,32,30,38,32,25,24,38,-0.675052740555614 +129,22,32,36,27,32,30,28,33,36,-0.744208407535251 +130,35,32,29,27,34,29,27,27,35,0.986393923832144 +131,31,28,31,30,30,28,29,33,33,0 +132,30,34,30,30,26,29,30,31,34,0 +133,37,22,24,25,29,29,41,33,41,0.485071250072666 +134,36,25,33,29,28,30,29,30,36,0.486664263392288 +135,28,26,26,33,35,26,30,36,36,0.768221279597376 +136,23,28,34,35,30,28,28,34,35,0.781133465884943 +137,34,26,28,23,33,35,29,32,35,-0.381000381000571 +138,26,30,34,30,31,34,25,30,34,0 +139,33,28,27,24,36,31,32,29,36,0 +140,37,31,24,33,33,28,27,27,37,0.377964473009227 +141,34,41,28,28,32,26,24,27,41,1.17108008753824 +142,31,30,31,27,27,31,27,36,36,-0.522232967867094 +143,24,33,25,37,38,31,22,30,38,-0.269407953040162 +144,29,34,33,27,24,35,24,34,35,-0.697485832462916 +145,31,31,32,31,23,28,29,35,35,-0.914991421995628 +146,28,31,27,24,33,25,36,36,36,0.339683110243379 +147,32,27,32,34,32,35,25,23,35,-1.455213750218 +148,32,28,33,26,35,30,23,33,35,-0.787838597158335 +149,24,26,28,37,28,33,36,28,37,1.35010548111123 +150,31,32,31,27,34,27,26,32,34,-1.09544511501033 +151,29,25,30,32,32,32,28,32,32,-1.25108648434245 +152,30,33,26,31,29,33,31,27,33,-0.625543242171224 +153,27,31,27,30,32,34,21,38,38,-0.312771621085612 +154,37,29,22,26,33,31,28,34,37,0 +155,30,33,31,28,28,26,32,32,33,-0.654653670707977 +156,31,25,25,32,28,31,34,34,34,-0.884651736929383 +157,31,31,30,26,28,30,27,37,37,0 +158,24,36,35,29,27,33,28,28,36,1.14300114300171 +159,31,34,27,25,34,38,22,29,38,0 +160,35,28,30,33,30,26,30,28,35,0 +161,32,34,30,24,30,27,32,31,34,-0.50709255283711 +162,40,27,30,30,31,23,34,25,40,0 +163,30,28,30,33,33,25,25,36,36,0 +164,38,36,24,24,26,32,30,30,38,0 +165,29,25,35,28,35,35,27,26,35,1.11631261130288 +166,34,33,24,32,32,26,31,28,34,-1.34164078649987 +167,34,39,24,24,32,20,35,32,39,-0.976546150525391 +168,26,38,28,31,29,23,31,34,38,0 +169,29,34,27,32,41,22,25,30,41,0.273861278752583 +170,38,34,24,28,30,34,28,24,38,0.639602149066831 +171,26,27,36,31,32,33,31,24,36,-0.801783725737273 +172,26,37,22,34,34,30,29,28,37,0.329292779969071 +173,35,30,23,31,25,30,35,31,35,-0.377964473009227 +174,34,27,29,27,35,29,31,28,35,1.04446593573419 +175,29,32,35,29,26,26,36,27,36,0.816496580927726 +176,31,28,32,32,27,25,29,36,36,0 +177,30,33,30,25,34,26,31,31,34,-0.514495755427526 +178,32,25,35,29,28,32,23,36,36,-0.348742916231458 +179,26,26,37,33,32,24,30,32,37,-0.733016666137831 +180,25,30,27,35,34,32,26,31,35,-0.433012701892219 +181,29,31,29,27,31,30,33,30,33,0 +182,33,27,30,30,27,31,32,30,33,0 +183,24,33,28,37,35,23,29,31,37,0 +184,26,27,37,26,32,32,33,27,37,0.393919298579168 +185,25,28,33,38,22,33,32,29,38,-0.316227766016838 +186,36,35,32,26,32,26,22,31,36,-0.987878339907213 +187,33,32,29,36,29,23,24,34,36,-0.344123600805843 +188,30,32,33,34,26,30,32,23,34,-0.857142857142857 +189,33,34,23,29,25,34,29,33,34,-0.755928946018454 +190,35,28,28,28,34,28,32,27,35,2.02837021134844 +191,29,34,29,28,24,28,37,31,37,0.801783725737273 +192,37,24,26,30,28,34,27,34,37,0.702246883176783 +193,42,25,30,28,28,29,30,28,42,0.943456353049727 +194,32,30,29,27,30,31,30,31,32,0 +195,34,27,32,32,28,35,28,24,35,0 +196,33,29,32,27,27,31,39,22,39,0 +197,28,23,23,32,40,30,32,32,40,-0.580041893427398 +198,33,33,21,30,29,28,38,28,38,0.323498319610315 +199,34,26,30,33,26,26,35,30,35,0 +200,35,30,30,26,25,30,32,32,35,0 +201,34,26,24,32,31,27,33,33,34,-1.27279220613579 +202,21,20,39,39,36,32,28,25,39,0 +203,28,25,36,31,27,26,35,32,36,0.387298334620742 +204,37,35,30,22,30,34,28,24,37,0 +205,28,30,29,34,30,32,29,28,34,0.774596669241483 +206,30,33,31,30,22,28,33,33,33,-0.433012701892219 +207,34,28,34,28,35,28,30,23,35,0.781133465884943 +208,32,33,27,30,32,32,27,27,33,-1.22474487139159 +209,34,28,30,34,27,26,33,28,34,0.986393923832144 +210,33,31,29,20,31,34,29,33,34,-0.722315118514615 +211,37,32,24,27,34,33,28,25,37,0 +212,26,24,33,32,28,32,29,36,36,-0.404519917477945 +213,32,30,31,25,26,28,31,37,37,-0.424264068711929 +214,32,34,40,29,23,30,29,23,40,0.286038776773678 +215,30,20,37,35,30,35,27,26,37,0 +216,26,38,33,31,20,26,34,32,38,-0.846648781545237 +217,34,25,31,28,31,31,33,27,34,-1.04446593573419 +218,35,25,27,35,29,32,29,28,35,0.875189948987367 +219,27,31,24,25,36,36,25,36,36,0.594088525786005 +220,35,33,30,36,23,28,24,31,36,-0.335410196624968 +221,29,29,30,33,29,34,26,30,34,0.639602149066831 +222,28,30,31,22,35,35,29,30,35,0 +223,24,31,30,33,32,33,25,32,33,-1.35680105059994 +224,34,27,34,20,27,32,27,39,39,0.271607238127556 +225,34,32,34,23,28,33,31,25,34,-1.14300114300171 +226,26,27,27,41,24,30,30,35,41,0.866025403784439 +227,24,30,32,31,31,34,31,27,34,-1.02899151085505 +228,26,34,30,24,29,39,27,31,39,0.335410196624968 +229,29,33,33,34,27,21,29,34,34,-0.712068994916312 +230,37,31,27,30,27,27,33,28,37,0.894427190999916 +231,33,32,27,30,31,31,22,34,34,-0.832050294337844 +232,26,29,30,33,23,33,34,32,34,-0.832050294337844 +233,31,31,26,31,30,30,32,29,32,-0.866025403784439 +234,29,27,34,32,24,29,34,31,34,0 +235,29,31,30,29,36,33,30,22,36,0 +236,31,29,30,30,31,30,29,30,31,0 +237,32,29,29,28,31,29,32,30,32,1.06066017177982 +238,34,24,34,32,29,33,25,29,34,-0.408248290463863 +239,33,33,29,31,35,29,21,29,35,0 +240,30,32,32,33,27,27,32,27,33,-1.22474487139159 +241,28,33,32,29,30,30,32,26,33,0 +242,33,25,29,30,27,31,27,38,38,0.390566732942472 +243,27,26,29,41,20,33,30,34,41,0.257247877713763 +244,33,33,26,26,32,28,39,23,39,0 +245,28,31,32,32,24,25,32,36,36,-1.19207912135854 +246,25,30,34,35,28,34,24,30,35,0 +247,34,33,27,30,27,26,29,34,34,0.486664263392288 +248,29,30,31,29,25,38,29,29,38,0.875189948987367 +249,32,30,23,33,36,27,25,34,36,-0.697485832462916 +250,25,34,31,26,38,35,27,24,38,0.612372435695795 +251,41,28,24,27,20,40,31,29,41,0.65991201759609 +252,31,32,26,27,28,33,36,27,36,0.452267016866645 +253,25,31,27,27,37,28,33,32,37,0.404519917477945 +254,31,30,22,27,26,35,37,32,37,-0.327326835353989 +255,25,28,35,28,30,26,33,35,35,0.816496580927726 +256,27,28,30,31,33,30,24,37,37,0 +257,36,33,31,27,34,28,26,25,36,0.393919298579168 +258,30,26,34,27,37,25,31,30,37,0 +259,25,31,29,32,34,26,33,30,34,-0.5 +260,29,27,36,28,30,28,26,36,36,1.2362450755382 +261,30,33,33,26,28,34,30,26,34,0 +262,30,32,29,30,30,31,36,22,36,0 +263,27,28,30,32,38,29,27,29,38,0.884651736929383 +264,31,31,32,22,29,31,29,35,35,-0.857142857142857 +265,36,26,23,27,31,31,38,28,38,0.316227766016838 +266,30,36,34,28,27,27,26,32,36,0.875189948987367 +267,25,31,27,32,30,36,29,30,36,0 +268,37,29,26,31,30,31,26,30,37,0 +269,33,26,27,31,30,31,34,28,34,-0.566946709513841 +270,35,30,32,25,25,27,30,36,36,0 +271,37,30,34,24,21,35,29,30,37,0 +272,31,30,38,31,24,32,32,22,38,-0.643267520902677 +273,24,32,28,29,33,36,23,35,36,-0.33129457822454 +274,28,30,25,40,29,31,30,27,40,0.358568582800318 +275,27,30,29,30,33,33,35,23,35,0 +276,27,27,32,31,31,26,38,28,38,0.408248290463863 +277,27,25,31,41,29,33,26,28,41,0.933256525257383 +278,32,30,31,33,28,37,24,25,37,-0.375 +279,24,33,28,26,28,35,34,32,35,0 +280,26,35,30,35,25,31,31,27,35,-0.420084025208403 +281,36,28,29,32,29,30,24,32,36,0.457495710997814 +282,29,31,27,38,24,24,38,29,38,0.582771517414359 +283,29,31,33,30,27,35,24,31,35,-0.468521285665818 +284,25,36,26,30,28,30,34,31,36,0 +285,29,31,34,23,29,34,30,30,34,0 +286,37,30,27,32,26,29,28,31,37,0.462910049886276 +287,34,35,27,29,28,26,31,30,35,0.5 +288,33,27,31,23,28,38,26,34,38,0.327326835353989 +289,23,28,33,35,31,24,28,38,38,0.306186217847897 +290,27,25,30,25,31,39,28,35,39,0.650791373455968 +291,25,29,32,35,33,29,29,28,35,1.01418510567422 +292,35,32,30,23,30,29,29,32,35,0 +293,30,31,27,35,32,25,30,30,35,0 +294,23,29,26,35,39,27,29,32,39,0.622171016838255 +295,27,34,33,27,31,33,28,27,34,0.522232967867094 +296,35,31,34,23,28,29,33,27,35,0 +297,29,29,33,29,24,38,28,30,38,0.787838597158335 +298,34,35,28,34,31,24,30,24,35,-0.366508333068916 +299,27,32,26,31,27,34,32,31,34,-1.09544511501033 +300,24,32,33,33,36,24,25,33,36,-1.6564728911227 +301,23,33,34,19,30,34,34,33,34,-1.65703431221698 +302,29,28,34,27,35,30,31,26,35,0.5 +303,34,18,35,40,26,29,26,32,40,-0.23643312187173 +304,29,30,25,27,25,34,38,32,38,0.353553390593274 +305,41,25,28,35,30,25,29,27,41,0.87831006565368 +306,30,28,28,26,34,28,34,32,34,1.06066017177982 +307,40,22,27,30,26,32,33,30,40,0 +308,30,39,33,29,29,28,23,29,39,0.702246883176783 +309,31,34,22,35,30,30,28,30,35,0 +310,28,31,26,28,26,38,32,31,38,0.404519917477945 +311,28,37,31,30,29,24,35,26,37,0.369274472937998 +312,25,24,31,30,28,36,29,37,37,0.344123600805843 +313,31,33,32,36,30,28,21,29,36,-0.363803437554499 +314,29,36,24,25,38,29,27,32,38,0.639602149066831 +315,29,26,31,35,34,19,31,35,35,-0.591197566898576 +316,29,35,34,23,28,31,30,30,35,0 +317,27,31,24,36,25,33,40,24,40,0.534522483824849 +318,27,28,26,30,36,28,32,33,36,0.937042571331636 +319,22,35,33,34,27,29,27,33,35,-0.712068994916312 +320,37,34,32,31,31,27,20,28,37,-0.625543242171224 +321,35,30,21,30,26,35,39,24,39,0 +322,24,31,33,31,30,32,31,28,33,-1.13389341902768 +323,29,34,27,35,36,34,18,27,36,-0.795495128834866 +324,31,32,27,33,31,35,27,24,35,-0.875189948987367 +325,27,29,32,32,26,26,34,34,34,-0.468521285665818 +326,38,30,29,26,30,37,22,28,38,0.301511344577764 +327,23,28,34,34,32,25,37,27,37,0 +328,28,37,33,29,28,33,24,28,37,1.1817578957375 +329,34,35,35,27,32,27,25,25,35,0.361157559257308 +330,26,30,26,35,32,33,31,27,35,-0.474341649025257 +331,31,26,29,30,24,33,35,32,35,-0.442325868464691 +332,33,34,25,23,27,34,26,38,38,0 +333,35,36,30,27,31,23,31,27,36,-0.372104203767625 +334,24,26,33,27,29,29,37,35,37,0.702246883176783 +335,32,33,31,26,31,25,30,32,33,-1.09544511501033 +336,31,31,30,34,24,31,29,30,34,-0.566946709513841 +337,29,28,32,32,30,28,31,30,32,0 +338,30,26,36,35,27,31,26,29,36,0.416025147168922 +339,32,31,25,32,36,29,25,30,36,-0.433012701892219 +340,33,25,25,39,33,37,19,29,39,-0.474341649025257 +341,33,32,25,28,30,31,31,30,33,-0.639602149066831 +342,24,28,28,32,35,30,30,33,35,0 +343,32,27,29,34,28,29,36,25,36,0.866025403784439 +344,32,30,31,29,36,29,27,26,36,0.514495755427526 +345,29,30,29,27,29,28,36,32,36,1.13389341902768 +346,35,33,38,28,28,16,35,27,38,-0.231455024943138 +347,38,29,25,30,26,33,30,29,38,0.393919298579168 +348,33,32,33,26,26,26,36,28,36,0 +349,28,36,32,30,23,29,37,25,37,0.327326835353989 +350,22,33,27,29,31,31,32,35,35,-0.794719414239026 +351,21,30,34,28,33,31,27,36,36,-0.339683110243379 +352,34,26,37,37,29,21,25,31,37,0 +353,28,23,39,29,28,26,32,35,39,0.938314863256837 +354,18,31,36,35,35,31,23,31,36,-0.505291152639911 +355,35,26,27,31,32,31,32,26,35,-0.973328526784575 +356,33,23,34,25,33,33,29,30,34,-1.17170019882741 +357,29,28,31,28,33,27,31,33,33,0 +358,29,34,36,26,30,31,25,29,36,0.433012701892219 +359,34,28,29,28,31,25,32,33,34,0 +360,32,34,28,27,31,30,34,24,34,-0.457495710997814 +361,28,25,31,32,32,31,24,37,37,-0.762000762001143 +362,33,31,32,29,35,27,25,28,35,0 +363,31,31,33,31,29,27,31,27,33,-1.5 +364,27,28,29,31,33,34,28,30,34,0.639602149066831 +365,21,27,41,36,26,31,27,31,41,0.512614594630057 +366,35,29,37,28,30,27,34,20,37,0.297044262893002 +367,34,32,34,26,26,33,27,28,34,0 +368,30,27,31,25,33,28,33,33,33,-0.522232967867094 +369,32,29,29,37,30,28,30,25,37,0.462910049886276 +370,25,29,40,27,29,34,27,29,40,0.666666666666667 +371,28,37,26,29,24,34,28,34,37,1.06810349237447 +372,36,31,30,29,35,22,30,27,36,0 +373,32,26,29,32,24,33,33,31,33,-1.42302494707577 +374,25,24,34,30,38,31,31,27,38,-0.344123600805843 +375,28,27,27,32,32,37,28,29,37,1.38873014965883 +376,31,35,31,28,27,29,32,27,35,0 +377,32,30,29,26,32,27,32,32,32,-1.30930734141595 +378,28,29,30,30,28,29,31,35,35,0.707106781186548 +379,27,28,30,33,31,29,29,33,33,0.727606875108999 +380,30,30,31,33,31,30,25,30,33,0 +381,36,26,36,25,29,27,34,27,36,1.39497166492583 +382,33,29,29,33,31,33,23,29,33,0 +383,26,36,32,25,24,36,27,34,36,0.317999364001908 +384,26,33,29,29,33,29,29,32,33,1.30930734141595 +385,35,27,28,34,35,19,29,33,35,-0.58554004376912 +386,37,30,35,30,26,26,30,26,37,0 +387,25,28,33,34,33,24,33,30,34,-1.22474487139159 +388,34,29,26,30,34,31,26,30,34,0 +389,34,24,30,29,29,32,37,25,37,0.369274472937998 +390,26,32,23,29,37,27,38,28,38,0.90913729009699 +391,39,29,32,24,28,31,27,30,39,0.363803437554499 +392,27,32,28,34,31,33,25,30,34,-0.514495755427526 +393,36,32,35,23,28,28,27,31,36,0.369274472937998 +394,25,28,33,30,36,36,27,25,36,0.707106781186548 +395,29,29,30,35,31,31,26,29,35,0.625543242171224 +396,32,34,30,30,36,31,26,21,36,-0.341881729378914 +397,25,27,31,21,37,34,33,32,37,-0.913811548620257 +398,32,23,30,36,32,34,25,28,36,-0.722315118514615 +399,29,32,34,34,20,30,30,31,34,-0.361157559257308 +400,26,32,29,32,31,31,28,31,32,-1.5 +401,28,33,31,39,28,27,25,29,39,1.09952499920675 +402,26,30,35,27,30,36,26,30,36,0 +403,28,30,26,32,27,28,39,30,39,0.781133465884943 +404,33,29,25,35,29,35,31,23,35,0 +405,25,31,33,37,30,27,31,26,37,-0.404519917477945 +406,32,30,31,33,29,31,21,33,33,-0.824163383692134 +407,35,24,28,30,34,29,32,28,35,0.447213595499958 +408,35,32,32,24,31,32,28,26,35,-1.31278492348105 +409,31,31,32,24,34,31,27,30,34,-1.02899151085505 +410,32,29,32,31,30,35,27,24,35,-0.474341649025257 +411,25,24,31,24,42,36,24,34,42,0.934198732993827 +412,32,27,37,22,32,30,32,28,37,-0.722315118514615 +413,28,32,27,22,30,29,33,39,39,0.323498319610315 +414,34,42,36,23,20,33,25,27,42,0 +415,31,27,23,26,33,29,36,35,36,0 +416,31,37,28,29,25,26,33,31,37,0 +417,34,34,30,28,27,26,35,26,35,0.840168050416806 +418,36,19,36,30,32,30,26,31,36,-0.290020946713699 +419,32,29,29,24,32,31,35,28,35,0 +420,36,30,32,26,29,34,26,27,36,0.428571428571429 +421,24,29,31,24,29,34,36,33,36,0 +422,32,35,24,27,24,33,31,34,35,-1.0914103126635 +423,35,30,29,27,31,34,23,31,35,-0.420084025208403 +424,27,30,35,29,34,29,26,30,35,0.514495755427526 +425,31,29,25,31,28,36,31,29,36,0 +426,26,23,31,35,32,35,28,30,35,-0.381000381000571 +427,32,32,27,32,28,29,28,32,32,-0.727606875108999 +428,32,30,30,28,25,32,29,34,34,0 +429,35,25,30,28,33,36,25,28,36,0.75 +430,27,25,30,27,38,29,32,32,38,0.393919298579168 +431,26,30,36,27,37,30,31,23,37,0 +432,27,28,37,31,33,26,22,36,37,0.309426373877638 +433,29,28,32,31,31,27,26,36,36,0 +434,26,31,30,35,24,30,27,37,37,0 +435,34,30,30,27,29,24,34,32,34,0 +436,40,26,23,34,35,29,28,25,40,0.828517156108491 +437,29,28,23,34,29,33,32,32,34,-0.452267016866645 +438,30,29,33,31,33,26,35,23,35,-0.404519917477945 +439,28,29,30,28,35,29,30,31,35,0.707106781186548 +440,25,38,30,31,28,28,25,35,38,0.697485832462916 +441,26,30,30,28,33,25,34,34,34,0 +442,39,30,30,25,26,28,31,31,39,0 +443,33,34,28,32,28,28,36,21,36,0 +444,38,34,29,31,24,34,21,29,38,0 +445,37,34,19,32,36,34,25,23,37,-1.43200311151631 +446,29,26,27,40,28,26,32,32,40,1.02564518813674 +447,28,28,27,32,33,40,31,21,40,0.291385758707179 +448,35,28,32,23,37,30,24,31,37,-0.327326835353989 +449,32,33,27,34,26,25,36,27,36,0.381000381000571 +450,23,34,31,32,27,32,29,32,34,-1.35680105059994 +451,33,30,34,31,25,25,24,38,38,-0.319801074533416 +452,28,36,29,33,22,37,23,32,37,-0.288675134594813 +453,30,31,32,30,29,32,28,28,32,0 +454,26,33,26,27,26,32,35,35,35,0.387298334620742 +455,39,30,30,26,30,33,26,26,39,0 +456,30,24,30,35,28,33,32,28,35,0 +457,26,35,36,26,32,21,31,33,36,-0.928279121632914 +458,30,40,29,29,31,31,25,25,40,0.341881729378914 +459,27,25,31,30,30,34,38,25,38,0 +460,31,30,22,28,39,17,38,35,39,-0.210042012604201 +461,23,30,31,26,35,38,29,28,38,0.335410196624968 +462,37,33,29,32,26,30,25,28,37,0.408248290463863 +463,35,30,31,32,28,30,28,26,35,0 +464,32,32,32,31,28,29,29,27,32,0 +465,32,28,26,30,22,33,34,35,35,-0.722315118514615 +466,29,33,33,29,27,32,26,31,33,0 +467,27,29,32,31,28,34,29,30,34,0.707106781186548 +468,31,29,33,22,31,33,34,27,34,-0.80903983495589 +469,29,31,34,27,30,34,28,27,34,0.566946709513841 +470,27,29,30,32,25,33,33,31,33,-0.557086014531156 +471,32,28,34,26,26,34,33,27,34,0 +472,21,26,34,25,29,34,36,35,36,-0.866025403784439 +473,36,23,29,30,31,31,28,32,36,-0.433012701892219 +474,29,27,27,29,37,28,34,29,37,0.894427190999916 +475,34,23,32,27,35,24,34,31,35,-1.01904933073014 +476,29,25,33,33,23,35,29,33,35,-0.75 +477,36,23,36,35,25,25,31,29,36,0 +478,28,37,36,26,30,30,27,26,37,0.744208407535251 +479,24,23,25,39,38,32,32,27,39,0.257247877713763 +480,29,27,34,28,32,31,33,26,34,0 +481,34,29,29,30,28,34,35,21,35,0.353553390593274 +482,30,26,30,30,32,29,31,32,32,0 +483,32,37,32,28,20,29,35,27,37,-0.303045763365663 +484,28,30,28,29,36,32,34,23,36,0.397359707119513 +485,34,30,35,28,33,23,33,24,35,-1.04622874869437 +486,35,30,31,36,27,21,33,27,36,-0.325395686727984 +487,28,33,30,28,28,30,32,31,33,0 +488,18,31,30,31,34,30,35,31,35,-0.618852747755276 +489,24,30,28,24,36,36,31,31,36,-0.346410161513775 +490,28,27,29,33,37,27,31,28,37,1.37248713299344 +491,34,36,27,29,29,25,24,36,36,0.670820393249937 +492,25,38,25,23,36,31,28,34,38,0.286038776773678 +493,30,26,30,30,31,35,25,33,35,0 +494,32,22,39,26,34,25,32,30,39,-0.58554004376912 +495,36,33,29,28,28,31,21,34,36,0 +496,30,32,29,34,33,33,23,26,34,-0.832050294337844 +497,35,28,27,29,27,26,33,35,35,1.28571428571429 +498,28,28,27,37,33,30,28,29,37,1.42302494707577 +499,32,29,35,37,24,26,31,26,37,0 +500,33,24,28,30,30,31,32,32,33,-0.557086014531156 +501,27,33,30,26,28,32,37,27,37,0.848528137423857 +502,37,29,33,22,31,34,29,25,37,0 +503,35,29,32,26,25,31,28,34,35,0 +504,22,35,33,25,33,32,27,33,35,-1.70940864689457 +505,35,27,34,29,26,29,30,30,35,0.514495755427526 +506,36,22,24,31,36,33,28,30,36,-0.311085508419128 +507,33,31,33,30,26,30,30,27,33,0 +508,30,32,30,31,30,27,31,29,32,0 +509,34,30,30,33,31,26,27,29,34,0 +510,30,36,30,29,36,23,26,30,36,0 +511,29,28,33,34,27,30,29,30,34,0.670820393249937 +512,40,26,26,25,28,32,23,40,40,1.43655639204172 +513,30,30,35,27,35,32,27,24,35,0 +514,30,34,24,30,30,24,31,37,37,0 +515,35,26,28,25,30,22,37,37,37,0.557086014531156 +516,36,35,32,28,30,26,21,32,36,-0.650791373455968 +517,30,35,28,31,31,28,27,30,35,0 +518,27,44,32,27,34,20,30,26,44,0.680336051416609 +519,28,34,33,34,26,25,34,26,34,-0.390566732942472 +520,31,25,29,23,39,32,36,25,39,0 +521,30,37,29,30,31,33,22,28,37,0 +522,31,30,28,39,32,29,24,27,39,0.363803437554499 +523,36,27,37,26,30,27,27,30,37,1.125 +524,30,30,32,28,35,28,28,29,35,0.654653670707977 +525,24,33,41,32,32,28,22,28,41,0 +526,30,22,39,24,25,29,34,37,39,0.257247877713763 +527,29,32,33,25,28,36,28,29,36,0.925820099772551 +528,31,20,30,26,33,37,34,29,37,-0.306186217847897 +529,25,37,30,34,28,26,24,36,37,0.628970902033151 +530,30,32,24,34,24,33,31,32,34,-1.2362450755382 +531,29,30,32,31,31,29,27,31,32,-1 +532,27,39,28,28,26,37,27,28,39,1.27920429813366 +533,26,35,29,32,35,27,27,29,35,0.894427190999916 +534,32,31,34,23,35,32,28,25,35,-1.125 +535,25,30,34,35,31,31,27,27,35,-0.457495710997814 +536,33,33,28,30,33,31,27,25,33,-0.522232967867094 +537,27,27,27,39,28,25,30,37,39,1.55542754209564 +538,30,31,32,34,33,26,25,29,34,-0.5 +539,32,32,26,33,20,33,33,31,33,-1.37649440322337 +540,29,35,34,32,29,22,29,30,35,0.400891862868637 +541,26,30,25,31,27,38,31,32,38,-0.387298334620742 +542,34,26,33,32,33,28,24,30,34,-0.875189948987367 +543,30,25,33,33,26,33,30,30,33,0 +544,38,30,26,29,30,27,29,31,38,0.442325868464691 +545,31,36,31,24,34,26,29,29,36,0 +546,25,30,33,32,27,31,35,27,35,-0.468521285665818 +547,32,29,31,36,22,29,30,31,36,-0.408248290463863 +548,29,34,28,30,25,26,39,29,39,0.707106781186548 +549,27,23,30,26,36,36,35,27,36,0.948683298050514 +550,26,30,34,29,31,31,31,28,34,-0.670820393249937 +551,31,27,30,31,37,25,26,33,37,-0.404519917477945 +552,24,34,32,25,35,32,25,33,35,-1.4142135623731 +553,21,31,34,28,35,31,27,33,35,-0.702246883176783 +554,28,27,33,33,29,31,29,30,33,0.727606875108999 +555,28,29,35,25,26,33,36,28,36,1.16189500386223 +556,36,28,31,26,29,25,29,36,36,0.774596669241483 +557,29,26,35,30,28,29,28,35,35,0.973328526784575 +558,28,31,26,32,30,33,36,24,36,-0.412081691846067 +559,27,26,33,26,30,33,33,32,33,-1 +560,41,39,30,27,22,23,32,26,41,0.686243566496721 +561,28,31,27,30,27,30,34,33,34,0 +562,32,35,27,30,30,32,23,31,35,-0.442325868464691 +563,30,31,27,31,28,34,31,28,34,-0.707106781186548 +564,23,31,28,36,36,28,26,32,36,0.346410161513775 +565,28,32,28,30,29,23,32,38,38,0.372104203767625 +566,32,35,29,25,30,25,28,36,36,0.387298334620742 +567,31,30,29,30,23,27,31,39,39,0 +568,31,29,30,40,28,27,27,28,40,1.125 +569,35,29,26,31,26,34,30,29,35,0.486664263392288 +570,35,29,27,38,24,37,29,21,38,0.520265981714472 +571,28,30,29,35,27,29,35,27,35,0.986393923832144 +572,31,27,40,27,21,34,33,27,40,0.554700196225229 +573,28,34,29,34,29,30,23,33,34,0.433012701892219 +574,35,24,27,26,33,35,30,30,35,0 +575,22,24,32,30,31,34,31,36,36,-0.675052740555614 +576,25,29,31,30,36,27,30,32,36,0 +577,32,23,28,34,28,32,29,34,34,-0.428571428571429 +578,32,31,32,33,28,28,28,28,33,0.727606875108999 +579,36,29,28,28,30,29,27,33,36,1.06066017177982 +580,27,31,28,33,33,32,27,29,33,0 +581,32,34,26,30,30,29,24,35,35,0 +582,34,31,32,31,23,28,31,30,34,-0.973328526784575 +583,31,30,23,33,34,30,26,33,34,-0.424264068711929 +584,36,32,25,35,21,32,30,29,36,-0.639602149066831 +585,30,26,29,30,33,35,32,25,35,0 +586,35,29,32,27,27,28,38,24,38,1.03237080241753 +587,29,19,35,32,31,36,30,28,36,-0.306186217847897 +588,35,30,35,28,28,25,28,31,35,0.904534033733291 +589,21,33,34,24,38,28,34,28,38,-0.279751442472094 +590,33,30,27,27,34,28,26,35,35,0.904534033733291 +591,36,32,34,32,28,29,25,24,36,-0.377964473009227 +592,34,33,31,26,30,34,29,23,34,-0.408248290463863 +593,30,34,30,32,25,32,31,26,34,-0.522232967867094 +594,35,31,33,26,37,30,24,24,37,-0.323498319610315 +595,31,28,27,33,28,34,32,27,34,0.566946709513841 +596,35,35,25,28,25,29,27,36,36,1.03923048454133 +597,21,34,29,33,36,34,25,28,36,-0.618852747755276 +598,33,29,24,33,27,31,30,33,33,-0.493196961916072 +599,34,37,26,28,27,28,31,29,37,1.27279220613579 +600,32,33,28,40,28,31,24,24,40,0.304603849540086 +601,32,40,23,29,28,29,32,27,40,0.64699663922063 +602,34,31,24,24,37,28,32,30,37,-0.351123441588392 +603,33,30,31,25,31,30,32,28,33,-0.639602149066831 +604,29,30,25,29,34,35,29,29,35,1.01418510567422 +605,32,22,30,34,28,31,33,30,34,-0.428571428571429 +606,26,34,23,34,35,33,28,27,35,-0.353553390593274 +607,36,25,26,34,23,30,35,31,36,-0.327326835353989 +608,29,31,27,35,33,28,23,34,35,0 +609,22,28,37,25,33,35,32,28,37,0 +610,36,26,24,30,31,29,37,27,37,0.348742916231458 +611,20,35,26,31,33,31,35,29,35,-0.635998728003816 +612,32,21,30,28,38,35,29,27,38,0.309426373877638 +613,33,25,27,34,33,29,27,32,34,-0.468521285665818 +614,36,27,27,29,30,17,35,39,39,0.233549683248457 +615,25,33,28,27,35,29,30,33,35,0.468521285665818 +616,29,31,39,36,29,18,26,32,39,0 +617,27,33,26,28,31,31,30,34,34,-0.566946709513841 +618,22,28,32,33,31,38,26,30,38,-0.333333333333333 +619,23,24,34,30,30,36,34,29,36,0 +620,32,29,33,31,30,27,24,34,34,-0.486664263392288 +621,32,31,30,32,23,26,36,30,36,-0.404519917477945 +622,31,27,37,28,27,28,35,27,37,1.61807966991178 +623,22,36,26,32,37,33,27,27,37,0.303045763365663 +624,37,25,31,28,30,29,27,33,37,0.428571428571429 +625,34,33,30,29,30,27,32,25,34,0 +626,27,28,32,35,33,30,26,29,35,0.514495755427526 +627,27,30,34,34,26,23,30,36,36,0 +628,31,24,40,33,29,23,35,25,40,0 +629,32,28,26,27,31,34,33,29,34,0 +630,31,30,29,32,36,32,25,25,36,-0.433012701892219 +631,31,25,26,34,38,32,23,31,38,-0.639602149066831 +632,32,34,25,30,30,29,26,34,34,0 +633,25,29,28,28,26,33,34,37,37,1.14300114300171 +634,27,31,32,35,27,23,24,41,41,0.532413905649668 +635,34,31,30,36,29,28,28,24,36,0.428571428571429 +636,28,30,29,23,35,27,38,30,38,0.344123600805843 +637,24,30,33,32,21,24,40,36,40,-0.488273075262696 +638,36,29,28,24,29,34,32,28,36,0.840168050416806 +639,29,34,28,26,35,30,30,28,35,0.522232967867094 +640,36,26,29,29,31,32,20,37,37,0 +641,37,28,30,33,21,26,29,36,37,0.303045763365663 +642,35,31,32,27,33,25,27,30,35,-0.468521285665818 +643,30,30,26,27,33,35,29,30,35,0 +644,29,37,23,27,29,37,28,30,37,0.666666666666667 +645,33,25,36,33,29,24,29,31,36,0 +646,29,35,29,29,32,30,23,33,35,0.447213595499958 +647,36,37,21,36,30,23,25,32,37,-0.50709255283711 +648,28,36,25,29,28,29,34,31,36,0.904534033733291 +649,29,29,32,35,33,22,31,29,35,0 +650,33,27,35,33,24,28,38,22,38,-0.286038776773678 +651,24,28,30,27,38,33,29,31,38,0.381000381000571 +652,27,33,31,40,25,29,34,21,40,0 +653,31,30,38,34,27,23,23,34,38,-0.297044262893002 +654,30,29,30,39,30,32,26,24,39,0 +655,36,31,28,38,25,28,28,26,38,1.36752691751566 +656,30,26,39,31,33,26,28,27,39,0.727606875108999 +657,31,32,26,32,36,29,28,26,36,0 +658,25,29,32,28,32,30,38,26,38,0.390566732942472 +659,37,32,26,30,28,35,25,27,37,0.738548945875996 +660,31,34,31,35,21,35,27,26,35,-0.643267520902677 +661,31,35,32,28,33,27,29,25,35,0 +662,27,29,32,25,32,34,32,29,34,-0.530330085889911 +663,25,27,21,32,28,32,35,40,40,0 +664,29,25,34,28,26,33,31,34,34,0 +665,30,34,33,30,32,32,22,27,34,-0.824163383692134 +666,29,29,29,23,36,31,31,32,36,0 +667,33,35,27,34,30,16,32,33,35,-1.29580263837204 +668,24,30,34,26,37,30,32,27,37,0 +669,29,27,36,26,30,33,32,27,36,0.462910049886276 +670,34,35,32,20,29,29,35,26,35,-0.309426373877638 +671,29,28,31,25,31,34,32,30,34,-0.588348405414552 +672,30,27,33,30,34,19,35,32,35,-0.625543242171224 +673,32,34,23,28,30,29,34,30,34,0 +674,23,29,33,28,41,24,33,29,41,0.559502884944188 +675,32,26,30,27,32,33,31,29,33,-0.639602149066831 +676,35,35,25,28,28,32,24,33,35,0 +677,28,32,33,33,27,29,31,27,33,0 +678,21,35,28,36,37,30,23,30,37,0 +679,36,39,31,25,33,23,27,26,39,0.564432521030158 +680,32,26,24,35,26,28,33,36,36,0 +681,40,26,31,26,25,26,36,30,40,1.17108008753824 +682,24,32,35,28,32,26,27,36,36,0 +683,22,35,25,36,24,33,34,31,36,-1.16554303482872 +684,31,28,28,33,37,33,29,21,37,0 +685,26,31,29,29,31,33,30,31,33,-0.774596669241483 +686,25,32,29,33,31,28,35,27,35,0 +687,29,34,25,26,30,29,40,27,40,0.654653670707977 +688,41,29,28,33,26,29,29,25,41,0.635998728003816 +689,26,31,29,30,28,27,30,39,39,0.400891862868637 +690,28,29,30,27,25,33,37,31,37,0.428571428571429 +691,29,23,29,33,35,34,29,28,35,0.824163383692134 +692,36,30,28,27,30,31,29,29,36,0.588348405414552 +693,32,29,26,36,23,30,32,32,36,-0.794719414239026 +694,32,25,33,22,29,28,36,35,36,-0.327326835353989 +695,32,38,28,30,27,34,28,23,38,0.692820323027551 +696,35,37,25,24,28,30,28,33,37,0.688247201611685 +697,29,32,36,28,32,28,28,27,36,1.56669890360128 +698,29,27,30,36,32,31,23,32,36,-0.416025147168922 +699,25,31,32,29,39,22,30,32,39,-0.316227766016838 +700,22,29,30,32,35,28,26,38,38,0.317999364001908 +701,30,26,34,33,33,34,26,24,34,-1.17170019882741 +702,35,33,28,35,26,29,25,29,35,0.824163383692134 +703,36,20,24,38,32,31,34,25,38,-0.757936728959867 +704,31,31,32,33,29,32,23,29,33,-1.01418510567422 +705,27,33,24,36,29,25,29,37,37,0.658585559938142 +706,31,26,31,32,30,29,26,35,35,-0.530330085889911 +707,23,28,34,31,35,34,30,25,35,-0.363803437554499 +708,28,26,31,27,37,29,34,28,37,1.27279220613579 +709,27,26,39,23,32,32,30,31,39,-0.33129457822454 +710,26,30,33,33,34,29,28,27,34,0.530330085889911 +711,29,31,28,32,31,28,28,33,33,0 +712,30,27,24,26,37,35,32,29,37,0.358568582800318 +713,30,30,29,33,27,30,32,29,33,0 +714,36,31,29,23,33,28,34,26,36,0 +715,33,30,28,30,32,26,34,27,34,0 +716,23,31,35,30,30,28,31,32,35,-0.462910049886276 +717,29,25,25,35,35,28,32,31,35,0 +718,23,32,28,32,27,31,35,32,35,-1.27279220613579 +719,25,27,28,36,34,31,28,31,36,0.433012701892219 +720,29,26,34,29,28,29,34,31,34,1.13389341902768 +721,32,32,25,30,28,37,28,28,37,0.875189948987367 +722,27,29,27,32,28,27,32,38,38,1.24807544150677 +723,32,24,27,31,32,25,38,31,38,-0.707106781186548 +724,32,27,35,33,26,31,32,24,35,-1.24807544150677 +725,36,34,24,36,29,29,29,23,36,0.639602149066831 +726,26,31,30,34,29,32,30,28,34,0 +727,30,29,27,33,26,23,38,34,38,0.33129457822454 +728,29,28,33,29,34,26,27,34,34,1 +729,32,29,28,34,23,33,30,31,34,-0.462910049886276 +730,30,26,31,29,27,32,28,37,37,0.462910049886276 +731,28,30,31,27,32,26,33,33,33,-0.588348405414552 +732,34,26,26,38,26,29,34,27,38,1.36752691751566 +733,31,35,34,26,34,26,27,27,35,0.816496580927726 +734,29,32,32,27,31,29,29,31,32,0 +735,25,31,38,26,31,29,29,31,38,0 +736,28,27,28,35,35,25,35,27,35,1.51185789203691 +737,28,32,30,25,33,35,30,27,35,0 +738,26,30,27,37,37,30,20,33,37,0 +739,31,30,35,34,19,30,29,32,35,-0.327326835353989 +740,32,26,35,25,28,36,31,27,36,0.387298334620742 +741,28,34,29,35,26,28,32,28,35,1.47959088574822 +742,29,24,30,26,26,38,37,30,38,0.314485451016575 +743,28,32,25,30,30,37,31,27,37,0 +744,24,41,31,22,27,31,41,23,41,0.423207369515159 +745,26,31,38,32,24,32,23,34,38,-0.923380516876639 +746,27,31,32,30,31,28,29,32,32,-0.866025403784439 +747,37,26,22,26,28,38,31,32,38,0.287347885566345 +748,32,34,34,29,24,26,30,31,34,-0.447213595499958 +749,26,38,33,31,27,34,24,27,38,0.670820393249937 +750,24,31,27,32,30,33,34,29,34,-0.486664263392288 +751,30,30,31,27,27,34,25,36,36,0 +752,26,23,33,28,23,30,37,40,40,0.510753918455249 +753,28,35,36,26,32,25,26,32,36,0 +754,28,31,32,26,38,26,27,32,38,0.390566732942472 +755,33,32,31,37,36,32,16,23,37,-0.909717652294684 +756,21,23,30,35,38,34,29,30,38,0 +757,30,32,26,32,29,31,31,29,32,-0.801783725737273 +758,21,30,34,24,32,34,35,30,35,-0.635998728003816 +759,32,33,32,30,25,26,32,30,33,-1.07763181216065 +760,29,33,26,26,29,31,31,35,35,0 +761,32,36,28,28,21,36,27,32,36,0 +762,28,25,34,40,27,25,31,30,40,0.632455532033676 +763,34,34,23,24,24,34,34,33,34,-2.1322269467806 +764,35,37,23,30,25,26,32,32,37,-0.64699663922063 +765,39,30,28,21,30,26,38,28,39,0.536656314599949 +766,29,28,40,31,25,34,30,23,40,0.303045763365663 +767,30,28,37,28,28,26,33,30,37,0.914991421995628 +768,25,27,32,35,28,33,26,34,35,0 +769,38,25,25,32,28,26,29,37,38,0.928279121632914 +770,32,38,26,28,27,28,33,28,38,1.58943882847805 +771,31,32,30,27,31,31,29,29,32,-1 +772,35,29,26,29,30,28,33,30,35,0.566946709513841 +773,31,31,27,29,30,36,30,26,36,0 +774,32,30,39,28,28,29,25,29,39,0.774596669241483 +775,26,34,26,29,35,31,24,35,35,0 +776,33,30,32,30,26,29,33,27,33,0 +777,33,33,30,29,34,25,30,26,34,0 +778,31,27,30,28,30,33,31,30,33,0 +779,32,32,38,29,27,31,29,22,38,0 +780,29,33,32,31,23,33,33,26,33,-1.28571428571429 +781,27,33,27,26,28,36,32,31,36,0.452267016866645 +782,31,31,31,26,27,23,40,31,40,-0.635998728003816 +783,36,34,22,25,22,36,34,31,36,-1.32067635948844 +784,41,30,31,26,24,27,27,34,41,0.882522608121828 +785,34,26,30,27,27,24,33,39,39,0.959403223600247 +786,30,36,30,27,28,25,31,33,36,0 +787,27,31,34,30,31,25,36,26,36,-0.416025147168922 +788,26,33,28,30,29,35,27,32,35,0.514495755427526 +789,34,21,28,33,21,35,31,37,37,-1.04053196342894 +790,27,34,28,31,34,27,33,26,34,0.474341649025257 +791,35,32,27,28,29,26,32,31,35,0 +792,35,29,26,27,29,32,31,31,35,0 +793,27,34,35,35,25,25,29,30,35,0.377964473009227 +794,30,25,32,34,29,31,32,27,34,-0.547722557505166 +795,24,35,27,29,32,28,30,35,35,0.416025147168922 +796,24,31,39,28,29,30,29,30,39,0.381000381000571 +797,31,28,34,27,36,28,27,29,36,1.42302494707577 +798,27,36,30,30,26,30,30,31,36,0 +799,25,33,34,28,26,29,31,34,34,0 +800,29,37,30,26,33,30,33,22,37,0 +801,27,36,30,27,35,31,26,28,36,0.848528137423857 +802,28,35,24,34,29,31,32,27,35,0 +803,27,36,24,28,24,32,37,32,37,0 +804,28,25,28,34,34,36,28,27,36,1.58943882847805 +805,27,30,37,28,28,30,35,25,37,0.787838597158335 +806,39,36,29,31,25,27,29,24,39,0.615587011251092 +807,33,22,31,31,35,36,28,24,36,-0.639602149066831 +808,36,29,30,30,30,26,33,26,36,0 +809,32,25,32,24,30,26,37,34,37,-0.692820323027551 +810,27,28,25,29,32,30,33,36,36,0.452267016866645 +811,38,31,31,28,26,26,37,23,38,0.3 +812,35,33,24,24,32,31,31,30,35,-0.801783725737273 +813,34,27,29,27,36,20,34,33,36,-0.606091526731326 +814,28,28,26,27,33,28,30,40,40,1.40449376635357 +815,24,23,33,32,30,37,27,34,37,-0.64699663922063 +816,29,30,33,36,23,33,29,27,36,0.397359707119513 +817,25,32,27,26,31,39,30,30,39,0 +818,27,35,30,30,28,37,20,33,37,0 +819,30,29,25,28,38,28,33,29,38,0.816496580927726 +820,32,24,34,30,33,21,32,34,34,-1.31717111987628 +821,25,29,33,33,31,27,37,25,37,0 +822,32,34,32,30,29,25,28,30,34,0 +823,21,33,28,31,27,34,37,29,37,0 +824,31,23,31,37,34,26,22,36,37,-0.557086014531156 +825,37,27,32,31,30,25,22,36,37,-0.309426373877638 +826,30,28,34,29,25,21,35,38,38,0.288675134594813 +827,32,24,25,36,38,28,28,29,38,0.964901281354015 +828,25,24,33,30,39,31,26,32,39,-0.323498319610315 +829,33,32,23,34,28,27,38,25,38,0 +830,28,32,26,30,25,31,32,36,36,-0.447213595499958 +831,32,32,26,32,23,33,30,32,33,-1.78885438199983 +832,32,32,31,29,28,29,30,29,32,1.06066017177982 +833,28,31,27,29,34,30,27,34,34,0.566946709513841 +834,30,30,33,24,32,25,28,38,38,0 +835,32,34,31,27,33,19,32,32,34,-1.30930734141595 +836,29,37,28,30,22,33,30,31,37,0 +837,32,31,32,22,30,27,30,36,36,-0.390566732942472 +838,29,27,32,29,28,36,29,30,36,1.13389341902768 +839,32,31,28,32,28,29,28,32,32,0 +840,31,36,36,28,28,28,25,28,36,1.58943882847805 +841,30,36,27,30,36,22,32,27,36,0 +842,35,33,32,29,25,33,24,29,35,-0.404519917477945 +843,25,28,34,31,27,31,35,29,35,0 +844,37,28,31,28,35,27,29,25,37,1.17170019882741 +845,24,35,31,27,35,32,27,29,35,0 +846,29,29,35,26,25,34,36,26,36,0.727606875108999 +847,36,27,29,27,31,28,37,25,37,1.09952499920675 +848,31,27,36,34,34,29,24,25,36,0 +849,35,30,30,24,27,31,29,34,35,0 +850,31,27,28,28,25,35,38,28,38,1.455213750218 +851,28,38,21,30,28,32,30,33,38,0 +852,32,27,34,38,34,28,24,23,38,0 +853,24,24,24,36,36,32,31,33,36,-0.913811548620257 +854,28,33,33,37,34,25,25,25,37,-0.333333333333333 +855,26,25,27,30,35,31,26,40,40,0.918558653543692 +856,32,28,29,29,32,26,38,26,38,0.80903983495589 +857,30,21,29,37,34,25,31,33,37,-0.314485451016575 +858,28,26,34,29,39,21,36,27,39,0.814821714382667 +859,28,31,35,20,34,29,32,31,35,-0.688247201611685 +860,28,33,24,28,27,35,28,37,37,1.43427433120127 +861,26,26,40,33,20,30,36,29,40,0.254456678903991 +862,24,32,29,25,36,27,33,34,36,-0.363803437554499 +863,28,30,38,27,27,27,40,23,40,1.35803619063778 +864,28,33,30,27,35,34,22,31,35,-0.375 +865,31,30,34,23,30,36,24,32,36,-0.356034497458156 +866,27,28,35,34,32,28,25,31,35,0.452267016866645 +867,34,25,37,21,28,36,26,33,37,-0.276172385369497 +868,27,32,29,32,30,30,33,27,33,0 +869,34,31,28,32,27,31,33,24,34,-0.948683298050514 +870,29,28,31,28,33,27,30,34,34,0.639602149066831 +871,26,33,34,25,29,29,31,33,34,0 +872,26,42,28,27,28,32,27,30,42,1.23117402250218 +873,36,29,22,35,32,34,24,28,36,-0.311085508419128 +874,23,28,33,29,33,33,34,27,34,-0.824163383692134 +875,22,29,28,32,34,28,39,28,39,0.953998092005724 +876,38,25,29,29,32,23,29,35,38,0.650791373455968 +877,38,28,28,28,31,27,32,28,38,1.75037989797473 +878,39,33,24,32,33,31,26,22,39,-0.858116330321033 +879,35,30,35,34,26,23,28,29,35,0.363803437554499 +880,23,34,32,26,35,29,31,30,35,-0.400891862868637 +881,30,32,32,32,32,27,22,33,33,-1.71428571428571 +882,37,31,26,25,25,31,31,34,37,-0.733016666137831 +883,27,23,28,31,32,30,43,26,43,0.534522483824849 +884,34,26,30,22,32,36,30,30,36,0 +885,27,26,33,33,28,36,31,26,36,0.424264068711929 +886,24,30,35,31,25,38,31,26,38,-0.327326835353989 +887,32,33,30,26,26,29,34,30,34,0 +888,32,26,23,30,33,34,32,30,34,-0.857142857142857 +889,25,31,27,34,33,31,31,28,34,-1.04446593573419 +890,33,28,28,25,36,28,26,36,36,1.46603333227566 +891,28,31,30,27,31,32,25,36,36,-0.474341649025257 +892,30,30,34,25,29,30,31,31,34,0 +893,36,31,28,29,25,31,30,30,36,0 +894,30,22,31,35,32,36,28,26,36,-0.346410161513775 +895,27,35,29,32,29,26,35,27,35,0.894427190999916 +896,23,36,33,33,24,31,31,29,36,-0.712068994916312 +897,27,34,33,35,26,36,22,27,36,0 +898,30,28,34,27,27,38,27,29,38,1.20267558860591 +899,25,27,34,30,37,31,29,27,37,0.404519917477945 +900,30,36,35,31,23,33,26,26,36,-0.344123600805843 +901,35,30,28,25,27,37,27,31,37,0.768221279597376 +902,28,34,32,29,29,29,28,31,34,1.5 +903,35,30,25,32,27,33,32,26,35,-0.884651736929383 +904,33,31,35,28,29,27,24,33,35,0 +905,29,27,24,33,28,37,31,31,37,0 +906,32,30,33,28,32,29,33,23,33,-0.948683298050514 +907,27,30,29,27,36,34,22,35,36,0.335410196624968 +908,41,29,29,22,23,28,40,28,41,0.686243566496721 +909,34,27,37,28,26,32,27,29,37,1.22474487139159 +910,34,29,27,22,31,31,29,37,37,0 +911,33,20,29,31,33,28,34,32,34,-1.06066017177982 +912,25,32,32,37,27,29,28,30,37,0.433012701892219 +913,24,35,28,26,32,28,29,38,38,1.02564518813674 +914,28,32,25,34,29,34,30,28,34,0.50709255283711 +915,36,29,32,32,26,29,30,26,36,0.480384461415261 +916,32,28,29,30,30,34,30,27,34,0 +917,34,22,30,35,32,31,24,32,35,-1.03923048454133 +918,29,30,32,32,28,33,31,25,33,-0.612372435695795 +919,29,30,37,35,26,27,22,34,37,0.316227766016838 +920,28,26,33,27,32,38,28,28,38,1.58943882847805 +921,24,33,32,24,37,30,31,29,37,-0.363803437554499 +922,38,31,25,23,26,30,29,38,38,0.286038776773678 +923,29,25,22,27,39,33,33,32,39,-0.298511157062997 +924,38,30,29,36,31,26,24,26,38,0.325395686727984 +925,36,30,28,24,31,34,31,26,36,-0.404519917477945 +926,27,30,34,26,30,27,34,32,34,0 +927,32,29,29,29,26,25,34,36,36,0.848528137423857 +928,23,32,33,34,29,24,32,33,34,-1.5 +929,34,29,23,27,33,33,30,31,34,-0.437594974493684 +930,25,32,29,31,36,17,30,40,40,-0.231455024943138 +931,30,32,35,30,28,31,29,25,35,0 +932,29,22,45,25,26,32,27,34,45,0.894427190999916 +933,24,34,37,20,33,32,29,31,37,-0.866025403784439 +934,30,26,35,27,31,30,25,36,36,0 +935,36,31,26,34,22,28,29,34,36,0 +936,30,32,30,28,26,28,38,28,38,0.866025403784439 +937,30,32,28,31,31,36,28,24,36,-0.457495710997814 +938,21,27,30,29,34,28,36,35,36,0.323498319610315 +939,33,28,29,34,36,33,24,23,36,-0.670820393249937 +940,29,33,29,28,31,31,27,32,33,0 +941,36,28,32,28,31,23,29,33,36,0 +942,26,28,34,30,26,38,25,33,38,0.692820323027551 +943,28,32,28,33,37,24,31,27,37,0.393919298579168 +944,32,26,30,36,26,28,30,32,36,0 +945,33,28,37,33,28,26,28,27,37,1.66410058867569 +946,31,33,31,29,27,27,36,26,36,0 +947,36,29,32,31,27,29,29,27,36,1.07763181216065 +948,30,19,31,38,33,28,31,30,38,-0.3 +949,34,26,31,26,35,31,22,35,35,-0.662589156449079 +950,30,28,32,29,30,33,31,27,33,0 +951,30,36,31,31,31,24,36,21,36,-0.612372435695795 +952,28,30,27,29,30,34,38,24,38,0.372104203767625 +953,33,35,33,28,38,18,27,28,38,-0.259160527674408 +954,32,30,32,34,29,30,28,25,34,0 +955,30,29,29,37,26,30,34,25,37,0.408248290463863 +956,20,28,28,33,31,39,30,31,39,-0.3 +957,31,25,25,28,28,40,34,29,40,0.959403223600247 +958,29,30,32,33,30,29,26,31,33,0 +959,35,30,32,29,28,30,21,35,35,0 +960,25,29,27,31,34,37,30,27,37,0.404519917477945 +961,21,23,31,30,39,35,35,26,39,-0.254456678903991 +962,29,29,35,28,29,30,31,29,35,1.455213750218 +963,33,28,30,33,26,28,32,30,33,0 +964,32,31,23,32,31,33,29,29,33,-1.01418510567422 +965,30,29,29,31,30,31,29,31,31,0 +966,35,21,36,22,36,30,25,35,36,-1.24140883290355 +967,23,40,34,31,28,27,34,23,40,0.271607238127556 +968,29,31,34,33,28,24,30,31,34,-0.514495755427526 +969,29,33,31,28,37,30,29,23,37,0.397359707119513 +970,30,28,30,38,31,33,24,26,38,0 +971,30,29,36,26,38,24,28,29,38,0.675052740555614 +972,29,31,29,34,33,31,23,30,34,-0.480384461415261 +973,28,33,26,35,27,35,24,32,35,0 +974,30,29,33,35,30,27,28,28,35,0.588348405414552 +975,34,24,34,31,28,30,28,31,34,-0.480384461415261 +976,34,27,34,31,28,31,30,25,34,-0.5 +977,35,25,29,22,33,34,35,27,35,-0.643267520902677 +978,31,28,35,33,28,28,34,23,35,0.400891862868637 +979,26,30,29,34,32,31,29,29,34,0.670820393249937 +980,28,26,32,31,29,29,33,32,33,0 +981,26,42,31,30,18,25,35,33,42,-0.22237479499833 +982,35,27,33,26,30,23,36,30,36,0 +983,32,28,33,24,35,27,35,26,35,0 +984,29,27,25,37,35,26,34,27,37,1.3856406460551 +985,29,31,31,33,34,27,28,27,34,0 +986,29,32,34,27,29,30,28,31,34,0.707106781186548 +987,29,29,32,34,29,30,30,27,34,0.75 +988,35,25,31,25,31,29,32,32,35,-0.914991421995628 +989,28,28,40,26,31,31,27,29,40,1.0914103126635 +990,25,30,36,33,25,33,29,29,36,0.412081691846067 +991,34,21,31,34,28,26,33,33,34,-1.37649440322337 +992,31,30,31,31,26,28,34,29,34,-0.670820393249937 +993,33,36,30,31,27,29,25,29,36,0.468521285665818 +994,32,32,31,30,25,29,35,26,35,-0.486664263392288 +995,32,26,26,34,30,29,31,32,34,-0.557086014531156 +996,31,33,39,23,30,29,33,22,39,-0.290020946713699 +997,35,31,31,26,31,22,31,33,35,-0.781133465884943 +998,26,27,33,29,30,36,24,35,36,0.369274472937998 +999,35,33,25,25,30,32,28,32,35,-0.866025403784439 \ No newline at end of file