{ "info": { "author": "Evgeny Yurtaev", "author_email": "eugene@yurtaev.com", "bugtrack_url": null, "classifiers": [], "description": "Segment Tree with range operations\n==================================\n\n.. figure:: https://img.shields.io/badge/license-MIT-blue.svg\n :alt: LicenseLink\n\nThis is a general implementation of a segment tree for Python 3.\n\n- Semigroup range operations in O(logN) time\n- Built-in support for ``max``, ``min``, ``sum`` operations\n- Extensible to support more semigroup operations\n- Limited support for multidimensional trees\n- Python 2 is not currently supported\n\nInstallation\n============\n\n``pip3 install segment-tree``\n\nSegment Tree (one-dimensional)\n==============================\n\nBasic usage\n-----------\n\n.. code:: python\n\n\n from segment_tree import *\n array = [3, 1, 5, 3, 13, 7, 2, 7, 2]\n tree = SegmentTree(array)\n\n t.query(1, 3, \"sum\") # 9\n t.update(0, 10) # [10, 1, 5, 3, 13, 7, 2, 7, 2]\n t.query(0, 8, \"min\") # 0\n t.update(2, -1) # [10, 1, -1, 3, 13, 7, 2, 0, 2]\n t.query(0, 2, \"min\") # -1\n\nUpdates on ranges\n-----------------\n\n.. code:: python\n\n from segment_tree import *\n array = [1, 2, 3, 4, 5]\n t = SegmentTree(array)\n t.update_range(0, 2, 6) # 6 6 6 4 5\n t.update_range(1, 4, 2) # 6 2 2 2 2\n t.query(0, 3, \"min\") # 2\n\nMultidimensional Segment Tree (alpha version, might have bugs)\n==============================================================\n\nBasic usage\n-----------\n\n.. code:: python\n\n from segment_tree import *\n a = [[[1, 2], [1, 3]], [[-1, -2], [-1, -3]]]\n tree = MultidimensionalSegmentTree(a)\n\n tree.query([(0, 1), (0, 0), (0, 0)], max) # 1\n tree.query([(1, 1), (0, 1), (0, 1)], sum) # -7\n tree.query([(0, 1), (1, 1), (0, 1)], min) # -3\n\nTests\n=====\n\nExecute ``python3 setup.py test`` to run tests.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/evgeth/segment_tree", "keywords": "segment,tree,range,rmq,multidimensional", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "segment-tree", "package_url": "https://pypi.org/project/segment-tree/", "platform": "", "project_url": "https://pypi.org/project/segment-tree/", "project_urls": { "Homepage": "https://github.com/evgeth/segment_tree" }, "release_url": "https://pypi.org/project/segment-tree/0.3.2/", "requires_dist": null, "requires_python": ">=3", "summary": "Multidimensional segment tree with ranges updates.", "version": "0.3.2" }, "last_serial": 3420011, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "0b27073e56e430229d6d18c3e248df0b", "sha256": "47a7163c1c2a64268c3b06607a3f456d65cbd4384085ff70863140e5ab1e7099" }, "downloads": -1, "filename": "segment_tree-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0b27073e56e430229d6d18c3e248df0b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3199, "upload_time": "2017-12-12T14:25:12", "url": "https://files.pythonhosted.org/packages/33/68/6bfa1201e1c3815bc027a78da9efc3894c84a1ee7f40a7d9ec0ea71fe5f4/segment_tree-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48d745f941155162e6489fb958f9a823", "sha256": "0dd9e3596470f3006a7cf0814f9ace7fa2e859d6ae9e591dde9af13f5b33bbde" }, "downloads": -1, "filename": "segment_tree-0.1.tar.gz", "has_sig": false, "md5_digest": "48d745f941155162e6489fb958f9a823", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 922, "upload_time": "2017-12-12T13:41:50", "url": "https://files.pythonhosted.org/packages/0d/8d/c22125faf372efc986001435fcc1cabe9d8c5730b16e0ccce26d0cee6ce7/segment_tree-0.1.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "1b6217aadad21dce93ac10d342e94d5d", "sha256": "e2911ff26b1609e2b47b785a2234c7450bd2b994fafb8fbaa97263f25a1beb4d" }, "downloads": -1, "filename": "segment_tree-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1b6217aadad21dce93ac10d342e94d5d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4135, "upload_time": "2017-12-15T06:30:07", "url": "https://files.pythonhosted.org/packages/f6/9f/69e47ec4aceaeed877f66c60f7f04e83b83f07e583d8d57f5a8bb1c6981a/segment_tree-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "beb980126aeff33f2f337a1b2faf4122", "sha256": "ee2bc4497c1927357721a1dbddf040de9b1f5462e6da70f22596048ece93bcc1" }, "downloads": -1, "filename": "segment_tree-0.1.4.tar.gz", "has_sig": false, "md5_digest": "beb980126aeff33f2f337a1b2faf4122", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 2272, "upload_time": "2017-12-15T06:30:09", "url": "https://files.pythonhosted.org/packages/ce/30/f20ff0c670f8284d71c1b8862fa234ef274c0b4db8096c64c4c41fcd95ce/segment_tree-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "dbdc976a9308f27b2ff594460e1c5940", "sha256": "465da3ab811956325d2bfb0b528eee55767b09bf8d3b7f1b2d130456859797f2" }, "downloads": -1, "filename": "segment_tree-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dbdc976a9308f27b2ff594460e1c5940", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 5289, "upload_time": "2017-12-15T11:48:19", "url": "https://files.pythonhosted.org/packages/23/9e/25a497119105cbb7204a7b7d402f618b0f8bd965a7c2d28d4908f5a4978b/segment_tree-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fb860f470875a961e53e9e53e50643c", "sha256": "ef59c31f65d17c0478bcc3556efd1f8463d9be95d714aff8d6d1786353561892" }, "downloads": -1, "filename": "segment_tree-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1fb860f470875a961e53e9e53e50643c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3024, "upload_time": "2017-12-15T11:48:20", "url": "https://files.pythonhosted.org/packages/d0/b8/9e47d70be19fb2d236382b5886fcf169603f37028b736d009ca55cb8fed4/segment_tree-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "cad6e0ba36bc34d2f1f070c1fabc3838", "sha256": "f5aacb4665f6806c7a7dac24545bebfd1f2a9e88606676e3f57839a90562af90" }, "downloads": -1, "filename": "segment_tree-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cad6e0ba36bc34d2f1f070c1fabc3838", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 5294, "upload_time": "2017-12-15T11:51:33", "url": "https://files.pythonhosted.org/packages/dd/bb/868fa0f1c49196aa5645647d9a43206bf67bcc08e556b4a26bf8bb1b141f/segment_tree-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2eb56c79f49a7d70b4adab203b9bd2ff", "sha256": "4598ddbb84fb48027c32b0d412fa1486518a6f2460010dd68ff6c9cd025cb07e" }, "downloads": -1, "filename": "segment_tree-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2eb56c79f49a7d70b4adab203b9bd2ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3262, "upload_time": "2017-12-15T11:51:34", "url": "https://files.pythonhosted.org/packages/db/fc/ac745a9ee8554e4190016c526916368e1018d3b032956e9219e5aff756d4/segment_tree-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "af9adc923cfd898465170c9d775e9c3e", "sha256": "5c1c7180c8858758223bbe8f69ecf23a57bf95eb87ee6715820677d0326b0cff" }, "downloads": -1, "filename": "segment_tree-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "af9adc923cfd898465170c9d775e9c3e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 5655, "upload_time": "2017-12-15T12:29:05", "url": "https://files.pythonhosted.org/packages/f0/ca/5667ddf6d5376911b9607d8a637810c51ef174e88bb06b911ceebf81e83e/segment_tree-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9523d835a710ba8900bbb16081dda6a", "sha256": "bb638d95d2d771eb643779dc4afc1042b2c29bd400ab3402716eb2f4d0ea775b" }, "downloads": -1, "filename": "segment_tree-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d9523d835a710ba8900bbb16081dda6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3613, "upload_time": "2017-12-15T12:29:07", "url": "https://files.pythonhosted.org/packages/6e/e1/756aeb15c3093d0066c780767273f10abb525c064b14b1e15929c90f5076/segment_tree-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "02b65ea94b267fc4d00476c9f1b428e3", "sha256": "31b1513f8852ceef12d24c4a4697d2be05d5bea236925a5d4f2abf1bacb0cb71" }, "downloads": -1, "filename": "segment_tree-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "02b65ea94b267fc4d00476c9f1b428e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4955, "upload_time": "2017-12-15T12:38:36", "url": "https://files.pythonhosted.org/packages/d1/22/b96902513d15e8ca463bdcabb822eea8fcbd3970460702a195b862795c9e/segment_tree-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "464032183dea1656094a310123921fcd", "sha256": "7b8b780dd3a4b219941cd970d10e69eab8c37fa9c402a08c09d92e333d42e312" }, "downloads": -1, "filename": "segment_tree-0.2.3.tar.gz", "has_sig": false, "md5_digest": "464032183dea1656094a310123921fcd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3090, "upload_time": "2017-12-15T12:38:38", "url": "https://files.pythonhosted.org/packages/c4/ce/3abe4aa150364e3654e5f9d0c5da89d1c4ac366d5aab758e1a10015299c9/segment_tree-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ea54ce994e4ac91fa7f00fcd50e651bd", "sha256": "fbbcacec13c15a56dbdbb2aad9d4f8f81687057f26f3257167a0e8b8d5f81353" }, "downloads": -1, "filename": "segment_tree-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ea54ce994e4ac91fa7f00fcd50e651bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6606, "upload_time": "2017-12-15T13:04:33", "url": "https://files.pythonhosted.org/packages/5d/ff/43554f1d944f6deb7f7360cedde32a830370c08e9954052458ff10cf1ab4/segment_tree-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f38a37bf137798684c141702542bcf8", "sha256": "295589e1fe76d56bcd36733af0c8c97ba306b1404e068c2397633c7334155b8c" }, "downloads": -1, "filename": "segment_tree-0.3.0.tar.gz", "has_sig": false, "md5_digest": "3f38a37bf137798684c141702542bcf8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4067, "upload_time": "2017-12-15T13:04:36", "url": "https://files.pythonhosted.org/packages/fb/27/90b62c5ef67ac081aed9a0e3727b98cefc150f174c6ab499797556f197e1/segment_tree-0.3.0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "22ee041ae041a3755f51a19e720c7bc9", "sha256": "408e320a624ba7470f0ba3dd19539e91974c496c8c4ded1aba193c08d765ba64" }, "downloads": -1, "filename": "segment_tree-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "22ee041ae041a3755f51a19e720c7bc9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6776, "upload_time": "2017-12-15T13:43:51", "url": "https://files.pythonhosted.org/packages/4c/bc/291bc465c23e36830c35ddda9cc973ca77095f2bc8c0f49d7df157d2f3c3/segment_tree-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3316681fb18cbf6d548af92da28fc39", "sha256": "591941461e89a26d3b16ae5c271c7057d56b2efcbbf598b8c56f4131abe7deea" }, "downloads": -1, "filename": "segment_tree-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c3316681fb18cbf6d548af92da28fc39", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4233, "upload_time": "2017-12-15T13:43:53", "url": "https://files.pythonhosted.org/packages/4c/f7/75b9a6242357597233f4ad34d9382d6a88118ebf8609058a67f7f694c174/segment_tree-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "22ee041ae041a3755f51a19e720c7bc9", "sha256": "408e320a624ba7470f0ba3dd19539e91974c496c8c4ded1aba193c08d765ba64" }, "downloads": -1, "filename": "segment_tree-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "22ee041ae041a3755f51a19e720c7bc9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6776, "upload_time": "2017-12-15T13:43:51", "url": "https://files.pythonhosted.org/packages/4c/bc/291bc465c23e36830c35ddda9cc973ca77095f2bc8c0f49d7df157d2f3c3/segment_tree-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3316681fb18cbf6d548af92da28fc39", "sha256": "591941461e89a26d3b16ae5c271c7057d56b2efcbbf598b8c56f4131abe7deea" }, "downloads": -1, "filename": "segment_tree-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c3316681fb18cbf6d548af92da28fc39", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4233, "upload_time": "2017-12-15T13:43:53", "url": "https://files.pythonhosted.org/packages/4c/f7/75b9a6242357597233f4ad34d9382d6a88118ebf8609058a67f7f694c174/segment_tree-0.3.2.tar.gz" } ] }