From d2084ae2ce7a91805a832b621b8d49bd942f1423 Mon Sep 17 00:00:00 2001 From: blocage Date: Fri, 10 May 2024 18:27:10 +0400 Subject: [PATCH] Stash --- data/.DS_Store | Bin 6148 -> 0 bytes .../leetcode/2015-09-27T13-00-00Z/labels.json | 1 - data/leetcode/2015-09-27T13-00-00Z/links.json | 1 - .../2015-09-27T13-00-00Z/positions.json | 1 - data/leetcode/manifest.json | 6 - dev-server.js | 42 --- package.json | 49 --- src/config.js | 3 - src/destination.jsx | 42 --- src/galaxy/about.jsx | 12 - src/galaxy/galaxyPage.jsx | 32 -- src/galaxy/help.jsx | 175 --------- src/galaxy/hoverInfo.jsx | 26 -- src/galaxy/loadingIndicator.jsx | 27 -- src/galaxy/native/appConfig.js | 212 ----------- src/galaxy/native/getNearestIndex.js | 45 --- src/galaxy/native/lineView.js | 104 ------ src/galaxy/native/renderer.js | 347 ------------------ src/galaxy/native/sceneKeyboardBinding.js | 53 --- src/galaxy/native/touchControl.js | 57 --- src/galaxy/noWebgl.jsx | 14 - .../nodeDetails/degreeWindowViewModel.js | 54 --- src/galaxy/nodeDetails/nodeDetailsStore.js | 57 --- src/galaxy/nodeDetails/nodeDetailsView.jsx | 37 -- src/galaxy/nodeDetails/templates/all.js | 12 - .../templates/commonPackageTemplate.jsx | 35 -- src/galaxy/nodeDetails/templates/default.jsx | 37 -- src/galaxy/nodeDetails/templates/leetcode.jsx | 13 - src/galaxy/runtime/around.js | 7 - src/galaxy/runtime/clientRuntime.js | 14 - src/galaxy/runtime/cls.js | 7 - src/galaxy/runtime/highlight.js | 7 - src/galaxy/runtime/search.js | 12 - src/galaxy/runtime/showLinks.js | 16 - src/galaxy/scene.jsx | 77 ---- .../search/SearchResultWindowViewModel.js | 11 - src/galaxy/search/searchBoxModel.js | 40 -- src/galaxy/search/searchBoxView.jsx | 38 -- src/galaxy/service/appEvents.js | 91 ----- src/galaxy/service/edgeFinder.js | 92 ----- src/galaxy/service/eventMirror.js | 61 --- src/galaxy/service/graph.js | 111 ------ src/galaxy/service/graphLoader.js | 182 --------- src/galaxy/service/request.js | 67 ---- src/galaxy/steeringIndicator.jsx | 29 -- src/galaxy/store/baseNodeViewModel.js | 22 -- .../store/graphSepcific/graphSpecificInfo.js | 48 --- src/galaxy/store/hover.js | 52 --- src/galaxy/store/scene.js | 92 ----- src/galaxy/utils/formatNumber.js | 5 - src/galaxy/utils/key.js | 12 - src/galaxy/utils/resources.js | 11 - src/galaxy/windows/nodeInfoRow.jsx | 29 -- src/galaxy/windows/nodeListView.jsx | 59 --- src/galaxy/windows/windowCollectionModel.js | 46 --- src/galaxy/windows/windowCollectionView.jsx | 33 -- src/galaxy/windows/windowTitle.jsx | 64 ---- src/index.html | 28 -- src/main.jsx | 18 - src/styles/main.less | 238 ------------ src/styles/nodeDetails.less | 70 ---- src/styles/search.less | 86 ----- src/styles/steering.less | 36 -- src/styles/variables.less | 3 - src/welcome.jsx | 20 - styles.css | 5 - webpack.local.config.js | 60 --- webpack.production.config.js | 46 --- 68 files changed, 3439 deletions(-) delete mode 100644 data/.DS_Store delete mode 100644 data/leetcode/2015-09-27T13-00-00Z/labels.json delete mode 100644 data/leetcode/2015-09-27T13-00-00Z/links.json delete mode 100644 data/leetcode/2015-09-27T13-00-00Z/positions.json delete mode 100644 data/leetcode/manifest.json delete mode 100644 dev-server.js delete mode 100644 package.json delete mode 100644 src/config.js delete mode 100644 src/destination.jsx delete mode 100644 src/galaxy/about.jsx delete mode 100644 src/galaxy/galaxyPage.jsx delete mode 100644 src/galaxy/help.jsx delete mode 100644 src/galaxy/hoverInfo.jsx delete mode 100644 src/galaxy/loadingIndicator.jsx delete mode 100644 src/galaxy/native/appConfig.js delete mode 100644 src/galaxy/native/getNearestIndex.js delete mode 100644 src/galaxy/native/lineView.js delete mode 100644 src/galaxy/native/renderer.js delete mode 100644 src/galaxy/native/sceneKeyboardBinding.js delete mode 100644 src/galaxy/native/touchControl.js delete mode 100644 src/galaxy/noWebgl.jsx delete mode 100644 src/galaxy/nodeDetails/degreeWindowViewModel.js delete mode 100644 src/galaxy/nodeDetails/nodeDetailsStore.js delete mode 100644 src/galaxy/nodeDetails/nodeDetailsView.jsx delete mode 100644 src/galaxy/nodeDetails/templates/all.js delete mode 100644 src/galaxy/nodeDetails/templates/commonPackageTemplate.jsx delete mode 100644 src/galaxy/nodeDetails/templates/default.jsx delete mode 100644 src/galaxy/nodeDetails/templates/leetcode.jsx delete mode 100644 src/galaxy/runtime/around.js delete mode 100644 src/galaxy/runtime/clientRuntime.js delete mode 100644 src/galaxy/runtime/cls.js delete mode 100644 src/galaxy/runtime/highlight.js delete mode 100644 src/galaxy/runtime/search.js delete mode 100644 src/galaxy/runtime/showLinks.js delete mode 100644 src/galaxy/scene.jsx delete mode 100644 src/galaxy/search/SearchResultWindowViewModel.js delete mode 100644 src/galaxy/search/searchBoxModel.js delete mode 100644 src/galaxy/search/searchBoxView.jsx delete mode 100644 src/galaxy/service/appEvents.js delete mode 100644 src/galaxy/service/edgeFinder.js delete mode 100644 src/galaxy/service/eventMirror.js delete mode 100644 src/galaxy/service/graph.js delete mode 100644 src/galaxy/service/graphLoader.js delete mode 100644 src/galaxy/service/request.js delete mode 100644 src/galaxy/steeringIndicator.jsx delete mode 100644 src/galaxy/store/baseNodeViewModel.js delete mode 100644 src/galaxy/store/graphSepcific/graphSpecificInfo.js delete mode 100644 src/galaxy/store/hover.js delete mode 100644 src/galaxy/store/scene.js delete mode 100644 src/galaxy/utils/formatNumber.js delete mode 100644 src/galaxy/utils/key.js delete mode 100644 src/galaxy/utils/resources.js delete mode 100644 src/galaxy/windows/nodeInfoRow.jsx delete mode 100644 src/galaxy/windows/nodeListView.jsx delete mode 100644 src/galaxy/windows/windowCollectionModel.js delete mode 100644 src/galaxy/windows/windowCollectionView.jsx delete mode 100644 src/galaxy/windows/windowTitle.jsx delete mode 100644 src/index.html delete mode 100644 src/main.jsx delete mode 100644 src/styles/main.less delete mode 100644 src/styles/nodeDetails.less delete mode 100644 src/styles/search.less delete mode 100644 src/styles/steering.less delete mode 100644 src/styles/variables.less delete mode 100644 src/welcome.jsx delete mode 100644 styles.css delete mode 100644 webpack.local.config.js delete mode 100644 webpack.production.config.js diff --git a/data/.DS_Store b/data/.DS_Store deleted file mode 100644 index e264614cdfbe7f0036d1008aa8df81989d9239ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKy-EW?5T4N#2R11zEcXQhcZ!JJ8qOz(m6gOmEOJ~x><@eu8z01n@dd2?=10wu zD-=OQXJF@>o88%+{or9u6U>gCp&lJjS^@y& z8La|aY6*!+j@hv@L=S{56lkIBB?enK{K>~<$Ij5giM{w>U-_+gVO<^bCml|l4MPV5 z!9bsZUHcr%{eO;MX0XWbhs0Mf5Dfe=26$A@>M1tmck9;ndl}ouSMkehml4LqG`$6%70U1Fu`}GV1^U diff --git a/data/leetcode/2015-09-27T13-00-00Z/labels.json b/data/leetcode/2015-09-27T13-00-00Z/labels.json deleted file mode 100644 index b597313..0000000 --- a/data/leetcode/2015-09-27T13-00-00Z/labels.json +++ /dev/null @@ -1 +0,0 @@ -["38-count-and-say", "38-count-and-say/2024-04-19 00.22.45 - Accepted - runtime 44ms - memory 16.6MB.py", "2121-find-if-path-exists-in-graph", "2121-find-if-path-exists-in-graph/2024-04-21 09.28.47 - Accepted - runtime 1606ms - memory 108.8MB.py", "23-merge-k-sorted-lists", "23-merge-k-sorted-lists/2023-03-13 14.17.22 - Accepted - runtime 103ms - memory 18.4MB.py", "23-merge-k-sorted-lists/2023-03-12 11.19.48 - Accepted - runtime 81ms - memory 18.4MB.py", "1765-merge-in-between-linked-lists", "1765-merge-in-between-linked-lists/2024-03-21 00.55.26 - Accepted - runtime 188ms - memory 21.2MB.py", "1013-fibonacci-number", "1013-fibonacci-number/2022-07-06 13.09.40 - Accepted - runtime 48ms - memory 13.9MB.py", "1013-fibonacci-number/2022-07-06 13.09.08 - Accepted - runtime 1330ms - memory 13.8MB.py", "1013-fibonacci-number/2022-07-06 13.11.54 - Accepted - runtime 56ms - memory 14MB.py", "1013-fibonacci-number/2022-07-06 13.09.52 - Accepted - runtime 59ms - memory 13.9MB.py", "907-koko-eating-bananas", "907-koko-eating-bananas/2023-03-08 10.32.52 - Accepted - runtime 466ms - memory 15.4MB.py", "907-koko-eating-bananas/2023-03-08 10.32.09 - Accepted - runtime 829ms - memory 15.5MB.py", "1430-find-the-k-beauty-of-a-number", "1430-find-the-k-beauty-of-a-number/2024-04-30 21.22.07 - Accepted - runtime 39ms - memory 16.4MB.py", "100-same-tree", "100-same-tree/2022-06-24 17.00.11 - Accepted - runtime 62ms - memory 13.8MB.py", "100-same-tree/2024-02-26 15.58.30 - Accepted - runtime 5ms - memory 11.5MB.cpp", "100-same-tree/2024-02-18 16.55.55 - Accepted - runtime 0ms - memory 11.5MB.cpp", "100-same-tree/2023-01-10 19.53.33 - Accepted - runtime 32ms - memory 14MB.py", "2887-sort-vowels-in-a-string", "2887-sort-vowels-in-a-string/2024-04-06 11.00.30 - Accepted - runtime 131ms - memory 18.8MB.py", "2044-number-of-wonderful-substrings", "2044-number-of-wonderful-substrings/2024-04-30 09.08.22 - Accepted - runtime 1426ms - memory 17.5MB.py", "2903-insert-greatest-common-divisors-in-linked-list", "2903-insert-greatest-common-divisors-in-linked-list/2024-04-17 22.49.19 - Accepted - runtime 54ms - memory 19.6MB.py", "792-binary-search", "792-binary-search/2024-03-12 15.08.10 - Accepted - runtime 187ms - memory 18.1MB.py", "792-binary-search/2022-07-21 16.44.05 - Accepted - runtime 416ms - memory 15.6MB.py", "792-binary-search/2023-04-01 23.42.27 - Accepted - runtime 238ms - memory 15.5MB.py", "1-two-sum", "1-two-sum/2022-06-14 17.49.56 - Accepted - runtime 132ms - memory 15.4MB.py", "1-two-sum/2022-04-24 20.33.39 - Accepted - runtime 66ms - memory 15.1MB.py", "1-two-sum/2024-03-08 19.17.13 - Accepted - runtime 51ms - memory 17.9MB.py", "1-two-sum/2022-04-24 20.33.20 - Accepted - runtime 86ms - memory 15.3MB.py", "1-two-sum/2022-04-24 20.32.16 - Accepted - runtime 7220ms - memory 14.9MB.py", "1-two-sum/2022-06-14 17.49.42 - Accepted - runtime 109ms - memory 15.4MB.py", "1-two-sum/2022-04-24 21.00.39 - Accepted - runtime 69ms - memory 15.3MB.py", "1-two-sum/2022-12-30 22.14.34 - Accepted - runtime 56ms - memory 15.4MB.py", "1-two-sum/2022-04-24 20.33.33 - Accepted - runtime 69ms - memory 15.2MB.py", "1-two-sum/2024-02-16 13.41.13 - Accepted - runtime 8ms - memory 14.1MB.cpp", "1-two-sum/2022-04-24 20.59.59 - Accepted - runtime 107ms - memory 15.4MB.py", "2238-a-number-after-a-double-reversal", "2238-a-number-after-a-double-reversal/2022-07-21 16.18.20 - Accepted - runtime 46ms - memory 13.9MB.py", "2532-remove-letter-to-equalize-frequency", "2532-remove-letter-to-equalize-frequency/2024-04-05 15.05.03 - Accepted - runtime 32ms - memory 16.7MB.py", "2532-remove-letter-to-equalize-frequency/2024-04-05 15.05.17 - Accepted - runtime 29ms - memory 16.7MB.py", "66-plus-one", "66-plus-one/2022-06-15 23.39.23 - Accepted - runtime 72ms - memory 13.9MB.py", "66-plus-one/2024-02-17 14.25.06 - Accepted - runtime 0ms - memory 10.3MB.cpp", "94-binary-tree-inorder-traversal", "94-binary-tree-inorder-traversal/2022-06-23 18.59.13 - Accepted - runtime 37ms - memory 13.9MB.py", "2048-build-array-from-permutation", "2048-build-array-from-permutation/2022-08-01 16.03.14 - Accepted - runtime 214ms - memory 14.1MB.py", "2859-add-two-promises", "2859-add-two-promises/2024-04-01 14.36.19 - Accepted - runtime 55ms - memory 50.4MB.js", "1635-number-of-good-pairs", "1635-number-of-good-pairs/2022-08-01 16.30.28 - Accepted - runtime 65ms - memory 13.8MB.py", "455-assign-cookies", "455-assign-cookies/2024-01-27 20.15.39 - Accepted - runtime 145ms - memory 18.6MB.py", "455-assign-cookies/2022-07-03 20.14.52 - Accepted - runtime 252ms - memory 15.5MB.py", "728-self-dividing-numbers", "728-self-dividing-numbers/2022-09-26 14.17.53 - Accepted - runtime 121ms - memory 13.9MB.py", "103-binary-tree-zigzag-level-order-traversal", "103-binary-tree-zigzag-level-order-traversal/2023-02-19 21.06.38 - Accepted - runtime 44ms - memory 14.1MB.py", "807-custom-sort-string", "807-custom-sort-string/2024-03-11 12.30.10 - Accepted - runtime 30ms - memory 16.5MB.py", "807-custom-sort-string/2024-03-11 12.29.55 - Accepted - runtime 46ms - memory 16.4MB.py", "1474-longest-zigzag-path-in-a-binary-tree", "1474-longest-zigzag-path-in-a-binary-tree/2023-04-20 00.06.58 - Accepted - runtime 456ms - memory 63MB.py", "3213-count-subarrays-where-max-element-appears-at-least-k-times", "3213-count-subarrays-where-max-element-appears-at-least-k-times/2024-03-29 12.15.06 - Accepted - runtime 896ms - memory 31.4MB.py", "129-sum-root-to-leaf-numbers", "129-sum-root-to-leaf-numbers/2023-03-14 15.11.48 - Accepted - runtime 29ms - memory 13.8MB.py", "129-sum-root-to-leaf-numbers/2023-03-14 15.13.26 - Accepted - runtime 32ms - memory 14MB.py", "129-sum-root-to-leaf-numbers/2024-04-15 08.36.50 - Accepted - runtime 26ms - memory 16.5MB.py", "129-sum-root-to-leaf-numbers/2023-03-14 15.07.37 - Accepted - runtime 32ms - memory 13.8MB.py", "129-sum-root-to-leaf-numbers/2024-04-15 08.29.06 - Accepted - runtime 31ms - memory 16.5MB.py", "2663-distribute-money-to-maximum-children", "2663-distribute-money-to-maximum-children/2024-04-08 23.37.51 - Accepted - runtime 44ms - memory 16.7MB.py", "2493-reverse-odd-levels-of-binary-tree", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.06.10 - Accepted - runtime 4028ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 14.58.11 - Accepted - runtime 941ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.00.13 - Accepted - runtime 943ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 22.36.25 - Accepted - runtime 3892ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.02.47 - Accepted - runtime 949ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.01.54 - Accepted - runtime 3772ms - memory 20.4MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.02.20 - Accepted - runtime 3840ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.02.58 - Accepted - runtime 3805ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.05.40 - Accepted - runtime 4119ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 14.59.55 - Accepted - runtime 3860ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.05.18 - Accepted - runtime 3913ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.03.51 - Accepted - runtime 3698ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.03.40 - Accepted - runtime 3804ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.06.35 - Accepted - runtime 3609ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.06.44 - Accepted - runtime 952ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.05.28 - Accepted - runtime 3958ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.05.50 - Accepted - runtime 4019ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.06.00 - Accepted - runtime 4013ms - memory 20.6MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 14.59.35 - Accepted - runtime 3961ms - memory 20.7MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.04.03 - Accepted - runtime 946ms - memory 20.4MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 15.06.23 - Accepted - runtime 3852ms - memory 20.5MB.py", "2493-reverse-odd-levels-of-binary-tree/2022-10-03 14.32.24 - Accepted - runtime 3777ms - memory 20.5MB.py", "1395-minimum-time-visiting-all-points", "1395-minimum-time-visiting-all-points/2022-07-27 01.07.04 - Accepted - runtime 112ms - memory 14MB.py", "1092-maximum-difference-between-node-and-ancestor", "1092-maximum-difference-between-node-and-ancestor/2024-01-11 21.21.54 - Accepted - runtime 46ms - memory 19MB.py", "203-remove-linked-list-elements", "203-remove-linked-list-elements/2022-06-29 14.21.15 - Accepted - runtime 83ms - memory 17.8MB.py", "203-remove-linked-list-elements/2022-06-29 14.24.16 - Accepted - runtime 98ms - memory 26.9MB.py", "203-remove-linked-list-elements/2022-06-29 14.24.06 - Accepted - runtime 81ms - memory 27MB.py", "904-leaf-similar-trees", "904-leaf-similar-trees/2024-01-04 16.11.54 - Accepted - runtime 46ms - memory 17.5MB.py", "904-leaf-similar-trees/2024-01-04 16.18.33 - Accepted - runtime 35ms - memory 17.4MB.py", "2812-find-the-maximum-achievable-number", "2812-find-the-maximum-achievable-number/2024-02-02 19.17.17 - Accepted - runtime 45ms - memory 16.5MB.py", "9-palindrome-number", "9-palindrome-number/2023-03-05 12.50.17 - Accepted - runtime 74ms - memory 13.8MB.py", "9-palindrome-number/2022-04-24 19.57.39 - Accepted - runtime 104ms - memory 13.9MB.py", "9-palindrome-number/2024-02-16 14.56.24 - Accepted - runtime 17ms - memory 10.6MB.cpp", "202-happy-number", "202-happy-number/2022-06-30 14.39.41 - Accepted - runtime 96ms - memory 13.9MB.py", "1243-sum-of-nodes-with-even-valued-grandparent", "1243-sum-of-nodes-with-even-valued-grandparent/2024-04-30 21.44.42 - Accepted - runtime 71ms - memory 19.4MB.py", "515-find-largest-value-in-each-tree-row", "515-find-largest-value-in-each-tree-row/2024-01-22 00.13.33 - Accepted - runtime 42ms - memory 18.2MB.py", "515-find-largest-value-in-each-tree-row/2024-01-22 00.05.58 - Accepted - runtime 41ms - memory 18.3MB.py", "696-count-binary-substrings", "696-count-binary-substrings/2024-04-08 17.06.30 - Accepted - runtime 99ms - memory 18.3MB.py", "206-reverse-linked-list", "206-reverse-linked-list/2024-01-21 21.30.48 - Accepted - runtime 39ms - memory 17.8MB.py", "206-reverse-linked-list/2024-01-21 21.32.39 - Accepted - runtime 29ms - memory 17.6MB.py", "206-reverse-linked-list/2024-03-21 21.46.14 - Accepted - runtime 31ms - memory 17.6MB.py", "206-reverse-linked-list/2024-03-08 18.12.39 - Accepted - runtime 38ms - memory 17.8MB.py", "206-reverse-linked-list/2022-11-27 19.33.04 - Accepted - runtime 45ms - memory 20.5MB.py", "206-reverse-linked-list/2022-11-25 22.26.51 - Accepted - runtime 77ms - memory 20.4MB.py", "206-reverse-linked-list/2024-03-09 15.14.43 - Accepted - runtime 37ms - memory 17.7MB.py", "206-reverse-linked-list/2024-02-17 16.13.35 - Accepted - runtime 0ms - memory 11.9MB.cpp", "206-reverse-linked-list/2023-04-02 15.45.56 - Accepted - runtime 42ms - memory 20.5MB.py", "206-reverse-linked-list/2024-03-09 15.15.43 - Accepted - runtime 33ms - memory 17.6MB.py", "206-reverse-linked-list/2022-06-29 13.23.56 - Accepted - runtime 49ms - memory 20.5MB.py", "234-palindrome-linked-list", "234-palindrome-linked-list/2024-03-22 13.01.45 - Accepted - runtime 41ms - memory 17.3MB.py", "234-palindrome-linked-list/2024-03-22 13.00.58 - Accepted - runtime 308ms - memory 36.4MB.py", "234-palindrome-linked-list/2022-06-29 13.25.53 - Accepted - runtime 859ms - memory 46.5MB.py", "128-longest-consecutive-sequence", "128-longest-consecutive-sequence/2022-07-05 18.22.25 - Accepted - runtime 740ms - memory 28MB.py", "394-decode-string", "394-decode-string/2024-04-04 09.53.47 - Accepted - runtime 37ms - memory 16.5MB.py", "678-valid-parenthesis-string", "678-valid-parenthesis-string/2024-04-07 14.11.33 - Accepted - runtime 39ms - memory 16.6MB.py", "1393-maximum-value-of-k-coins-from-piles", "1393-maximum-value-of-k-coins-from-piles/2023-04-15 14.32.05 - Accepted - runtime 4459ms - memory 141.1MB.py", "92-reverse-linked-list-ii", "92-reverse-linked-list-ii/2022-07-21 22.46.11 - Accepted - runtime 49ms - memory 14MB.py", "92-reverse-linked-list-ii/2024-02-17 16.28.17 - Accepted - runtime 0ms - memory 9.4MB.cpp", "816-design-hashset", "816-design-hashset/2024-02-24 22.10.17 - Accepted - runtime 102ms - memory 21.7MB.py", "2793-count-the-number-of-complete-components", "2793-count-the-number-of-complete-components/2024-04-26 17.02.35 - Accepted - runtime 496ms - memory 17MB.py", "412-fizz-buzz", "412-fizz-buzz/2022-06-30 21.15.15 - Accepted - runtime 55ms - memory 15.2MB.py", "145-binary-tree-postorder-traversal", "145-binary-tree-postorder-traversal/2024-02-18 22.08.10 - Accepted - runtime 0ms - memory 9.8MB.cpp", "145-binary-tree-postorder-traversal/2022-07-07 11.11.06 - Accepted - runtime 61ms - memory 13.9MB.py", "2137-final-value-of-variable-after-performing-operations", "2137-final-value-of-variable-after-performing-operations/2022-08-01 16.09.56 - Accepted - runtime 96ms - memory 13.8MB.py", "2524-largest-positive-integer-that-exists-with-its-negative", "2524-largest-positive-integer-that-exists-with-its-negative/2024-05-02 09.12.42 - Accepted - runtime 105ms - memory 16.8MB.py", "7-reverse-integer", "7-reverse-integer/2022-06-29 10.37.22 - Accepted - runtime 56ms - memory 14MB.py", "7-reverse-integer/2023-01-06 21.21.32 - Accepted - runtime 48ms - memory 13.9MB.py", "561-array-partition", "561-array-partition/2023-01-27 13.06.41 - Accepted - runtime 341ms - memory 16.6MB.py", "2491-smallest-even-multiple", "2491-smallest-even-multiple/2022-09-30 16.06.11 - Accepted - runtime 66ms - memory 13.9MB.py", "2264-minimum-sum-of-four-digit-number-after-splitting-digits", "2264-minimum-sum-of-four-digit-number-after-splitting-digits/2022-07-21 16.09.50 - Accepted - runtime 48ms - memory 13.9MB.py", "1065-binary-string-with-substrings-representing-1-to-n", "1065-binary-string-with-substrings-representing-1-to-n/2024-04-30 20.57.38 - Accepted - runtime 32ms - memory 16.4MB.py", "290-word-pattern", "290-word-pattern/2022-07-18 20.32.42 - Accepted - runtime 53ms - memory 13.9MB.py", "290-word-pattern/2023-01-06 02.01.38 - Accepted - runtime 53ms - memory 14MB.py", "290-word-pattern/2022-07-18 20.19.03 - Accepted - runtime 42ms - memory 14MB.py", "1823-determine-if-string-halves-are-alike", "1823-determine-if-string-halves-are-alike/2022-09-26 14.23.33 - Accepted - runtime 57ms - memory 13.8MB.py", "1823-determine-if-string-halves-are-alike/2024-01-12 16.43.47 - Accepted - runtime 38ms - memory 17.2MB.py", "1823-determine-if-string-halves-are-alike/2024-01-12 16.42.16 - Accepted - runtime 34ms - memory 17.2MB.py", "226-invert-binary-tree", "226-invert-binary-tree/2024-02-17 16.02.51 - Accepted - runtime 5ms - memory 11.3MB.cpp", "226-invert-binary-tree/2024-01-14 23.33.43 - Accepted - runtime 29ms - memory 17.5MB.py", "226-invert-binary-tree/2024-02-18 17.48.32 - Accepted - runtime 5ms - memory 11.4MB.cpp", "226-invert-binary-tree/2022-06-30 14.51.01 - Accepted - runtime 52ms - memory 13.7MB.py", "226-invert-binary-tree/2022-06-30 14.48.00 - Accepted - runtime 58ms - memory 13.9MB.py", "753-open-the-lock", "753-open-the-lock/2024-04-22 09.48.00 - Accepted - runtime 389ms - memory 18.1MB.py", "300-longest-increasing-subsequence", "300-longest-increasing-subsequence/2024-04-27 18.35.54 - Accepted - runtime 1107ms - memory 17MB.py", "300-longest-increasing-subsequence/2024-04-27 18.39.01 - Accepted - runtime 1105ms - memory 17MB.py", "10-regular-expression-matching", "10-regular-expression-matching/2024-03-10 18.10.28 - Accepted - runtime 82ms - memory 16.6MB.py", "225-implement-stack-using-queues", "225-implement-stack-using-queues/2022-07-18 12.55.34 - Accepted - runtime 38ms - memory 14MB.py", "1677-matrix-diagonal-sum", "1677-matrix-diagonal-sum/2023-05-08 11.29.50 - Accepted - runtime 115ms - memory 16.6MB.py", "3055-maximum-odd-binary-number", "3055-maximum-odd-binary-number/2024-03-01 15.35.35 - Accepted - runtime 37ms - memory 16.5MB.py", "3055-maximum-odd-binary-number/2024-03-01 15.38.05 - Accepted - runtime 0ms - memory 9.2MB.cpp", "415-add-strings", "415-add-strings/2022-07-03 09.19.58 - Accepted - runtime 60ms - memory 14MB.py", "1666-make-the-string-great", "1666-make-the-string-great/2024-04-05 10.23.05 - Accepted - runtime 46ms - memory 16.6MB.py", "133-clone-graph", "133-clone-graph/2023-04-08 23.57.51 - Accepted - runtime 41ms - memory 14.3MB.py", "133-clone-graph/2023-03-05 19.19.39 - Accepted - runtime 39ms - memory 14.4MB.py", "133-clone-graph/2023-03-05 19.02.28 - Accepted - runtime 48ms - memory 14.5MB.py", "857-positions-of-large-groups", "857-positions-of-large-groups/2024-04-07 00.24.09 - Accepted - runtime 38ms - memory 16.6MB.py", "2871-double-a-number-represented-as-a-linked-list", "2871-double-a-number-represented-as-a-linked-list/2024-05-07 10.18.31 - Accepted - runtime 323ms - memory 20.2MB.py", "2871-double-a-number-represented-as-a-linked-list/2024-05-07 10.29.41 - Accepted - runtime 235ms - memory 19.4MB.py", "175-combine-two-tables", "175-combine-two-tables/2023-05-13 10.04.02 - Accepted - runtime 845ms - memory 0B.sql", "238-product-of-array-except-self", "238-product-of-array-except-self/2024-03-15 15.28.11 - Accepted - runtime 172ms - memory 23.8MB.py", "822-unique-morse-code-words", "822-unique-morse-code-words/2022-09-20 14.28.25 - Accepted - runtime 76ms - memory 14MB.py", "443-string-compression", "443-string-compression/2024-04-04 09.32.21 - Accepted - runtime 55ms - memory 16.8MB.py", "1962-single-threaded-cpu", "1962-single-threaded-cpu/2022-12-30 11.01.51 - Accepted - runtime 1998ms - memory 63.6MB.py", "1962-single-threaded-cpu/2022-12-30 11.00.36 - Accepted - runtime 2007ms - memory 63.5MB.py", "1962-single-threaded-cpu/2022-12-29 23.23.08 - Accepted - runtime 1862ms - memory 63.5MB.py", "1610-xor-operation-in-an-array", "1610-xor-operation-in-an-array/2022-08-02 00.34.35 - Accepted - runtime 50ms - memory 13.8MB.py", "1802-number-of-students-unable-to-eat-lunch", "1802-number-of-students-unable-to-eat-lunch/2024-04-08 11.33.08 - Accepted - runtime 31ms - memory 16.7MB.py", "1802-number-of-students-unable-to-eat-lunch/2024-04-08 11.32.01 - Accepted - runtime 50ms - memory 16.5MB.py", "2502-sort-the-people", "2502-sort-the-people/2022-09-27 11.27.35 - Accepted - runtime 292ms - memory 14.6MB.py", "1604-least-number-of-unique-integers-after-k-removals", "1604-least-number-of-unique-integers-after-k-removals/2024-02-16 13.01.54 - Accepted - runtime 341ms - memory 36.9MB.py", "1604-least-number-of-unique-integers-after-k-removals/2024-02-16 13.16.39 - Accepted - runtime 534ms - memory 39.5MB.py", "2304-cells-in-a-range-on-an-excel-sheet", "2304-cells-in-a-range-on-an-excel-sheet/2022-08-01 21.40.30 - Accepted - runtime 80ms - memory 13.8MB.py", "14-longest-common-prefix", "14-longest-common-prefix/2024-02-16 20.12.12 - Accepted - runtime 31ms - memory 16.6MB.py", "14-longest-common-prefix/2024-02-16 20.14.08 - Accepted - runtime 29ms - memory 16.7MB.py", "14-longest-common-prefix/2022-04-18 22.41.04 - Accepted - runtime 37ms - memory 13.9MB.py", "14-longest-common-prefix/2024-02-16 22.04.32 - Accepted - runtime 0ms - memory 11.2MB.cpp", "101-symmetric-tree", "101-symmetric-tree/2024-02-18 17.44.52 - Accepted - runtime 5ms - memory 17.3MB.cpp", "101-symmetric-tree/2022-06-24 19.53.57 - Accepted - runtime 73ms - memory 13.7MB.py", "101-symmetric-tree/2023-03-13 14.00.04 - Accepted - runtime 31ms - memory 14MB.py", "101-symmetric-tree/2024-02-18 17.33.01 - Accepted - runtime 5ms - memory 17.7MB.cpp", "101-symmetric-tree/2023-03-13 14.11.32 - Accepted - runtime 35ms - memory 13.8MB.py", "975-range-sum-of-bst", "975-range-sum-of-bst/2024-01-08 14.37.44 - Accepted - runtime 135ms - memory 24.7MB.py", "975-range-sum-of-bst/2024-02-20 13.09.29 - Accepted - runtime 86ms - memory 63MB.cpp", "975-range-sum-of-bst/2022-08-01 21.33.20 - Accepted - runtime 601ms - memory 23.1MB.py", "190-reverse-bits", "190-reverse-bits/2022-06-29 10.31.49 - Accepted - runtime 7ms - memory 5.3MB.c", "190-reverse-bits/2022-06-29 10.30.40 - Accepted - runtime 71ms - memory 13.8MB.py", "190-reverse-bits/2022-06-29 10.31.10 - Accepted - runtime 8ms - memory 6MB.cpp", "190-reverse-bits/2022-08-20 17.15.16 - Accepted - runtime 10ms - memory 5.9MB.cpp", "231-power-of-two", "231-power-of-two/2022-06-30 21.54.52 - Accepted - runtime 92ms - memory 13.9MB.py", "231-power-of-two/2022-06-30 21.56.09 - Accepted - runtime 49ms - memory 14MB.py", "1993-sum-of-all-subset-xor-totals", "1993-sum-of-all-subset-xor-totals/2022-09-20 19.42.40 - Accepted - runtime 169ms - memory 13.8MB.py", "1993-sum-of-all-subset-xor-totals/2022-09-20 19.45.26 - Accepted - runtime 63ms - memory 14MB.py", "8-string-to-integer-atoi", "8-string-to-integer-atoi/2024-03-31 18.54.54 - Accepted - runtime 40ms - memory 16.5MB.py", "434-number-of-segments-in-a-string", "434-number-of-segments-in-a-string/2022-07-10 22.41.12 - Accepted - runtime 75ms - memory 13.9MB.py", "1693-sum-of-all-odd-length-subarrays", "1693-sum-of-all-odd-length-subarrays/2022-09-20 14.43.46 - Accepted - runtime 129ms - memory 13.8MB.py", "1693-sum-of-all-odd-length-subarrays/2022-09-20 14.46.02 - Accepted - runtime 72ms - memory 13.9MB.py", "3351-maximize-happiness-of-selected-children", "3351-maximize-happiness-of-selected-children/2024-05-09 09.59.41 - Accepted - runtime 813ms - memory 43.6MB.py", "1762-furthest-building-you-can-reach", "1762-furthest-building-you-can-reach/2022-06-23 16.23.20 - Accepted - runtime 745ms - memory 28.6MB.py", "1762-furthest-building-you-can-reach/2024-02-17 15.57.37 - Accepted - runtime 78ms - memory 57.2MB.cpp", "20-valid-parentheses", "20-valid-parentheses/2023-04-10 23.39.59 - Accepted - runtime 22ms - memory 13.8MB.py", "20-valid-parentheses/2022-04-23 09.58.48 - Accepted - runtime 43ms - memory 13.9MB.py", "20-valid-parentheses/2024-02-16 22.53.29 - Accepted - runtime 0ms - memory 7.7MB.cpp", "20-valid-parentheses/2024-02-16 22.46.33 - Accepted - runtime 3ms - memory 8MB.cpp", "20-valid-parentheses/2023-04-10 23.39.46 - Accepted - runtime 40ms - memory 13.8MB.py", "20-valid-parentheses/2024-02-16 22.46.20 - Accepted - runtime 2ms - memory 8MB.cpp", "20-valid-parentheses/2023-04-10 08.24.46 - Accepted - runtime 37ms - memory 13.9MB.py", "1469-minimum-number-of-steps-to-make-two-strings-anagram", "1469-minimum-number-of-steps-to-make-two-strings-anagram/2024-01-13 19.53.03 - Accepted - runtime 108ms - memory 17.8MB.py", "1469-minimum-number-of-steps-to-make-two-strings-anagram/2024-01-13 19.48.39 - Accepted - runtime 99ms - memory 17.9MB.py", "599-minimum-index-sum-of-two-lists", "599-minimum-index-sum-of-two-lists/2024-04-01 00.27.29 - Accepted - runtime 141ms - memory 17.1MB.py", "837-most-common-word", "837-most-common-word/2024-04-05 19.36.42 - Accepted - runtime 43ms - memory 16.5MB.py", "1567-maximum-number-of-vowels-in-a-substring-of-given-length", "1567-maximum-number-of-vowels-in-a-substring-of-given-length/2023-05-05 11.09.34 - Accepted - runtime 154ms - memory 17.3MB.py", "985-bag-of-tokens", "985-bag-of-tokens/2024-03-04 22.08.36 - Accepted - runtime 53ms - memory 16.8MB.py", "2116-count-number-of-pairs-with-absolute-difference-k", "2116-count-number-of-pairs-with-absolute-difference-k/2022-09-20 14.27.22 - Accepted - runtime 456ms - memory 14MB.py", "926-find-and-replace-pattern", "926-find-and-replace-pattern/2022-07-29 20.00.13 - Accepted - runtime 67ms - memory 14MB.py", "2860-sort-by", "2860-sort-by/2024-04-17 22.44.39 - Accepted - runtime 128ms - memory 66.2MB.js", "24-swap-nodes-in-pairs", "24-swap-nodes-in-pairs/2024-02-21 11.22.10 - Accepted - runtime 4ms - memory 9.5MB.cpp", "24-swap-nodes-in-pairs/2024-02-21 11.23.31 - Accepted - runtime 2ms - memory 9.6MB.cpp", "966-binary-subarrays-with-sum", "966-binary-subarrays-with-sum/2024-03-14 12.11.05 - Accepted - runtime 237ms - memory 20.2MB.py", "605-can-place-flowers", "605-can-place-flowers/2023-03-20 10.45.08 - Accepted - runtime 182ms - memory 14.3MB.py", "451-sort-characters-by-frequency", "451-sort-characters-by-frequency/2024-02-07 16.15.53 - Accepted - runtime 37ms - memory 17.8MB.py", "451-sort-characters-by-frequency/2024-02-07 16.15.36 - Accepted - runtime 64ms - memory 17.8MB.py", "125-valid-palindrome", "125-valid-palindrome/2022-06-22 13.41.26 - Accepted - runtime 89ms - memory 15.2MB.py", "125-valid-palindrome/2022-12-16 17.15.52 - Accepted - runtime 51ms - memory 15.4MB.py", "1421-find-numbers-with-even-number-of-digits", "1421-find-numbers-with-even-number-of-digits/2024-04-30 21.28.04 - Accepted - runtime 63ms - memory 16.7MB.py", "506-relative-ranks", "506-relative-ranks/2024-05-08 10.23.23 - Accepted - runtime 60ms - memory 17.7MB.py", "841-shortest-distance-to-a-character", "841-shortest-distance-to-a-character/2022-09-26 17.43.01 - Accepted - runtime 167ms - memory 13.9MB.py", "1584-average-salary-excluding-the-minimum-and-maximum-salary", "1584-average-salary-excluding-the-minimum-and-maximum-salary/2023-05-02 00.39.10 - Accepted - runtime 50ms - memory 16.3MB.py", "3065-display-the-first-three-rows", "3065-display-the-first-three-rows/2024-04-01 14.31.56 - Accepted - runtime 628ms - memory 65.7MB.pd.py", "2362-minimum-rounds-to-complete-all-tasks", "2362-minimum-rounds-to-complete-all-tasks/2023-01-05 00.06.52 - Accepted - runtime 1381ms - memory 29.1MB.py", "2362-minimum-rounds-to-complete-all-tasks/2023-01-05 00.09.41 - Accepted - runtime 1646ms - memory 28.4MB.py", "2362-minimum-rounds-to-complete-all-tasks/2023-01-05 00.09.11 - Accepted - runtime 958ms - memory 28.3MB.py", "2881-split-strings-by-separator", "2881-split-strings-by-separator/2024-04-06 11.03.49 - Accepted - runtime 91ms - memory 16.5MB.py", "1005-univalued-binary-tree", "1005-univalued-binary-tree/2024-02-20 13.15.32 - Accepted - runtime 5ms - memory 11.7MB.cpp", "1005-univalued-binary-tree/2024-01-27 19.51.54 - Accepted - runtime 37ms - memory 16.7MB.py", "1005-univalued-binary-tree/2024-02-20 13.16.00 - Accepted - runtime 3ms - memory 11.8MB.cpp", "1030-smallest-string-starting-from-leaf", "1030-smallest-string-starting-from-leaf/2024-04-17 09.40.41 - Accepted - runtime 44ms - memory 18.3MB.py", "1030-smallest-string-starting-from-leaf/2024-04-17 09.42.52 - Accepted - runtime 40ms - memory 17.9MB.py", "160-intersection-of-two-linked-lists", "160-intersection-of-two-linked-lists/2023-11-26 19.51.42 - Accepted - runtime 121ms - memory 31.5MB.py", "112-path-sum", "112-path-sum/2022-07-08 22.14.15 - Accepted - runtime 4177ms - memory 15.1MB.py", "112-path-sum/2024-02-18 21.58.37 - Accepted - runtime 9ms - memory 19.7MB.cpp", "112-path-sum/2022-07-08 22.18.51 - Accepted - runtime 43ms - memory 15MB.py", "112-path-sum/2022-07-10 18.10.26 - Accepted - runtime 53ms - memory 15.1MB.py", "112-path-sum/2022-07-09 10.59.17 - Accepted - runtime 77ms - memory 15.1MB.py", "112-path-sum/2022-10-07 20.24.27 - Accepted - runtime 47ms - memory 15MB.py", "525-contiguous-array", "525-contiguous-array/2024-03-16 14.29.53 - Accepted - runtime 609ms - memory 22.2MB.py", "665-non-decreasing-array", "665-non-decreasing-array/2022-06-25 22.48.17 - Accepted - runtime 193ms - memory 15.2MB.py", "3-longest-substring-without-repeating-characters", "3-longest-substring-without-repeating-characters/2022-10-07 20.32.16 - Accepted - runtime 118ms - memory 13.9MB.py", "29-divide-two-integers", "29-divide-two-integers/2023-04-02 15.57.24 - Accepted - runtime 40ms - memory 13.9MB.py", "239-sliding-window-maximum", "239-sliding-window-maximum/2024-03-29 17.34.06 - Accepted - runtime 1089ms - memory 33MB.py", "268-missing-number", "268-missing-number/2022-07-01 10.25.51 - Accepted - runtime 143ms - memory 15.2MB.py", "268-missing-number/2024-02-20 10.36.25 - Accepted - runtime 15ms - memory 20.3MB.cpp", "268-missing-number/2024-02-20 10.35.25 - Accepted - runtime 16ms - memory 20.3MB.cpp", "114-flatten-binary-tree-to-linked-list", "114-flatten-binary-tree-to-linked-list/2022-07-27 22.30.30 - Accepted - runtime 44ms - memory 15.3MB.py", "114-flatten-binary-tree-to-linked-list/2022-07-27 22.30.13 - Accepted - runtime 68ms - memory 15.2MB.py", "114-flatten-binary-tree-to-linked-list/2022-07-27 22.30.24 - Accepted - runtime 62ms - memory 15.3MB.py", "114-flatten-binary-tree-to-linked-list/2024-02-25 19.50.20 - Accepted - runtime 11ms - memory 15.6MB.cpp", "114-flatten-binary-tree-to-linked-list/2022-07-27 22.43.40 - Accepted - runtime 89ms - memory 15.4MB.py", "224-basic-calculator", "224-basic-calculator/2024-04-10 00.28.35 - Accepted - runtime 272ms - memory 18.1MB.py", "2469-longest-subsequence-with-limited-sum", "2469-longest-subsequence-with-limited-sum/2022-12-25 22.31.26 - Accepted - runtime 317ms - memory 14.2MB.py", "367-valid-perfect-square", "367-valid-perfect-square/2024-04-01 18.36.26 - Accepted - runtime 33ms - memory 16.5MB.py", "2219-maximum-number-of-words-found-in-sentences", "2219-maximum-number-of-words-found-in-sentences/2022-08-01 16.17.28 - Accepted - runtime 52ms - memory 13.8MB.py", "1950-sign-of-the-product-of-an-array", "1950-sign-of-the-product-of-an-array/2023-05-02 15.06.30 - Accepted - runtime 74ms - memory 16.4MB.py", "142-linked-list-cycle-ii", "142-linked-list-cycle-ii/2023-01-01 00.36.51 - Accepted - runtime 55ms - memory 17.9MB.py", "142-linked-list-cycle-ii/2023-01-01 00.36.09 - Accepted - runtime 58ms - memory 17.3MB.py", "142-linked-list-cycle-ii/2023-01-01 13.23.32 - Accepted - runtime 48ms - memory 17.2MB.py", "541-reverse-string-ii", "541-reverse-string-ii/2024-03-31 23.45.22 - Accepted - runtime 44ms - memory 16.7MB.py", "908-middle-of-the-linked-list", "908-middle-of-the-linked-list/2024-03-07 14.21.03 - Accepted - runtime 38ms - memory 16.4MB.py", "908-middle-of-the-linked-list/2022-09-26 15.00.52 - Accepted - runtime 74ms - memory 13.9MB.py", "908-middle-of-the-linked-list/2022-09-26 15.16.05 - Accepted - runtime 59ms - memory 13.8MB.py", "349-intersection-of-two-arrays", "349-intersection-of-two-arrays/2024-03-10 14.20.48 - Accepted - runtime 42ms - memory 16.8MB.py", "349-intersection-of-two-arrays/2022-07-18 19.54.32 - Accepted - runtime 46ms - memory 14.1MB.py", "2274-keep-multiplying-found-values-by-two", "2274-keep-multiplying-found-values-by-two/2022-07-21 16.06.16 - Accepted - runtime 80ms - memory 14MB.py", "392-is-subsequence", "392-is-subsequence/2024-02-17 23.05.21 - Accepted - runtime 0ms - memory 7.5MB.cpp", "392-is-subsequence/2024-02-15 22.32.55 - Accepted - runtime 34ms - memory 16.5MB.py", "2634-minimum-common-value", "2634-minimum-common-value/2024-03-09 15.00.41 - Accepted - runtime 335ms - memory 42.6MB.py", "2338-minimum-consecutive-cards-to-pick-up", "2338-minimum-consecutive-cards-to-pick-up/2023-11-26 20.11.38 - Accepted - runtime 670ms - memory 35.7MB.py", "2338-minimum-consecutive-cards-to-pick-up/2023-11-26 20.22.52 - Accepted - runtime 699ms - memory 35.7MB.py", "2338-minimum-consecutive-cards-to-pick-up/2023-11-26 20.22.08 - Accepted - runtime 706ms - memory 35.7MB.py", "2338-minimum-consecutive-cards-to-pick-up/2023-11-26 20.22.34 - Accepted - runtime 701ms - memory 35.9MB.py", "2338-minimum-consecutive-cards-to-pick-up/2023-11-26 20.22.19 - Accepted - runtime 710ms - memory 35.7MB.py", "2254-check-if-every-row-and-column-contains-all-numbers", "2254-check-if-every-row-and-column-contains-all-numbers/2022-07-21 16.13.49 - Accepted - runtime 1170ms - memory 14.4MB.py", "630-course-schedule-iii", "630-course-schedule-iii/2022-06-23 13.07.18 - Accepted - runtime 963ms - memory 19.3MB.py", "630-course-schedule-iii/2022-06-23 13.07.08 - Accepted - runtime 1542ms - memory 20.2MB.py", "630-course-schedule-iii/2022-06-23 14.46.58 - Accepted - runtime 955ms - memory 20.1MB.py", "1137-height-checker", "1137-height-checker/2024-04-04 18.32.28 - Accepted - runtime 44ms - memory 16.4MB.py", "85-maximal-rectangle", "85-maximal-rectangle/2024-04-13 09.49.05 - Accepted - runtime 210ms - memory 17.9MB.py", "85-maximal-rectangle/2024-04-13 09.44.22 - Accepted - runtime 227ms - memory 18.1MB.py", "1127-last-stone-weight", "1127-last-stone-weight/2023-04-24 21.21.20 - Accepted - runtime 41ms - memory 13.9MB.py", "1127-last-stone-weight/2023-04-24 21.21.11 - Accepted - runtime 42ms - memory 13.9MB.py", "1241-decompress-run-length-encoded-list", "1241-decompress-run-length-encoded-list/2022-08-01 21.03.28 - Accepted - runtime 82ms - memory 14.4MB.py", "1944-truncate-sentence", "1944-truncate-sentence/2022-09-20 14.24.51 - Accepted - runtime 45ms - memory 13.8MB.py", "119-pascals-triangle-ii", "119-pascals-triangle-ii/2023-04-29 09.00.00 - Accepted - runtime 44ms - memory 16.2MB.py", "962-flip-string-to-monotone-increasing", "962-flip-string-to-monotone-increasing/2024-04-06 12.25.38 - Accepted - runtime 123ms - memory 17.2MB.py", "2487-optimal-partition-of-string", "2487-optimal-partition-of-string/2023-04-05 23.26.27 - Accepted - runtime 248ms - memory 14.7MB.py", "2487-optimal-partition-of-string/2023-04-05 23.26.07 - Accepted - runtime 248ms - memory 14.5MB.py", "2487-optimal-partition-of-string/2023-04-05 23.28.29 - Accepted - runtime 68ms - memory 14.7MB.py", "2487-optimal-partition-of-string/2023-04-05 23.26.17 - Accepted - runtime 249ms - memory 14.6MB.py", "1651-shuffle-string", "1651-shuffle-string/2022-08-01 22.11.03 - Accepted - runtime 81ms - memory 13.9MB.py", "2479-meeting-rooms-iii", "2479-meeting-rooms-iii/2024-04-13 16.05.34 - Accepted - runtime 1191ms - memory 62.3MB.py", "2479-meeting-rooms-iii/2024-04-13 16.06.00 - Accepted - runtime 1157ms - memory 62.5MB.py", "2479-meeting-rooms-iii/2024-04-13 16.07.03 - Accepted - runtime 268ms - memory 38.1MB.py", "67-add-binary", "67-add-binary/2022-06-20 19.33.28 - Accepted - runtime 36ms - memory 13.9MB.py", "1458-sort-integers-by-the-number-of-1-bits", "1458-sort-integers-by-the-number-of-1-bits/2024-01-05 23.14.48 - Accepted - runtime 58ms - memory 17.5MB.py", "1058-lexicographically-smallest-equivalent-string", "1058-lexicographically-smallest-equivalent-string/2023-01-14 22.15.48 - Accepted - runtime 34ms - memory 13.9MB.py", "42-trapping-rain-water", "42-trapping-rain-water/2024-04-12 09.55.48 - Accepted - runtime 98ms - memory 18.4MB.py", "414-third-maximum-number", "414-third-maximum-number/2022-07-01 22.05.17 - Accepted - runtime 123ms - memory 15.6MB.py", "485-max-consecutive-ones", "485-max-consecutive-ones/2024-04-01 19.36.48 - Accepted - runtime 268ms - memory 16.8MB.py", "371-sum-of-two-integers", "371-sum-of-two-integers/2024-04-15 15.06.30 - Accepted - runtime 37ms - memory 16.5MB.py", "148-sort-list", "148-sort-list/2024-01-05 22.36.53 - Accepted - runtime 137ms - memory 33.1MB.py", "1786-count-the-number-of-consistent-strings", "1786-count-the-number-of-consistent-strings/2022-09-20 14.25.13 - Accepted - runtime 586ms - memory 16.1MB.py", "111-minimum-depth-of-binary-tree", "111-minimum-depth-of-binary-tree/2022-06-28 23.53.42 - Accepted - runtime 1710ms - memory 58.4MB.py", "111-minimum-depth-of-binary-tree/2022-06-28 23.53.50 - Accepted - runtime 1121ms - memory 58.4MB.py", "111-minimum-depth-of-binary-tree/2022-06-28 23.50.08 - Accepted - runtime 748ms - memory 55MB.py", "1498-find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree", "1498-find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/2022-08-01 20.46.14 - Accepted - runtime 977ms - memory 24MB.py", "983-validate-stack-sequences", "983-validate-stack-sequences/2023-04-13 11.17.47 - Accepted - runtime 71ms - memory 14.1MB.py", "2243-check-if-all-as-appears-before-all-bs", "2243-check-if-all-as-appears-before-all-bs/2022-07-21 16.16.47 - Accepted - runtime 58ms - memory 14MB.py", "168-excel-sheet-column-title", "168-excel-sheet-column-title/2024-03-13 23.44.19 - Accepted - runtime 40ms - memory 16.7MB.py", "258-add-digits", "258-add-digits/2022-07-02 22.43.02 - Accepted - runtime 28ms - memory 13.9MB.py", "258-add-digits/2022-07-02 22.45.40 - Accepted - runtime 4ms - memory 5.5MB.c", "258-add-digits/2022-07-02 22.45.23 - Accepted - runtime 3ms - memory 5.5MB.c", "258-add-digits/2023-04-26 15.51.22 - Accepted - runtime 36ms - memory 13.9MB.py", "258-add-digits/2022-07-02 22.45.29 - Accepted - runtime 4ms - memory 5.4MB.c", "258-add-digits/2022-07-02 22.45.15 - Accepted - runtime 3ms - memory 5.6MB.c", "2248-minimum-cost-of-buying-candies-with-discount", "2248-minimum-cost-of-buying-candies-with-discount/2022-07-21 16.14.47 - Accepted - runtime 79ms - memory 13.8MB.py", "232-implement-queue-using-stacks", "232-implement-queue-using-stacks/2022-12-16 23.03.17 - Accepted - runtime 33ms - memory 14MB.py", "1041-available-captures-for-rook", "1041-available-captures-for-rook/2023-03-06 23.13.43 - Accepted - runtime 35ms - memory 13.9MB.py", "108-convert-sorted-array-to-binary-search-tree", "108-convert-sorted-array-to-binary-search-tree/2022-06-27 17.49.43 - Accepted - runtime 166ms - memory 15.6MB.py", "108-convert-sorted-array-to-binary-search-tree/2022-06-27 17.49.31 - Accepted - runtime 172ms - memory 15.6MB.py", "108-convert-sorted-array-to-binary-search-tree/2022-06-27 22.31.28 - Accepted - runtime 121ms - memory 15.6MB.py", "108-convert-sorted-array-to-binary-search-tree/2022-06-27 18.06.40 - Accepted - runtime 150ms - memory 15.8MB.py", "2204-find-subsequence-of-length-k-with-the-largest-sum", "2204-find-subsequence-of-length-k-with-the-largest-sum/2024-01-24 21.21.44 - Accepted - runtime 50ms - memory 16.8MB.py", "2413-smallest-number-in-infinite-set", "2413-smallest-number-in-infinite-set/2023-04-26 16.14.25 - Accepted - runtime 122ms - memory 17.1MB.py", "1217-relative-sort-array", "1217-relative-sort-array/2022-07-19 17.44.13 - Accepted - runtime 48ms - memory 14MB.py", "387-first-unique-character-in-a-string", "387-first-unique-character-in-a-string/2023-01-10 22.10.30 - Accepted - runtime 62ms - memory 14.2MB.py", "387-first-unique-character-in-a-string/2022-08-20 16.43.51 - Accepted - runtime 90ms - memory 14MB.py", "387-first-unique-character-in-a-string/2024-02-05 22.46.30 - Accepted - runtime 415ms - memory 16.7MB.py", "387-first-unique-character-in-a-string/2022-07-11 14.14.59 - Accepted - runtime 6275ms - memory 14.1MB.py", "387-first-unique-character-in-a-string/2022-08-20 16.43.37 - Accepted - runtime 7503ms - memory 14.3MB.py", "387-first-unique-character-in-a-string/2022-08-20 16.43.27 - Accepted - runtime 84ms - memory 14.2MB.py", "387-first-unique-character-in-a-string/2022-07-11 14.13.30 - Accepted - runtime 313ms - memory 14.3MB.py", "1267-remove-zero-sum-consecutive-nodes-from-linked-list", "1267-remove-zero-sum-consecutive-nodes-from-linked-list/2024-03-12 15.01.50 - Accepted - runtime 36ms - memory 16.9MB.py", "1482-how-many-numbers-are-smaller-than-the-current-number", "1482-how-many-numbers-are-smaller-than-the-current-number/2022-07-23 11.56.03 - Accepted - runtime 88ms - memory 14MB.py", "482-license-key-formatting", "482-license-key-formatting/2024-03-31 20.09.43 - Accepted - runtime 42ms - memory 19.6MB.py", "2391-strong-password-checker-ii", "2391-strong-password-checker-ii/2022-07-28 21.45.30 - Accepted - runtime 44ms - memory 13.8MB.py", "520-detect-capital", "520-detect-capital/2023-01-05 20.50.30 - Accepted - runtime 65ms - memory 13.9MB.py", "520-detect-capital/2023-01-05 20.48.46 - Accepted - runtime 67ms - memory 13.7MB.py", "520-detect-capital/2022-07-21 17.06.47 - Accepted - runtime 48ms - memory 13.9MB.py", "1646-kth-missing-positive-number", "1646-kth-missing-positive-number/2023-03-06 21.02.21 - Accepted - runtime 47ms - memory 14.2MB.py", "3067-modify-columns", "3067-modify-columns/2024-04-01 14.35.25 - Accepted - runtime 776ms - memory 65.5MB.pd.py", "695-max-area-of-island", "695-max-area-of-island/2022-07-16 01.23.36 - Accepted - runtime 382ms - memory 14MB.py", "695-max-area-of-island/2022-07-15 14.42.17 - Accepted - runtime 427ms - memory 14.4MB.py", "695-max-area-of-island/2022-07-16 01.23.13 - Accepted - runtime 301ms - memory 14.1MB.py", "695-max-area-of-island/2022-07-16 01.20.31 - Accepted - runtime 307ms - memory 14MB.py", "695-max-area-of-island/2022-07-15 14.47.48 - Accepted - runtime 344ms - memory 14.8MB.py", "695-max-area-of-island/2022-07-16 01.23.48 - Accepted - runtime 249ms - memory 14.1MB.py", "695-max-area-of-island/2022-07-16 01.20.04 - Accepted - runtime 250ms - memory 14.2MB.py", "1894-merge-strings-alternately", "1894-merge-strings-alternately/2023-04-21 17.18.50 - Accepted - runtime 35ms - memory 13.9MB.py", "83-remove-duplicates-from-sorted-list", "83-remove-duplicates-from-sorted-list/2022-06-20 19.42.44 - Accepted - runtime 70ms - memory 13.8MB.py", "1850-minimum-length-of-string-after-deleting-similar-ends", "1850-minimum-length-of-string-after-deleting-similar-ends/2024-03-05 15.31.22 - Accepted - runtime 104ms - memory 17.3MB.py", "1850-minimum-length-of-string-after-deleting-similar-ends/2024-03-05 15.33.09 - Accepted - runtime 58ms - memory 17.4MB.py", "1195-distribute-candies-to-people", "1195-distribute-candies-to-people/2022-07-11 00.23.50 - Accepted - runtime 52ms - memory 14MB.py", "6-zigzag-conversion", "6-zigzag-conversion/2024-03-31 18.49.00 - Accepted - runtime 48ms - memory 16.5MB.py", "205-isomorphic-strings", "205-isomorphic-strings/2024-04-02 11.22.09 - Accepted - runtime 52ms - memory 16.8MB.py", "205-isomorphic-strings/2024-04-02 11.17.24 - Accepted - runtime 60ms - memory 17.3MB.py", "191-number-of-1-bits", "191-number-of-1-bits/2022-06-29 13.14.48 - Accepted - runtime 31ms - memory 13.8MB.py", "528-swapping-nodes-in-a-linked-list", "528-swapping-nodes-in-a-linked-list/2024-02-24 00.30.15 - Accepted - runtime 372ms - memory 40.5MB.py", "528-swapping-nodes-in-a-linked-list/2024-02-24 00.41.36 - Accepted - runtime 364ms - memory 183.8MB.cpp", "528-swapping-nodes-in-a-linked-list/2023-05-15 15.35.57 - Accepted - runtime 1845ms - memory 66.8MB.py", "165-compare-version-numbers", "165-compare-version-numbers/2024-05-03 09.37.53 - Accepted - runtime 38ms - memory 16.6MB.py", "405-convert-a-number-to-hexadecimal", "405-convert-a-number-to-hexadecimal/2024-04-01 19.18.10 - Accepted - runtime 27ms - memory 16.5MB.py", "543-diameter-of-binary-tree", "543-diameter-of-binary-tree/2024-02-28 00.27.21 - Accepted - runtime 6ms - memory 18.9MB.cpp", "543-diameter-of-binary-tree/2024-02-18 22.50.50 - Accepted - runtime 7ms - memory 18.8MB.cpp", "3066-create-a-new-column", "3066-create-a-new-column/2024-04-01 14.38.48 - Accepted - runtime 719ms - memory 65.3MB.pd.py", "257-binary-tree-paths", "257-binary-tree-paths/2022-07-01 16.16.49 - Accepted - runtime 56ms - memory 13.9MB.py", "257-binary-tree-paths/2024-01-13 20.12.32 - Accepted - runtime 40ms - memory 17.3MB.py", "257-binary-tree-paths/2024-02-18 17.59.55 - Accepted - runtime 0ms - memory 17.4MB.cpp", "2416-evaluate-boolean-binary-tree", "2416-evaluate-boolean-binary-tree/2024-02-01 23.03.43 - Accepted - runtime 37ms - memory 16.9MB.py", "27-remove-element", "27-remove-element/2024-02-17 12.44.13 - Accepted - runtime 0ms - memory 10.4MB.cpp", "27-remove-element/2022-04-25 12.32.51 - Accepted - runtime 42ms - memory 13.9MB.py", "27-remove-element/2022-04-25 12.33.28 - Accepted - runtime 47ms - memory 13.9MB.py", "27-remove-element/2022-04-25 12.32.43 - Accepted - runtime 44ms - memory 14MB.py", "27-remove-element/2022-04-25 12.33.34 - Accepted - runtime 36ms - memory 13.9MB.py", "2392-successful-pairs-of-spells-and-potions", "2392-successful-pairs-of-spells-and-potions/2023-04-02 15.37.36 - Accepted - runtime 1793ms - memory 37.1MB.py", "2556-convert-the-temperature", "2556-convert-the-temperature/2024-02-02 19.19.00 - Accepted - runtime 28ms - memory 16.5MB.py", "2347-count-nodes-equal-to-average-of-subtree", "2347-count-nodes-equal-to-average-of-subtree/2024-02-19 21.08.46 - Accepted - runtime 10ms - memory 14.4MB.cpp", "2347-count-nodes-equal-to-average-of-subtree/2024-02-19 20.58.58 - Accepted - runtime 45ms - memory 16.8MB.py", "1354-find-players-with-zero-or-one-losses", "1354-find-players-with-zero-or-one-losses/2024-01-15 18.28.43 - Accepted - runtime 1354ms - memory 71.2MB.py", "1486-find-the-distance-value-between-two-arrays", "1486-find-the-distance-value-between-two-arrays/2023-03-01 20.07.03 - Accepted - runtime 108ms - memory 14MB.py", "1731-even-odd-tree", "1731-even-odd-tree/2024-02-29 13.33.14 - Accepted - runtime 262ms - memory 66.3MB.py", "1731-even-odd-tree/2024-02-29 13.36.51 - Accepted - runtime 225ms - memory 39.3MB.py", "219-contains-duplicate-ii", "219-contains-duplicate-ii/2022-06-29 13.49.16 - Accepted - runtime 588ms - memory 27.2MB.py", "2308-divide-array-into-equal-pairs", "2308-divide-array-into-equal-pairs/2022-07-21 16.04.41 - Accepted - runtime 146ms - memory 14.1MB.py", "776-n-ary-tree-postorder-traversal", "776-n-ary-tree-postorder-traversal/2022-07-07 11.14.19 - Accepted - runtime 130ms - memory 16.1MB.py", "69-sqrtx", "69-sqrtx/2022-06-20 19.34.51 - Accepted - runtime 59ms - memory 13.9MB.py", "1751-slowest-key", "1751-slowest-key/2024-04-21 18.01.05 - Accepted - runtime 60ms - memory 16.8MB.py", "2103-find-all-groups-of-farmland", "2103-find-all-groups-of-farmland/2024-04-20 10.15.12 - Accepted - runtime 1211ms - memory 28.7MB.py", "70-climbing-stairs", "70-climbing-stairs/2022-06-23 16.53.01 - Accepted - runtime 71ms - memory 14MB.py", "70-climbing-stairs/2022-06-23 16.53.10 - Accepted - runtime 52ms - memory 13.9MB.py", "70-climbing-stairs/2022-06-23 16.51.25 - Accepted - runtime 38ms - memory 13.8MB.py", "70-climbing-stairs/2022-06-23 16.53.19 - Accepted - runtime 62ms - memory 13.9MB.py", "2288-count-operations-to-obtain-zero", "2288-count-operations-to-obtain-zero/2022-09-26 17.22.57 - Accepted - runtime 229ms - memory 13.9MB.py", "2288-count-operations-to-obtain-zero/2022-09-26 17.17.47 - Accepted - runtime 298ms - memory 13.8MB.py", "2473-max-sum-of-a-pair-with-equal-sum-of-digits", "2473-max-sum-of-a-pair-with-equal-sum-of-digits/2024-04-01 15.43.14 - Accepted - runtime 826ms - memory 31.2MB.py", "2473-max-sum-of-a-pair-with-equal-sum-of-digits/2024-04-01 15.32.51 - Accepted - runtime 828ms - memory 31.3MB.py", "237-delete-node-in-a-linked-list", "237-delete-node-in-a-linked-list/2024-05-05 10.11.40 - Accepted - runtime 32ms - memory 16.8MB.py", "237-delete-node-in-a-linked-list/2022-06-29 14.30.04 - Accepted - runtime 68ms - memory 14.3MB.py", "2154-minimum-moves-to-convert-string", "2154-minimum-moves-to-convert-string/2024-01-06 18.28.41 - Accepted - runtime 34ms - memory 17.3MB.py", "215-kth-largest-element-in-an-array", "215-kth-largest-element-in-an-array/2022-06-22 18.12.39 - Accepted - runtime 1327ms - memory 14.7MB.py", "198-house-robber", "198-house-robber/2022-12-17 19.05.19 - Accepted - runtime 39ms - memory 13.9MB.py", "198-house-robber/2022-12-17 19.21.25 - Accepted - runtime 66ms - memory 14MB.py", "198-house-robber/2022-12-17 19.21.35 - Accepted - runtime 33ms - memory 13.8MB.py", "198-house-robber/2024-01-21 18.13.48 - Accepted - runtime 44ms - memory 16.6MB.py", "328-odd-even-linked-list", "328-odd-even-linked-list/2024-05-07 11.26.00 - Accepted - runtime 40ms - memory 18.6MB.py", "987-reveal-cards-in-increasing-order", "987-reveal-cards-in-increasing-order/2024-04-10 09.44.24 - Accepted - runtime 39ms - memory 16.7MB.py", "783-search-in-a-binary-search-tree", "783-search-in-a-binary-search-tree/2022-09-26 14.36.07 - Accepted - runtime 170ms - memory 16.5MB.py", "102-binary-tree-level-order-traversal", "102-binary-tree-level-order-traversal/2023-03-01 20.58.21 - Accepted - runtime 36ms - memory 14.2MB.py", "102-binary-tree-level-order-traversal/2023-03-01 20.57.47 - Accepted - runtime 34ms - memory 14.2MB.py", "102-binary-tree-level-order-traversal/2023-03-01 20.47.47 - Accepted - runtime 39ms - memory 14.8MB.py", "62-unique-paths", "62-unique-paths/2022-08-01 12.55.38 - Accepted - runtime 55ms - memory 13.9MB.py", "62-unique-paths/2022-08-01 12.55.49 - Accepted - runtime 68ms - memory 13.8MB.py", "2128-reverse-prefix-of-word", "2128-reverse-prefix-of-word/2024-05-01 09.31.24 - Accepted - runtime 34ms - memory 16.5MB.py", "2384-root-equals-sum-of-children", "2384-root-equals-sum-of-children/2022-08-01 16.11.01 - Accepted - runtime 44ms - memory 13.8MB.py", "2384-root-equals-sum-of-children/2024-01-07 22.37.24 - Accepted - runtime 33ms - memory 17.4MB.py", "463-island-perimeter", "463-island-perimeter/2024-04-01 19.32.09 - Accepted - runtime 387ms - memory 17MB.py", "463-island-perimeter/2024-04-18 08.45.52 - Accepted - runtime 407ms - memory 16.9MB.py", "948-sort-an-array", "948-sort-an-array/2023-03-01 19.43.28 - Accepted - runtime 690ms - memory 22.2MB.py", "13-roman-to-integer", "13-roman-to-integer/2024-02-16 20.01.46 - Accepted - runtime 20ms - memory 12.9MB.cpp", "13-roman-to-integer/2022-04-18 22.32.40 - Accepted - runtime 52ms - memory 13.9MB.py", "13-roman-to-integer/2024-02-16 19.45.57 - Accepted - runtime 8ms - memory 12.7MB.cpp", "1817-calculate-money-in-leetcode-bank", "1817-calculate-money-in-leetcode-bank/2024-04-06 19.30.29 - Accepted - runtime 32ms - memory 16.6MB.py", "812-rotate-string", "812-rotate-string/2024-04-05 19.29.38 - Accepted - runtime 44ms - memory 16.5MB.py", "812-rotate-string/2024-04-05 19.29.53 - Accepted - runtime 45ms - memory 16.4MB.py", "71-simplify-path", "71-simplify-path/2023-04-12 13.30.05 - Accepted - runtime 32ms - memory 13.7MB.py", "71-simplify-path/2023-04-13 23.23.56 - Accepted - runtime 29ms - memory 13.8MB.py", "1319-unique-number-of-occurrences", "1319-unique-number-of-occurrences/2024-01-17 19.12.57 - Accepted - runtime 27ms - memory 17.4MB.py", "2427-first-letter-to-appear-twice", "2427-first-letter-to-appear-twice/2022-07-28 21.31.06 - Accepted - runtime 35ms - memory 13.8MB.py", "2433-best-poker-hand", "2433-best-poker-hand/2022-07-28 21.29.29 - Accepted - runtime 50ms - memory 13.9MB.py", "1839-decode-xored-array", "1839-decode-xored-array/2022-08-01 21.10.08 - Accepted - runtime 322ms - memory 15.8MB.py", "278-first-bad-version", "278-first-bad-version/2022-07-17 16.26.10 - Accepted - runtime 22ms - memory 13.9MB.py", "2260-divide-a-string-into-groups-of-size-k", "2260-divide-a-string-into-groups-of-size-k/2022-07-21 16.10.25 - Accepted - runtime 60ms - memory 14MB.py", "345-reverse-vowels-of-a-string", "345-reverse-vowels-of-a-string/2022-06-30 22.19.27 - Accepted - runtime 128ms - memory 14.7MB.py", "1205-defanging-an-ip-address", "1205-defanging-an-ip-address/2022-07-11 00.27.40 - Accepted - runtime 47ms - memory 13.9MB.py", "653-two-sum-iv-input-is-a-bst", "653-two-sum-iv-input-is-a-bst/2024-01-07 18.59.04 - Accepted - runtime 57ms - memory 19.7MB.py", "98-validate-binary-search-tree", "98-validate-binary-search-tree/2024-03-10 18.42.13 - Accepted - runtime 39ms - memory 18.4MB.py", "98-validate-binary-search-tree/2024-03-10 18.42.00 - Accepted - runtime 54ms - memory 18.5MB.py", "2527-count-subarrays-with-fixed-bounds", "2527-count-subarrays-with-fixed-bounds/2024-03-31 12.06.30 - Accepted - runtime 720ms - memory 31MB.py", "12-integer-to-roman", "12-integer-to-roman/2022-07-17 14.56.54 - Accepted - runtime 114ms - memory 14MB.py", "12-integer-to-roman/2022-07-17 14.58.19 - Accepted - runtime 85ms - memory 13.8MB.py", "514-freedom-trail", "514-freedom-trail/2024-04-27 14.47.26 - Accepted - runtime 71ms - memory 16.5MB.py", "686-repeated-string-match", "686-repeated-string-match/2024-03-12 16.07.58 - Accepted - runtime 41ms - memory 16.7MB.py", "1231-replace-elements-with-greatest-element-on-right-side", "1231-replace-elements-with-greatest-element-on-right-side/2023-11-28 21.49.20 - Accepted - runtime 592ms - memory 18.4MB.py", "442-find-all-duplicates-in-an-array", "442-find-all-duplicates-in-an-array/2024-03-25 17.12.30 - Accepted - runtime 268ms - memory 25.2MB.py", "645-set-mismatch", "645-set-mismatch/2022-10-23 15.18.00 - Accepted - runtime 501ms - memory 15.4MB.py", "645-set-mismatch/2022-10-23 15.18.20 - Accepted - runtime 463ms - memory 15.4MB.py", "645-set-mismatch/2022-10-23 15.13.18 - Accepted - runtime 526ms - memory 15.8MB.py", "2470-removing-stars-from-a-string", "2470-removing-stars-from-a-string/2023-04-11 23.34.17 - Accepted - runtime 659ms - memory 15.5MB.py", "2470-removing-stars-from-a-string/2023-04-11 23.36.19 - Accepted - runtime 266ms - memory 15.6MB.py", "2470-removing-stars-from-a-string/2023-04-11 23.36.31 - Accepted - runtime 222ms - memory 15.5MB.py", "2470-removing-stars-from-a-string/2023-04-11 23.35.49 - Accepted - runtime 600ms - memory 15.2MB.py", "2470-removing-stars-from-a-string/2023-04-11 23.34.27 - Accepted - runtime 661ms - memory 15.4MB.py", "441-arranging-coins", "441-arranging-coins/2024-04-01 15.48.52 - Accepted - runtime 44ms - memory 16.4MB.py", "441-arranging-coins/2024-04-01 15.48.23 - Accepted - runtime 427ms - memory 16.4MB.py", "153-find-minimum-in-rotated-sorted-array", "153-find-minimum-in-rotated-sorted-array/2023-01-06 21.16.10 - Accepted - runtime 90ms - memory 14.2MB.py", "1708-design-parking-system", "1708-design-parking-system/2022-08-01 16.33.48 - Accepted - runtime 232ms - memory 14.4MB.py", "802-k-th-smallest-prime-fraction", "802-k-th-smallest-prime-fraction/2024-05-10 09.34.39 - Accepted - runtime 2437ms - memory 121.5MB.py", "803-cheapest-flights-within-k-stops", "803-cheapest-flights-within-k-stops/2024-02-23 15.09.35 - Accepted - runtime 83ms - memory 18.2MB.py", "1961-maximum-ice-cream-bars", "1961-maximum-ice-cream-bars/2023-01-06 18.14.06 - Accepted - runtime 1148ms - memory 27.9MB.py", "1961-maximum-ice-cream-bars/2023-01-06 18.16.40 - Accepted - runtime 2817ms - memory 27.9MB.py", "383-ransom-note", "383-ransom-note/2022-06-30 22.24.43 - Accepted - runtime 50ms - memory 14.2MB.py", "383-ransom-note/2022-06-30 22.25.01 - Accepted - runtime 58ms - memory 14.3MB.py", "1833-find-the-highest-altitude", "1833-find-the-highest-altitude/2022-09-20 19.53.45 - Accepted - runtime 63ms - memory 13.9MB.py", "1833-find-the-highest-altitude/2022-09-20 19.55.56 - Accepted - runtime 68ms - memory 13.8MB.py", "404-sum-of-left-leaves", "404-sum-of-left-leaves/2024-04-01 19.12.22 - Accepted - runtime 37ms - memory 16.7MB.py", "404-sum-of-left-leaves/2024-04-14 09.45.14 - Accepted - runtime 40ms - memory 16.8MB.py", "338-counting-bits", "338-counting-bits/2022-07-01 10.23.04 - Accepted - runtime 200ms - memory 20.8MB.py", "82-remove-duplicates-from-sorted-list-ii", "82-remove-duplicates-from-sorted-list-ii/2024-02-24 23.31.33 - Accepted - runtime 41ms - memory 16.5MB.py", "82-remove-duplicates-from-sorted-list-ii/2024-02-24 23.43.39 - Accepted - runtime 5ms - memory 14.1MB.cpp", "82-remove-duplicates-from-sorted-list-ii/2024-02-24 23.40.55 - Accepted - runtime 45ms - memory 16.5MB.py", "981-delete-columns-to-make-sorted", "981-delete-columns-to-make-sorted/2023-01-06 20.36.30 - Accepted - runtime 90ms - memory 14.7MB.py", "242-valid-anagram", "242-valid-anagram/2022-07-28 13.49.37 - Accepted - runtime 98ms - memory 15.1MB.py", "242-valid-anagram/2022-07-02 19.14.14 - Accepted - runtime 87ms - memory 15.1MB.py", "2573-remove-nodes-from-linked-list", "2573-remove-nodes-from-linked-list/2024-02-25 19.28.14 - Accepted - runtime 258ms - memory 164.4MB.cpp", "2573-remove-nodes-from-linked-list/2024-05-06 10.34.18 - Accepted - runtime 377ms - memory 62.4MB.py", "1532-reformat-the-string", "1532-reformat-the-string/2024-04-09 21.20.47 - Accepted - runtime 36ms - memory 16.5MB.py", "969-number-of-recent-calls", "969-number-of-recent-calls/2023-01-18 16.18.17 - Accepted - runtime 452ms - memory 19.4MB.py", "1444-number-of-steps-to-reduce-a-number-to-zero", "1444-number-of-steps-to-reduce-a-number-to-zero/2022-08-01 21.11.31 - Accepted - runtime 46ms - memory 13.9MB.py", "1537-maximum-score-after-splitting-a-string", "1537-maximum-score-after-splitting-a-string/2024-02-08 23.35.57 - Accepted - runtime 39ms - memory 16.7MB.py", "1392-find-the-difference-of-two-arrays", "1392-find-the-difference-of-two-arrays/2023-05-04 18.39.42 - Accepted - runtime 187ms - memory 16.7MB.py", "2372-rearrange-characters-to-make-target-string", "2372-rearrange-characters-to-make-target-string/2023-01-26 14.33.08 - Accepted - runtime 33ms - memory 13.8MB.py", "118-pascals-triangle", "118-pascals-triangle/2022-07-19 22.45.40 - Accepted - runtime 39ms - memory 14MB.py", "201-bitwise-and-of-numbers-range", "201-bitwise-and-of-numbers-range/2024-02-21 10.54.59 - Accepted - runtime 3ms - memory 8.8MB.cpp", "933-increasing-order-search-tree", "933-increasing-order-search-tree/2024-02-01 23.14.31 - Accepted - runtime 20ms - memory 16.6MB.py", "933-increasing-order-search-tree/2024-02-01 23.20.40 - Accepted - runtime 34ms - memory 16.6MB.py", "623-add-one-row-to-tree", "623-add-one-row-to-tree/2024-04-16 12.16.27 - Accepted - runtime 46ms - memory 17.9MB.py", "623-add-one-row-to-tree/2024-04-16 12.14.31 - Accepted - runtime 53ms - memory 17.8MB.py", "1476-count-negative-numbers-in-a-sorted-matrix", "1476-count-negative-numbers-in-a-sorted-matrix/2023-03-06 21.09.16 - Accepted - runtime 126ms - memory 15.1MB.py", "2294-minimum-time-to-complete-trips", "2294-minimum-time-to-complete-trips/2023-03-07 23.25.17 - Accepted - runtime 1858ms - memory 28.3MB.py", "1297-maximum-number-of-balloons", "1297-maximum-number-of-balloons/2024-04-01 16.15.39 - Accepted - runtime 32ms - memory 16.6MB.py", "3062-create-a-dataframe-from-list", "3062-create-a-dataframe-from-list/2024-02-23 23.55.23 - Accepted - runtime 670ms - memory 64.9MB.pd.py", "121-best-time-to-buy-and-sell-stock", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.44.42 - Accepted - runtime 1496ms - memory 25MB.py", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.44.33 - Accepted - runtime 2002ms - memory 25MB.py", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.07.15 - Accepted - runtime 1551ms - memory 24.9MB.py", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.44.17 - Accepted - runtime 1889ms - memory 25MB.py", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.44.26 - Accepted - runtime 997ms - memory 25MB.py", "121-best-time-to-buy-and-sell-stock/2022-06-22 14.44.50 - Accepted - runtime 1453ms - memory 25.2MB.py", "2507-number-of-common-factors", "2507-number-of-common-factors/2024-01-06 18.19.17 - Accepted - runtime 33ms - memory 17.2MB.py", "1203-print-in-order", "1203-print-in-order/2022-09-30 16.44.01 - Accepted - runtime 3460ms - memory 14.4MB.py", "1203-print-in-order/2022-09-30 16.40.12 - Accepted - runtime 4172ms - memory 14.4MB.py", "1203-print-in-order/2022-09-30 16.43.22 - Accepted - runtime 109ms - memory 14.5MB.py", "1203-print-in-order/2022-09-30 17.06.59 - Accepted - runtime 100ms - memory 14.4MB.py", "53-maximum-subarray", "53-maximum-subarray/2022-06-23 16.36.47 - Accepted - runtime 1257ms - memory 27.9MB.py", "1927-maximum-ascending-subarray-sum", "1927-maximum-ascending-subarray-sum/2023-01-21 23.55.15 - Accepted - runtime 77ms - memory 13.8MB.py", "34-find-first-and-last-position-of-element-in-sorted-array", "34-find-first-and-last-position-of-element-in-sorted-array/2024-02-21 11.31.27 - Accepted - runtime 4ms - memory 16.1MB.cpp", "34-find-first-and-last-position-of-element-in-sorted-array/2024-02-21 11.30.45 - Accepted - runtime 3ms - memory 16MB.cpp", "34-find-first-and-last-position-of-element-in-sorted-array/2022-07-25 20.05.02 - Accepted - runtime 139ms - memory 15.5MB.py", "521-longest-uncommon-subsequence-i", "521-longest-uncommon-subsequence-i/2024-03-31 20.55.28 - Accepted - runtime 22ms - memory 16.5MB.py", "1031-add-to-array-form-of-integer", "1031-add-to-array-form-of-integer/2023-02-15 22.11.41 - Accepted - runtime 330ms - memory 14.9MB.py", "2181-smallest-index-with-equal-value", "2181-smallest-index-with-equal-value/2022-09-26 17.46.15 - Accepted - runtime 90ms - memory 13.8MB.py", "104-maximum-depth-of-binary-tree", "104-maximum-depth-of-binary-tree/2024-02-18 21.46.33 - Accepted - runtime 12ms - memory 17.4MB.cpp", "104-maximum-depth-of-binary-tree/2022-06-26 12.19.31 - Accepted - runtime 71ms - memory 16.5MB.py", "104-maximum-depth-of-binary-tree/2024-02-18 21.47.06 - Accepted - runtime 3ms - memory 17.6MB.cpp", "104-maximum-depth-of-binary-tree/2022-06-26 12.17.58 - Accepted - runtime 43ms - memory 16.4MB.py", "500-keyboard-row", "500-keyboard-row/2022-07-21 17.04.16 - Accepted - runtime 28ms - memory 13.9MB.py", "1970-sorting-the-sentence", "1970-sorting-the-sentence/2022-08-02 00.31.50 - Accepted - runtime 33ms - memory 13.8MB.py", "141-linked-list-cycle", "141-linked-list-cycle/2022-06-29 00.09.52 - Accepted - runtime 67ms - memory 17.6MB.py", "141-linked-list-cycle/2024-03-07 03.03.12 - Accepted - runtime 40ms - memory 19.6MB.py", "851-goat-latin", "851-goat-latin/2024-04-05 19.46.35 - Accepted - runtime 42ms - memory 16.5MB.py", "217-contains-duplicate", "217-contains-duplicate/2022-06-29 13.33.09 - Accepted - runtime 722ms - memory 26.1MB.py", "1983-maximum-population-year", "1983-maximum-population-year/2023-01-04 00.18.07 - Accepted - runtime 62ms - memory 13.9MB.py", "1983-maximum-population-year/2023-01-04 01.13.58 - Accepted - runtime 58ms - memory 13.8MB.py", "1983-maximum-population-year/2023-01-04 00.39.21 - Accepted - runtime 59ms - memory 13.9MB.py", "2-add-two-numbers", "2-add-two-numbers/2022-06-22 18.27.40 - Accepted - runtime 121ms - memory 14MB.py", "2-add-two-numbers/2024-02-17 17.55.23 - Accepted - runtime 23ms - memory 76.9MB.cpp", "2-add-two-numbers/2024-02-17 18.03.04 - Accepted - runtime 39ms - memory 76MB.cpp", "2-add-two-numbers/2024-02-17 18.03.27 - Accepted - runtime 19ms - memory 75.9MB.cpp", "11-container-with-most-water", "11-container-with-most-water/2023-01-31 20.56.29 - Accepted - runtime 757ms - memory 27.5MB.py", "2820-return-length-of-arguments-passed", "2820-return-length-of-arguments-passed/2024-02-11 14.21.02 - Accepted - runtime 55ms - memory 48.7MB.js", "1737-maximum-nesting-depth-of-the-parentheses", "1737-maximum-nesting-depth-of-the-parentheses/2024-04-04 09.19.17 - Accepted - runtime 33ms - memory 16.5MB.py", "551-student-attendance-record-i", "551-student-attendance-record-i/2024-03-31 23.50.21 - Accepted - runtime 32ms - memory 16.6MB.py", "283-move-zeroes", "283-move-zeroes/2022-07-01 18.36.22 - Accepted - runtime 262ms - memory 15.6MB.py", "26-remove-duplicates-from-sorted-array", "26-remove-duplicates-from-sorted-array/2022-04-25 10.18.41 - Accepted - runtime 168ms - memory 15.5MB.py", "26-remove-duplicates-from-sorted-array/2022-04-25 10.18.49 - Accepted - runtime 188ms - memory 15.7MB.py", "26-remove-duplicates-from-sorted-array/2024-02-17 12.24.26 - Accepted - runtime 11ms - memory 21.1MB.cpp", "26-remove-duplicates-from-sorted-array/2022-04-25 10.20.50 - Accepted - runtime 97ms - memory 15.4MB.py", "169-majority-element", "169-majority-element/2022-07-18 19.44.23 - Accepted - runtime 177ms - memory 15.5MB.py", "134-gas-station", "134-gas-station/2023-01-07 16.38.42 - Accepted - runtime 704ms - memory 18.9MB.py", "1025-minimum-cost-for-tickets", "1025-minimum-cost-for-tickets/2023-03-29 11.36.18 - Accepted - runtime 35ms - memory 13.8MB.py", "1025-minimum-cost-for-tickets/2023-03-29 11.30.05 - Accepted - runtime 47ms - memory 13.8MB.py", "1406-subtract-the-product-and-sum-of-digits-of-an-integer", "1406-subtract-the-product-and-sum-of-digits-of-an-integer/2022-08-01 20.49.05 - Accepted - runtime 52ms - memory 13.9MB.py", "1791-richest-customer-wealth", "1791-richest-customer-wealth/2022-08-01 16.11.46 - Accepted - runtime 101ms - memory 13.9MB.py", "1848-sum-of-unique-elements", "1848-sum-of-unique-elements/2022-09-26 17.15.28 - Accepted - runtime 65ms - memory 13.8MB.py", "1848-sum-of-unique-elements/2022-09-26 17.13.11 - Accepted - runtime 81ms - memory 13.9MB.py", "1580-shuffle-the-array", "1580-shuffle-the-array/2022-08-01 16.16.04 - Accepted - runtime 120ms - memory 14.1MB.py", "136-single-number", "136-single-number/2022-06-23 22.04.47 - Accepted - runtime 292ms - memory 16.8MB.py", "136-single-number/2022-06-23 22.04.55 - Accepted - runtime 277ms - memory 16.8MB.py", "136-single-number/2022-06-23 22.06.14 - Accepted - runtime 178ms - memory 16.7MB.py", "136-single-number/2022-06-23 22.06.06 - Accepted - runtime 304ms - memory 16.8MB.py", "49-group-anagrams", "49-group-anagrams/2024-02-06 13.42.17 - Accepted - runtime 80ms - memory 20.2MB.py", "49-group-anagrams/2024-02-06 13.40.41 - Accepted - runtime 136ms - memory 21MB.py", "49-group-anagrams/2023-01-28 18.50.16 - Accepted - runtime 106ms - memory 17.7MB.py", "50-powx-n", "50-powx-n/2022-07-06 13.14.25 - Accepted - runtime 53ms - memory 14MB.py", "557-reverse-words-in-a-string-iii", "557-reverse-words-in-a-string-iii/2023-01-27 12.53.59 - Accepted - runtime 43ms - memory 14.6MB.py", "557-reverse-words-in-a-string-iii/2024-02-18 00.22.14 - Accepted - runtime 10ms - memory 13MB.cpp", "557-reverse-words-in-a-string-iii/2024-02-18 00.20.23 - Accepted - runtime 23ms - memory 16.7MB.cpp", "287-find-the-duplicate-number", "287-find-the-duplicate-number/2023-01-11 20.37.21 - Accepted - runtime 593ms - memory 30.2MB.py", "287-find-the-duplicate-number/2024-03-24 21.04.20 - Accepted - runtime 438ms - memory 32.7MB.py", "287-find-the-duplicate-number/2024-02-15 22.16.06 - Accepted - runtime 463ms - memory 32.8MB.py", "3249-minimum-number-of-operations-to-make-array-xor-equal-to-k", "3249-minimum-number-of-operations-to-make-array-xor-equal-to-k/2024-04-29 09.50.45 - Accepted - runtime 591ms - memory 30.8MB.py", "5-longest-palindromic-substring", "5-longest-palindromic-substring/2023-03-03 14.57.53 - Accepted - runtime 4224ms - memory 37.3MB.kt", "5-longest-palindromic-substring/2023-01-19 18.12.07 - Accepted - runtime 544ms - memory 13.8MB.py", "5-longest-palindromic-substring/2022-11-27 19.26.11 - Accepted - runtime 1620ms - memory 14MB.py", "5-longest-palindromic-substring/2022-12-16 14.17.05 - Accepted - runtime 575ms - memory 13.8MB.py", "5-longest-palindromic-substring/2024-02-18 12.02.26 - Accepted - runtime 7ms - memory 12.9MB.cpp", "5-longest-palindromic-substring/2022-11-27 19.08.05 - Accepted - runtime 390ms - memory 14MB.py", "5-longest-palindromic-substring/2022-11-27 19.20.15 - Accepted - runtime 750ms - memory 13.8MB.py", "5-longest-palindromic-substring/2022-11-28 10.32.44 - Accepted - runtime 1300ms - memory 14MB.py", "1254-deepest-leaves-sum", "1254-deepest-leaves-sum/2024-04-15 15.21.32 - Accepted - runtime 108ms - memory 19.5MB.py", "88-merge-sorted-array", "88-merge-sorted-array/2022-06-23 21.43.40 - Accepted - runtime 41ms - memory 13.9MB.py", "2366-maximum-bags-with-full-capacity-of-rocks", "2366-maximum-bags-with-full-capacity-of-rocks/2022-12-27 22.00.12 - Accepted - runtime 883ms - memory 22.3MB.py", "617-merge-two-binary-trees", "617-merge-two-binary-trees/2024-02-02 00.34.59 - Accepted - runtime 48ms - memory 17.1MB.py", "617-merge-two-binary-trees/2024-02-02 00.33.11 - Accepted - runtime 63ms - memory 17MB.py", "1039-find-the-town-judge", "1039-find-the-town-judge/2024-02-22 18.03.13 - Accepted - runtime 102ms - memory 64.4MB.cpp", "1039-find-the-town-judge/2024-02-22 17.56.01 - Accepted - runtime 665ms - memory 21.6MB.py", "171-excel-sheet-column-number", "171-excel-sheet-column-number/2024-03-31 19.39.05 - Accepted - runtime 36ms - memory 16.4MB.py", "789-kth-largest-element-in-a-stream", "789-kth-largest-element-in-a-stream/2023-05-23 14.50.31 - Accepted - runtime 109ms - memory 20.4MB.py", "917-boats-to-save-people", "917-boats-to-save-people/2023-04-03 21.20.24 - Accepted - runtime 451ms - memory 20.8MB.py", "917-boats-to-save-people/2024-05-04 10.01.24 - Accepted - runtime 350ms - memory 23.4MB.py", "917-boats-to-save-people/2024-05-04 10.04.41 - Accepted - runtime 358ms - memory 23.3MB.py", "402-remove-k-digits", "402-remove-k-digits/2024-04-11 11.14.34 - Accepted - runtime 50ms - memory 18.1MB.py", "263-ugly-number", "263-ugly-number/2023-04-30 00.09.10 - Accepted - runtime 54ms - memory 16.4MB.py", "633-sum-of-square-numbers", "633-sum-of-square-numbers/2024-04-15 15.14.41 - Accepted - runtime 127ms - memory 16.5MB.py", "932-monotonic-array", "932-monotonic-array/2024-02-20 19.48.57 - Accepted - runtime 109ms - memory 98.9MB.cpp", "932-monotonic-array/2024-02-20 19.40.30 - Accepted - runtime 751ms - memory 31.1MB.py", "1079-sum-of-root-to-leaf-binary-numbers", "1079-sum-of-root-to-leaf-binary-numbers/2024-01-07 23.02.17 - Accepted - runtime 42ms - memory 17.6MB.py", "1079-sum-of-root-to-leaf-binary-numbers/2024-01-07 22.47.06 - Accepted - runtime 34ms - memory 17.6MB.py", "1079-sum-of-root-to-leaf-binary-numbers/2024-02-20 13.52.18 - Accepted - runtime 0ms - memory 15.8MB.cpp", "1034-subarrays-with-k-different-integers", "1034-subarrays-with-k-different-integers/2024-03-30 20.18.33 - Accepted - runtime 401ms - memory 20.5MB.py", "292-nim-game", "292-nim-game/2024-04-01 15.51.32 - Accepted - runtime 37ms - memory 16.5MB.py", "2337-remove-digit-from-number-to-maximize-result", "2337-remove-digit-from-number-to-maximize-result/2023-11-26 19.09.22 - Accepted - runtime 38ms - memory 16.2MB.py", "2337-remove-digit-from-number-to-maximize-result/2023-11-26 19.12.59 - Accepted - runtime 48ms - memory 16.4MB.py", "279-perfect-squares", "279-perfect-squares/2022-11-22 23.54.47 - Accepted - runtime 50ms - memory 14MB.py", "279-perfect-squares/2022-11-22 23.22.56 - Accepted - runtime 70ms - memory 13.9MB.py", "279-perfect-squares/2022-11-22 23.19.39 - Accepted - runtime 37ms - memory 13.9MB.py", "279-perfect-squares/2022-11-22 23.23.41 - Accepted - runtime 47ms - memory 13.9MB.py", "1528-kids-with-the-greatest-number-of-candies", "1528-kids-with-the-greatest-number-of-candies/2022-08-01 16.35.54 - Accepted - runtime 56ms - memory 13.9MB.py", "1528-kids-with-the-greatest-number-of-candies/2023-04-17 12.13.29 - Accepted - runtime 45ms - memory 13.7MB.py", "504-base-7", "504-base-7/2024-04-01 19.43.04 - Accepted - runtime 34ms - memory 16.4MB.py", "496-next-greater-element-i", "496-next-greater-element-i/2022-09-26 17.35.26 - Accepted - runtime 168ms - memory 14.2MB.py", "461-hamming-distance", "461-hamming-distance/2024-04-01 19.30.11 - Accepted - runtime 28ms - memory 16.5MB.py", "319-bulb-switcher", "319-bulb-switcher/2023-04-27 09.52.40 - Accepted - runtime 50ms - memory 16.4MB.py", "319-bulb-switcher/2023-04-27 09.53.18 - Accepted - runtime 55ms - memory 16.3MB.py", "319-bulb-switcher/2023-04-27 09.52.33 - Accepted - runtime 39ms - memory 16.4MB.py", "319-bulb-switcher/2023-04-27 09.52.23 - Accepted - runtime 40ms - memory 16.2MB.py", "342-power-of-four", "342-power-of-four/2022-07-20 23.20.04 - Accepted - runtime 59ms - memory 13.9MB.py", "1044-find-common-characters", "1044-find-common-characters/2024-04-30 21.07.17 - Accepted - runtime 49ms - memory 16.7MB.py", "2383-add-two-integers", "2383-add-two-integers/2022-08-01 16.04.05 - Accepted - runtime 51ms - memory 13.8MB.py", "1112-find-words-that-can-be-formed-by-characters", "1112-find-words-that-can-be-formed-by-characters/2023-01-26 14.41.00 - Accepted - runtime 177ms - memory 14.4MB.py", "1626-can-make-arithmetic-progression-from-sequence", "1626-can-make-arithmetic-progression-from-sequence/2024-05-05 20.05.40 - Accepted - runtime 39ms - memory 16.9MB.py", "310-minimum-height-trees", "310-minimum-height-trees/2024-04-23 10.17.55 - Accepted - runtime 520ms - memory 42.1MB.py", "1505-create-target-array-in-the-given-order", "1505-create-target-array-in-the-given-order/2022-08-01 21.48.26 - Accepted - runtime 66ms - memory 13.8MB.py", "863-sum-of-distances-in-tree", "863-sum-of-distances-in-tree/2024-04-28 10.41.42 - Accepted - runtime 767ms - memory 44.5MB.py", "1582-design-browser-history", "1582-design-browser-history/2024-03-01 00.25.51 - Accepted - runtime 178ms - memory 19.2MB.py", "1371-minimum-remove-to-make-valid-parentheses", "1371-minimum-remove-to-make-valid-parentheses/2024-04-06 10.44.22 - Accepted - runtime 63ms - memory 17.9MB.py", "222-count-complete-tree-nodes", "222-count-complete-tree-nodes/2024-02-18 22.19.10 - Accepted - runtime 24ms - memory 29.1MB.cpp", "222-count-complete-tree-nodes/2024-02-18 22.16.50 - Accepted - runtime 23ms - memory 29.2MB.cpp", "22-generate-parentheses", "22-generate-parentheses/2022-07-13 03.51.05 - Accepted - runtime 73ms - memory 14.1MB.py", "22-generate-parentheses/2022-07-11 23.32.50 - Accepted - runtime 68ms - memory 14.2MB.py", "79-word-search", "79-word-search/2024-04-03 12.06.52 - Accepted - runtime 39ms - memory 16.7MB.py", "1978-minimum-adjacent-swaps-to-reach-the-kth-smallest-number", "1978-minimum-adjacent-swaps-to-reach-the-kth-smallest-number/2024-01-06 15.44.59 - Accepted - runtime 471ms - memory 17.4MB.py", "2401-count-asterisks", "2401-count-asterisks/2022-07-28 21.35.18 - Accepted - runtime 52ms - memory 14MB.py", "476-number-complement", "476-number-complement/2023-05-13 10.07.07 - Accepted - runtime 39ms - memory 16.1MB.py", "228-summary-ranges", "228-summary-ranges/2023-04-30 00.03.40 - Accepted - runtime 43ms - memory 16.3MB.py", "990-verifying-an-alien-dictionary", "990-verifying-an-alien-dictionary/2023-02-02 17.45.03 - Accepted - runtime 44ms - memory 14.1MB.py", "3094-minimum-number-of-operations-to-make-array-empty", "3094-minimum-number-of-operations-to-make-array-empty/2024-01-04 23.34.25 - Accepted - runtime 528ms - memory 32.1MB.py", "57-insert-interval", "57-insert-interval/2024-03-18 00.35.25 - Accepted - runtime 62ms - memory 20MB.py", "572-subtree-of-another-tree", "572-subtree-of-another-tree/2024-01-07 19.33.08 - Accepted - runtime 72ms - memory 17.6MB.py", "401-binary-watch", "401-binary-watch/2024-05-05 20.11.33 - Accepted - runtime 37ms - memory 16.5MB.py", "3242-count-elements-with-maximum-frequency", "3242-count-elements-with-maximum-frequency/2024-03-08 12.18.45 - Accepted - runtime 38ms - memory 16.6MB.py", "513-find-bottom-left-tree-value", "513-find-bottom-left-tree-value/2024-02-28 19.14.16 - Accepted - runtime 28ms - memory 18.2MB.py", "513-find-bottom-left-tree-value/2024-02-28 19.11.58 - Accepted - runtime 693ms - memory 19.4MB.py", "513-find-bottom-left-tree-value/2024-02-28 19.19.57 - Accepted - runtime 13ms - memory 20.2MB.cpp", "1899-count-items-matching-a-rule", "1899-count-items-matching-a-rule/2022-08-02 00.29.15 - Accepted - runtime 363ms - memory 20.2MB.py", "2195-time-needed-to-buy-tickets", "2195-time-needed-to-buy-tickets/2024-04-09 09.56.41 - Accepted - runtime 47ms - memory 16.8MB.py", "782-jewels-and-stones", "782-jewels-and-stones/2022-08-01 16.26.49 - Accepted - runtime 55ms - memory 13.8MB.py", "775-n-ary-tree-preorder-traversal", "775-n-ary-tree-preorder-traversal/2024-01-07 18.49.27 - Accepted - runtime 55ms - memory 19.3MB.py", "775-n-ary-tree-preorder-traversal/2022-07-07 11.57.42 - Accepted - runtime 60ms - memory 16MB.py", "775-n-ary-tree-preorder-traversal/2022-07-07 11.52.59 - Accepted - runtime 70ms - memory 16.4MB.py", "775-n-ary-tree-preorder-traversal/2022-07-07 11.54.29 - Accepted - runtime 80ms - memory 16.1MB.py", "775-n-ary-tree-preorder-traversal/2022-07-07 11.57.57 - Accepted - runtime 99ms - memory 16MB.py", "775-n-ary-tree-preorder-traversal/2022-07-07 11.58.14 - Accepted - runtime 68ms - memory 16MB.py", "3172-divisible-and-non-divisible-sums-difference", "3172-divisible-and-non-divisible-sums-difference/2024-02-02 19.21.58 - Accepted - runtime 37ms - memory 16.6MB.py", "1306-minimum-absolute-difference", "1306-minimum-absolute-difference/2022-09-26 18.06.25 - Accepted - runtime 716ms - memory 28.9MB.py", "41-first-missing-positive", "41-first-missing-positive/2024-03-26 12.25.07 - Accepted - runtime 272ms - memory 35.2MB.py", "1341-split-a-string-in-balanced-strings", "1341-split-a-string-in-balanced-strings/2024-01-04 16.06.52 - Accepted - runtime 36ms - memory 17.4MB.py", "2442-number-of-arithmetic-triplets", "2442-number-of-arithmetic-triplets/2022-09-17 14.17.00 - Accepted - runtime 0ms - memory 8.7MB.cpp", "2442-number-of-arithmetic-triplets/2022-09-17 14.00.13 - Accepted - runtime 2826ms - memory 13.9MB.py", "2442-number-of-arithmetic-triplets/2022-09-20 14.49.29 - Accepted - runtime 76ms - memory 13.9MB.py", "135-candy", "135-candy/2023-01-19 18.47.39 - Accepted - runtime 157ms - memory 16.8MB.py", "2421-maximum-number-of-pairs-in-array", "2421-maximum-number-of-pairs-in-array/2022-07-30 01.50.12 - Accepted - runtime 52ms - memory 13.9MB.py", "2421-maximum-number-of-pairs-in-array/2022-07-30 01.49.55 - Accepted - runtime 47ms - memory 13.8MB.py", "2421-maximum-number-of-pairs-in-array/2024-04-01 14.50.09 - Accepted - runtime 42ms - memory 16.5MB.py", "2421-maximum-number-of-pairs-in-array/2022-07-30 01.51.39 - Accepted - runtime 59ms - memory 13.9MB.py", "2421-maximum-number-of-pairs-in-array/2022-07-30 01.50.06 - Accepted - runtime 60ms - memory 13.9MB.py", "2421-maximum-number-of-pairs-in-array/2022-07-30 01.50.21 - Accepted - runtime 39ms - memory 13.9MB.py", "389-find-the-difference", "389-find-the-difference/2024-02-17 23.19.32 - Accepted - runtime 2ms - memory 7.9MB.cpp", "389-find-the-difference/2022-10-12 19.27.01 - Accepted - runtime 58ms - memory 13.8MB.py", "389-find-the-difference/2024-02-17 23.19.54 - Accepted - runtime 5ms - memory 7.9MB.cpp", "208-implement-trie-prefix-tree", "208-implement-trie-prefix-tree/2024-03-08 19.48.43 - Accepted - runtime 114ms - memory 31.4MB.py", "17-letter-combinations-of-a-phone-number", "17-letter-combinations-of-a-phone-number/2022-12-31 22.41.38 - Accepted - runtime 29ms - memory 13.9MB.py", "17-letter-combinations-of-a-phone-number/2022-12-31 20.31.16 - Accepted - runtime 36ms - memory 13.9MB.py", "382-linked-list-random-node", "382-linked-list-random-node/2024-03-01 00.28.30 - Accepted - runtime 63ms - memory 19.3MB.py", "2876-number-of-employees-who-met-the-target", "2876-number-of-employees-who-met-the-target/2024-04-01 14.43.54 - Accepted - runtime 47ms - memory 16.5MB.py", "240-search-a-2d-matrix-ii", "240-search-a-2d-matrix-ii/2022-07-24 20.18.11 - Accepted - runtime 349ms - memory 20.4MB.py", "2406-decode-the-message", "2406-decode-the-message/2022-07-28 21.56.07 - Accepted - runtime 65ms - memory 13.7MB.py", "1224-minimum-falling-path-sum-ii", "1224-minimum-falling-path-sum-ii/2024-04-26 09.44.19 - Accepted - runtime 215ms - memory 20.1MB.py", "315-count-of-smaller-numbers-after-self", "315-count-of-smaller-numbers-after-self/2022-07-23 11.44.06 - Accepted - runtime 4141ms - memory 41.8MB.py", "35-search-insert-position", "35-search-insert-position/2022-06-15 20.57.16 - Accepted - runtime 67ms - memory 14.7MB.py", "35-search-insert-position/2024-02-17 13.16.29 - Accepted - runtime 0ms - memory 12.1MB.cpp", "35-search-insert-position/2022-06-15 20.57.29 - Accepted - runtime 115ms - memory 14.7MB.py", "35-search-insert-position/2022-06-15 20.57.22 - Accepted - runtime 82ms - memory 14.7MB.py", "35-search-insert-position/2024-02-17 13.15.34 - Accepted - runtime 0ms - memory 11.9MB.cpp", "35-search-insert-position/2022-06-15 20.57.03 - Accepted - runtime 92ms - memory 14.6MB.py", "35-search-insert-position/2022-06-15 21.09.32 - Accepted - runtime 90ms - memory 14.8MB.py", "647-palindromic-substrings", "647-palindromic-substrings/2024-02-10 13.34.43 - Accepted - runtime 415ms - memory 16.5MB.py", "832-binary-tree-pruning", "832-binary-tree-pruning/2024-01-08 15.42.34 - Accepted - runtime 33ms - memory 17.2MB.py", "832-binary-tree-pruning/2024-01-08 15.38.39 - Accepted - runtime 38ms - memory 17.4MB.py", "832-binary-tree-pruning/2024-01-08 15.38.29 - Accepted - runtime 43ms - memory 17.4MB.py", "832-binary-tree-pruning/2024-01-08 15.42.47 - Accepted - runtime 35ms - memory 17.4MB.py", "832-binary-tree-pruning/2024-01-08 15.41.14 - Accepted - runtime 30ms - memory 17.2MB.py", "46-permutations", "46-permutations/2024-04-25 22.57.18 - Accepted - runtime 36ms - memory 16.5MB.py", "742-to-lower-case", "742-to-lower-case/2022-09-20 14.25.24 - Accepted - runtime 61ms - memory 13.8MB.py", "65-valid-number", "65-valid-number/2024-04-05 10.55.01 - Accepted - runtime 38ms - memory 16.6MB.py", "1797-goal-parser-interpretation", "1797-goal-parser-interpretation/2022-08-01 17.33.04 - Accepted - runtime 69ms - memory 13.9MB.py", "654-maximum-binary-tree", "654-maximum-binary-tree/2024-02-08 22.21.01 - Accepted - runtime 128ms - memory 17.1MB.py", "1777-determine-if-two-strings-are-close", "1777-determine-if-two-strings-are-close/2024-01-14 22.59.33 - Accepted - runtime 130ms - memory 18.1MB.py", "1777-determine-if-two-strings-are-close/2024-01-14 22.58.46 - Accepted - runtime 125ms - memory 18.5MB.py", "143-reorder-list", "143-reorder-list/2024-03-23 18.30.04 - Accepted - runtime 54ms - memory 24.6MB.py", "2083-three-divisors", "2083-three-divisors/2024-01-05 23.21.34 - Accepted - runtime 34ms - memory 17.3MB.py", "2571-find-the-pivot-integer", "2571-find-the-pivot-integer/2024-03-13 12.58.11 - Accepted - runtime 42ms - memory 16.7MB.py", "1378-cells-with-odd-values-in-a-matrix", "1378-cells-with-odd-values-in-a-matrix/2022-09-20 20.06.43 - Accepted - runtime 85ms - memory 13.9MB.py", "1378-cells-with-odd-values-in-a-matrix/2022-09-20 20.11.45 - Accepted - runtime 75ms - memory 14MB.py", "1411-convert-binary-number-in-a-linked-list-to-integer", "1411-convert-binary-number-in-a-linked-list-to-integer/2022-08-02 00.37.17 - Accepted - runtime 40ms - memory 13.8MB.py", "1448-maximum-69-number", "1448-maximum-69-number/2022-09-20 19.24.20 - Accepted - runtime 30ms - memory 13.9MB.py", "1448-maximum-69-number/2022-09-20 19.23.41 - Accepted - runtime 65ms - memory 13.9MB.py", "1250-longest-common-subsequence", "1250-longest-common-subsequence/2024-03-13 01.01.50 - Accepted - runtime 371ms - memory 16.5MB.py", "1250-longest-common-subsequence/2024-03-14 13.03.08 - Accepted - runtime 368ms - memory 16.6MB.py", "1250-longest-common-subsequence/2024-03-14 12.15.09 - Accepted - runtime 372ms - memory 16.5MB.py", "1250-longest-common-subsequence/2024-03-12 18.58.26 - Accepted - runtime 373ms - memory 16.6MB.py", "1250-longest-common-subsequence/2024-03-14 12.17.37 - Accepted - runtime 366ms - memory 16.6MB.py", "1250-longest-common-subsequence/2024-03-12 18.58.37 - Accepted - runtime 363ms - memory 16.5MB.py", "1250-longest-common-subsequence/2024-03-12 20.02.07 - Accepted - runtime 369ms - memory 16.7MB.py", "448-find-all-numbers-disappeared-in-an-array", "448-find-all-numbers-disappeared-in-an-array/2024-04-01 19.21.36 - Accepted - runtime 258ms - memory 26.9MB.py", "344-reverse-string", "344-reverse-string/2022-06-30 22.11.34 - Accepted - runtime 274ms - memory 18.3MB.py", "344-reverse-string/2022-06-30 22.10.25 - Accepted - runtime 399ms - memory 18.4MB.py", "1538-maximum-points-you-can-obtain-from-cards", "1538-maximum-points-you-can-obtain-from-cards/2022-06-26 11.59.00 - Accepted - runtime 491ms - memory 28.8MB.py", "1538-maximum-points-you-can-obtain-from-cards/2022-06-26 11.58.51 - Accepted - runtime 864ms - memory 28.8MB.py", "1073-number-of-enclaves", "1073-number-of-enclaves/2023-04-07 11.10.14 - Accepted - runtime 1188ms - memory 19.5MB.py", "459-repeated-substring-pattern", "459-repeated-substring-pattern/2024-03-31 20.04.41 - Accepted - runtime 40ms - memory 16.7MB.py", "64-minimum-path-sum", "64-minimum-path-sum/2023-03-27 15.38.59 - Accepted - runtime 96ms - memory 15.6MB.py", "64-minimum-path-sum/2023-03-27 15.21.32 - Accepted - runtime 91ms - memory 15.6MB.py", "21-merge-two-sorted-lists", "21-merge-two-sorted-lists/2022-04-24 22.30.38 - Accepted - runtime 40ms - memory 13.9MB.py", "21-merge-two-sorted-lists/2022-04-24 22.29.26 - Accepted - runtime 42ms - memory 14MB.py", "21-merge-two-sorted-lists/2022-04-24 22.36.04 - Accepted - runtime 38ms - memory 14MB.py", "21-merge-two-sorted-lists/2022-04-24 22.35.54 - Accepted - runtime 91ms - memory 13.9MB.py", "21-merge-two-sorted-lists/2024-02-17 01.43.55 - Accepted - runtime 3ms - memory 18.2MB.cpp", "21-merge-two-sorted-lists/2024-02-17 01.34.39 - Accepted - runtime 8ms - memory 18.7MB.cpp", "941-sort-array-by-parity", "941-sort-array-by-parity/2024-02-18 00.04.53 - Accepted - runtime 7ms - memory 19MB.cpp", "941-sort-array-by-parity/2024-02-17 23.57.04 - Accepted - runtime 63ms - memory 17.3MB.py", "941-sort-array-by-parity/2024-02-18 00.01.22 - Accepted - runtime 7ms - memory 18.6MB.cpp", "941-sort-array-by-parity/2024-02-18 00.05.19 - Accepted - runtime 10ms - memory 18.9MB.cpp", "2058-concatenation-of-array", "2058-concatenation-of-array/2022-08-01 16.03.49 - Accepted - runtime 142ms - memory 14.3MB.py", "73-set-matrix-zeroes", "73-set-matrix-zeroes/2024-03-10 18.21.20 - Accepted - runtime 116ms - memory 17.5MB.py", "452-minimum-number-of-arrows-to-burst-balloons", "452-minimum-number-of-arrows-to-burst-balloons/2024-03-18 16.29.28 - Accepted - runtime 999ms - memory 62.7MB.py", "200-number-of-islands", "200-number-of-islands/2024-03-09 15.11.57 - Accepted - runtime 314ms - memory 18.9MB.py", "200-number-of-islands/2022-12-18 15.14.08 - Accepted - runtime 1331ms - memory 16.3MB.py", "200-number-of-islands/2022-12-18 15.18.39 - Accepted - runtime 1300ms - memory 16.3MB.py", "200-number-of-islands/2022-12-18 15.18.27 - Accepted - runtime 434ms - memory 16.2MB.py", "200-number-of-islands/2024-04-19 09.50.52 - Accepted - runtime 307ms - memory 18.9MB.py", "200-number-of-islands/2024-03-07 16.18.25 - Accepted - runtime 71ms - memory 17.4MB.py", "200-number-of-islands/2022-07-15 15.01.49 - Accepted - runtime 469ms - memory 16.2MB.py", "200-number-of-islands/2024-03-07 16.17.13 - Accepted - runtime 326ms - memory 19MB.py", "200-number-of-islands/2022-12-18 15.14.37 - Accepted - runtime 1307ms - memory 16.2MB.py", "200-number-of-islands/2022-12-18 15.13.54 - Accepted - runtime 1356ms - memory 16.2MB.py", "200-number-of-islands/2022-12-18 15.18.16 - Accepted - runtime 427ms - memory 16.2MB.py", "2231-find-first-palindromic-string-in-the-array", "2231-find-first-palindromic-string-in-the-array/2022-09-20 20.00.13 - Accepted - runtime 111ms - memory 13.9MB.py", "516-longest-palindromic-subsequence", "516-longest-palindromic-subsequence/2023-04-14 12.17.20 - Accepted - runtime 1179ms - memory 13.9MB.py", "747-min-cost-climbing-stairs", "747-min-cost-climbing-stairs/2022-07-10 15.01.01 - Accepted - runtime 108ms - memory 14MB.py", "2365-percentage-of-letter-in-string", "2365-percentage-of-letter-in-string/2022-09-26 14.58.50 - Accepted - runtime 58ms - memory 13.9MB.py", "2365-percentage-of-letter-in-string/2022-09-26 14.58.00 - Accepted - runtime 57ms - memory 13.9MB.py", "606-construct-string-from-binary-tree", "606-construct-string-from-binary-tree/2024-01-07 22.32.07 - Accepted - runtime 41ms - memory 18.6MB.py", "739-daily-temperatures", "739-daily-temperatures/2024-01-31 21.29.56 - Accepted - runtime 898ms - memory 32.4MB.py", "61-rotate-list", "61-rotate-list/2022-07-18 16.08.07 - Accepted - runtime 58ms - memory 13.8MB.py", "303-range-sum-query-immutable", "303-range-sum-query-immutable/2024-03-14 00.11.29 - Accepted - runtime 65ms - memory 20.1MB.py", "303-range-sum-query-immutable/2024-03-14 00.10.11 - Accepted - runtime 794ms - memory 19.9MB.py", "1221-element-appearing-more-than-25-in-sorted-array", "1221-element-appearing-more-than-25-in-sorted-array/2024-01-04 15.55.37 - Accepted - runtime 81ms - memory 18.8MB.py", "144-binary-tree-preorder-traversal", "144-binary-tree-preorder-traversal/2023-01-09 21.13.30 - Accepted - runtime 28ms - memory 13.9MB.py", "144-binary-tree-preorder-traversal/2024-02-18 22.05.34 - Accepted - runtime 4ms - memory 9.9MB.cpp", "144-binary-tree-preorder-traversal/2022-07-06 22.09.37 - Accepted - runtime 67ms - memory 13.8MB.py", "326-power-of-three", "326-power-of-three/2022-07-20 23.19.49 - Accepted - runtime 121ms - memory 13.8MB.py", "657-robot-return-to-origin", "657-robot-return-to-origin/2024-04-01 00.31.58 - Accepted - runtime 102ms - memory 16.6MB.py", "1019-squares-of-a-sorted-array", "1019-squares-of-a-sorted-array/2024-03-26 00.09.06 - Accepted - runtime 160ms - memory 18.7MB.py", "1019-squares-of-a-sorted-array/2022-09-26 15.20.03 - Accepted - runtime 478ms - memory 16.2MB.py", "445-add-two-numbers-ii", "445-add-two-numbers-ii/2024-02-28 23.29.49 - Accepted - runtime 59ms - memory 16.6MB.py", "15-3sum", "15-3sum/2022-04-18 23.07.44 - Accepted - runtime 803ms - memory 18.1MB.py", "227-basic-calculator-ii", "227-basic-calculator-ii/2024-03-31 22.27.01 - Accepted - runtime 130ms - memory 107.7MB.py", "1287-distance-between-bus-stops", "1287-distance-between-bus-stops/2024-04-21 18.13.37 - Accepted - runtime 50ms - memory 17.6MB.py", "961-long-pressed-name", "961-long-pressed-name/2024-04-06 12.16.00 - Accepted - runtime 46ms - memory 16.7MB.py", "2283-sort-even-and-odd-indices-independently", "2283-sort-even-and-odd-indices-independently/2022-07-21 10.57.31 - Accepted - runtime 114ms - memory 13.8MB.py", "380-insert-delete-getrandom-o1", "380-insert-delete-getrandom-o1/2024-01-17 19.17.35 - Accepted - runtime 467ms - memory 64.7MB.py", "713-subarray-product-less-than-k", "713-subarray-product-less-than-k/2024-03-28 11.16.26 - Accepted - runtime 530ms - memory 19.4MB.py", "713-subarray-product-less-than-k/2024-03-27 19.58.59 - Accepted - runtime 508ms - memory 19.2MB.py", "2331-intersection-of-multiple-arrays", "2331-intersection-of-multiple-arrays/2023-11-27 21.02.15 - Accepted - runtime 65ms - memory 17MB.py", "1574-maximum-product-of-two-elements-in-an-array", "1574-maximum-product-of-two-elements-in-an-array/2022-09-20 19.26.46 - Accepted - runtime 140ms - memory 14MB.py", "58-length-of-last-word", "58-length-of-last-word/2024-02-17 13.21.12 - Accepted - runtime 0ms - memory 7.6MB.cpp", "58-length-of-last-word/2024-04-01 15.53.26 - Accepted - runtime 32ms - memory 16.8MB.py", "58-length-of-last-word/2022-06-15 21.46.06 - Accepted - runtime 36ms - memory 13.8MB.py", "1236-n-th-tribonacci-number", "1236-n-th-tribonacci-number/2024-04-24 12.22.18 - Accepted - runtime 38ms - memory 16.5MB.py", "1781-check-if-two-string-arrays-are-equivalent", "1781-check-if-two-string-arrays-are-equivalent/2022-09-20 14.26.50 - Accepted - runtime 68ms - memory 13.8MB.py", "1965-sum-of-digits-in-base-k", "1965-sum-of-digits-in-base-k/2022-09-26 14.48.50 - Accepted - runtime 56ms - memory 13.9MB.py", "1256-rank-transform-of-an-array", "1256-rank-transform-of-an-array/2024-04-15 15.25.23 - Accepted - runtime 234ms - memory 35.9MB.py", "1362-airplane-seat-assignment-probability", "1362-airplane-seat-assignment-probability/2024-04-15 14.42.55 - Accepted - runtime 40ms - memory 16.6MB.py", "36-valid-sudoku", "36-valid-sudoku/2024-02-21 11.36.47 - Accepted - runtime 7ms - memory 22.9MB.cpp", "36-valid-sudoku/2023-02-09 12.01.46 - Accepted - runtime 89ms - memory 13.9MB.py", "54-spiral-matrix", "54-spiral-matrix/2023-01-28 19.23.56 - Accepted - runtime 32ms - memory 13.9MB.py", "54-spiral-matrix/2023-01-31 19.06.09 - Accepted - runtime 25ms - memory 13.9MB.py", "54-spiral-matrix/2023-05-09 12.38.05 - Accepted - runtime 32ms - memory 16.2MB.py", "54-spiral-matrix/2023-01-31 19.10.29 - Accepted - runtime 37ms - memory 13.9MB.py", "1561-rearrange-words-in-a-sentence", "1561-rearrange-words-in-a-sentence/2024-04-10 14.44.48 - Accepted - runtime 29ms - memory 18.8MB.py", "28-find-the-index-of-the-first-occurrence-in-a-string", "28-find-the-index-of-the-first-occurrence-in-a-string/2022-04-25 16.30.49 - Accepted - runtime 52ms - memory 13.9MB.py", "28-find-the-index-of-the-first-occurrence-in-a-string/2024-02-17 12.48.04 - Accepted - runtime 0ms - memory 7.5MB.cpp", "32-longest-valid-parentheses", "32-longest-valid-parentheses/2024-04-16 11.12.23 - Accepted - runtime 46ms - memory 17.4MB.py", "621-task-scheduler", "621-task-scheduler/2024-03-19 12.48.51 - Accepted - runtime 374ms - memory 17MB.py", "374-guess-number-higher-or-lower", "374-guess-number-higher-or-lower/2022-07-16 01.28.04 - Accepted - runtime 37ms - memory 13.8MB.py", "374-guess-number-higher-or-lower/2023-03-07 23.57.02 - Accepted - runtime 27ms - memory 13.8MB.py", "374-guess-number-higher-or-lower/2022-07-15 20.04.23 - Accepted - runtime 57ms - memory 13.8MB.py", "2558-minimum-number-of-operations-to-sort-a-binary-tree-by-level", "2558-minimum-number-of-operations-to-sort-a-binary-tree-by-level/2024-04-07 23.13.58 - Accepted - runtime 404ms - memory 47.4MB.py", "3225-length-of-longest-subarray-with-at-most-k-frequency", "3225-length-of-longest-subarray-with-at-most-k-frequency/2024-03-28 12.07.07 - Accepted - runtime 1276ms - memory 31.1MB.py", "3225-length-of-longest-subarray-with-at-most-k-frequency/2024-03-28 22.35.20 - Accepted - runtime 1249ms - memory 31.2MB.py", "1603-running-sum-of-1d-array", "1603-running-sum-of-1d-array/2022-08-01 16.06.22 - Accepted - runtime 69ms - memory 14.1MB.py", "19-remove-nth-node-from-end-of-list", "19-remove-nth-node-from-end-of-list/2022-04-23 09.30.00 - Accepted - runtime 74ms - memory 13.9MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.29.54 - Accepted - runtime 47ms - memory 13.8MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.29.47 - Accepted - runtime 36ms - memory 13.8MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.29.22 - Accepted - runtime 32ms - memory 13.9MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.30.09 - Accepted - runtime 29ms - memory 13.9MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.28.17 - Accepted - runtime 61ms - memory 13.9MB.py", "19-remove-nth-node-from-end-of-list/2022-04-23 09.22.14 - Accepted - runtime 60ms - memory 13.9MB.py", "2722-prime-in-diagonal", "2722-prime-in-diagonal/2024-01-05 23.09.49 - Accepted - runtime 646ms - memory 29.3MB.py", "409-longest-palindrome", "409-longest-palindrome/2024-03-31 19.47.34 - Accepted - runtime 30ms - memory 16.5MB.py", "2444-longest-ideal-subsequence", "2444-longest-ideal-subsequence/2024-04-25 09.55.54 - Accepted - runtime 288ms - memory 17.5MB.py", "350-intersection-of-two-arrays-ii", "350-intersection-of-two-arrays-ii/2024-04-01 16.06.51 - Accepted - runtime 48ms - memory 16.7MB.py", "3064-reshape-data-concatenate", "3064-reshape-data-concatenate/2024-04-01 14.37.48 - Accepted - runtime 788ms - memory 65.8MB.pd.py", "3194-find-words-containing-character", "3194-find-words-containing-character/2024-02-02 19.20.05 - Accepted - runtime 75ms - memory 16.7MB.py"] \ No newline at end of file diff --git a/data/leetcode/2015-09-27T13-00-00Z/links.json b/data/leetcode/2015-09-27T13-00-00Z/links.json deleted file mode 100644 index 90e34ca..0000000 --- a/data/leetcode/2015-09-27T13-00-00Z/links.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [-2, 1, -4, 3, -6, 5, -7, 5, -9, 8, -11, 10, -12, 10, -13, 10, -14, 10, -16, 15, -17, 15, -19, 18, -21, 20, -22, 20, -23, 20, -24, 20, -26, 25, -28, 27, -30, 29, -32, 31, -33, 31, -34, 31, -36, 35, -37, 35, -38, 35, -39, 35, -40, 35, -41, 35, -42, 35, -43, 35, -44, 35, -45, 35, -46, 35, -48, 47, -50, 49, -51, 49, -53, 52, -54, 52, -56, 55, -58, 57, -60, 59, -62, 61, -64, 63, -65, 63, -67, 66, -69, 68, -71, 70, -72, 70, -74, 73, -76, 75, -78, 77, -79, 77, -80, 77, -81, 77, -82, 77, -84, 83, -86, 85, -87, 85, -88, 85, -89, 85, -90, 85, -91, 85, -92, 85, -93, 85, -94, 85, -95, 85, -96, 85, -97, 85, -98, 85, -99, 85, -100, 85, -101, 85, -102, 85, -103, 85, -104, 85, -105, 85, -106, 85, -107, 85, -109, 108, -111, 110, -113, 112, -114, 112, -115, 112, -117, 116, -118, 116, -120, 119, -122, 121, -123, 121, -124, 121, -126, 125, -128, 127, -130, 129, -131, 129, -133, 132, -135, 134, -136, 134, -137, 134, -138, 134, -139, 134, -140, 134, -141, 134, -142, 134, -143, 134, -144, 134, -145, 134, -147, 146, -148, 146, -149, 146, -151, 150, -153, 152, -155, 154, -157, 156, -159, 158, -160, 158, -162, 161, -164, 163, -166, 165, -168, 167, -169, 167, -171, 170, -173, 172, -175, 174, -176, 174, -178, 177, -180, 179, -182, 181, -184, 183, -186, 185, -187, 185, -188, 185, -190, 189, -191, 189, -192, 189, -194, 193, -195, 193, -196, 193, -197, 193, -198, 193, -200, 199, -202, 201, -203, 201, -205, 204, -207, 206, -209, 208, -211, 210, -212, 210, -214, 213, -216, 215, -218, 217, -219, 217, -220, 217, -222, 221, -224, 223, -225, 223, -227, 226, -229, 228, -231, 230, -233, 232, -235, 234, -236, 234, -237, 234, -239, 238, -241, 240, -242, 240, -244, 243, -246, 245, -247, 245, -249, 248, -251, 250, -252, 250, -253, 250, -254, 250, -256, 255, -257, 255, -258, 255, -259, 255, -260, 255, -262, 261, -263, 261, -264, 261, -266, 265, -267, 265, -268, 265, -269, 265, -271, 270, -272, 270, -274, 273, -275, 273, -277, 276, -279, 278, -281, 280, -282, 280, -284, 283, -286, 285, -287, 285, -289, 288, -290, 288, -291, 288, -292, 288, -293, 288, -294, 288, -295, 288, -297, 296, -298, 296, -300, 299, -302, 301, -304, 303, -306, 305, -308, 307, -310, 309, -312, 311, -314, 313, -315, 313, -317, 316, -319, 318, -321, 320, -322, 320, -324, 323, -325, 323, -327, 326, -329, 328, -331, 330, -333, 332, -335, 334, -337, 336, -338, 336, -339, 336, -341, 340, -343, 342, -344, 342, -345, 342, -347, 346, -348, 346, -350, 349, -352, 351, -353, 351, -354, 351, -355, 351, -356, 351, -357, 351, -359, 358, -361, 360, -363, 362, -365, 364, -367, 366, -369, 368, -370, 368, -371, 368, -373, 372, -374, 372, -375, 372, -376, 372, -377, 372, -379, 378, -381, 380, -383, 382, -385, 384, -387, 386, -389, 388, -390, 388, -391, 388, -393, 392, -395, 394, -396, 394, -397, 394, -399, 398, -400, 398, -402, 401, -404, 403, -405, 403, -407, 406, -409, 408, -410, 408, -411, 408, -412, 408, -413, 408, -415, 414, -417, 416, -418, 416, -419, 416, -421, 420, -423, 422, -424, 422, -426, 425, -427, 425, -429, 428, -431, 430, -433, 432, -435, 434, -437, 436, -438, 436, -439, 436, -440, 436, -442, 441, -444, 443, -445, 443, -446, 443, -448, 447, -450, 449, -452, 451, -454, 453, -456, 455, -458, 457, -460, 459, -462, 461, -464, 463, -466, 465, -467, 465, -468, 465, -470, 469, -472, 471, -474, 473, -476, 475, -478, 477, -479, 477, -480, 477, -481, 477, -482, 477, -483, 477, -485, 484, -487, 486, -489, 488, -491, 490, -492, 490, -493, 490, -494, 490, -496, 495, -498, 497, -500, 499, -502, 501, -503, 501, -504, 501, -505, 501, -506, 501, -507, 501, -508, 501, -510, 509, -512, 511, -514, 513, -516, 515, -518, 517, -519, 517, -520, 517, -522, 521, -524, 523, -526, 525, -527, 525, -528, 525, -529, 525, -530, 525, -531, 525, -532, 525, -534, 533, -536, 535, -538, 537, -539, 537, -541, 540, -543, 542, -545, 544, -546, 544, -548, 547, -550, 549, -551, 549, -552, 549, -554, 553, -556, 555, -558, 557, -559, 557, -561, 560, -563, 562, -564, 562, -565, 562, -567, 566, -569, 568, -570, 568, -571, 568, -572, 568, -573, 568, -575, 574, -577, 576, -579, 578, -580, 578, -582, 581, -584, 583, -586, 585, -587, 585, -589, 588, -591, 590, -593, 592, -595, 594, -597, 596, -599, 598, -601, 600, -602, 600, -603, 600, -604, 600, -606, 605, -607, 605, -609, 608, -610, 608, -612, 611, -613, 611, -615, 614, -617, 616, -619, 618, -620, 618, -621, 618, -622, 618, -624, 623, -626, 625, -628, 627, -630, 629, -631, 629, -632, 629, -634, 633, -635, 633, -637, 636, -639, 638, -640, 638, -642, 641, -643, 641, -645, 644, -647, 646, -648, 646, -649, 646, -651, 650, -653, 652, -654, 652, -656, 655, -657, 655, -659, 658, -661, 660, -663, 662, -665, 664, -667, 666, -669, 668, -671, 670, -673, 672, -675, 674, -677, 676, -678, 676, -680, 679, -682, 681, -683, 681, -685, 684, -687, 686, -689, 688, -691, 690, -693, 692, -694, 692, -695, 692, -697, 696, -698, 696, -699, 696, -700, 696, -701, 696, -703, 702, -704, 702, -706, 705, -708, 707, -710, 709, -712, 711, -714, 713, -715, 713, -717, 716, -718, 716, -720, 719, -721, 719, -723, 722, -724, 722, -726, 725, -728, 727, -729, 727, -730, 727, -732, 731, -734, 733, -735, 733, -737, 736, -738, 736, -740, 739, -742, 741, -744, 743, -746, 745, -748, 747, -750, 749, -752, 751, -754, 753, -756, 755, -757, 755, -759, 758, -760, 758, -762, 761, -764, 763, -766, 765, -768, 767, -770, 769, -771, 769, -772, 769, -773, 769, -774, 769, -775, 769, -777, 776, -779, 778, -780, 778, -781, 778, -782, 778, -784, 783, -786, 785, -788, 787, -789, 787, -790, 787, -792, 791, -794, 793, -796, 795, -798, 797, -799, 797, -800, 797, -801, 797, -803, 802, -805, 804, -807, 806, -808, 806, -810, 809, -812, 811, -814, 813, -815, 813, -816, 813, -818, 817, -819, 817, -820, 817, -821, 817, -823, 822, -825, 824, -827, 826, -829, 828, -831, 830, -833, 832, -834, 832, -835, 832, -836, 832, -838, 837, -840, 839, -842, 841, -843, 841, -845, 844, -847, 846, -849, 848, -850, 848, -852, 851, -854, 853, -855, 853, -856, 853, -857, 853, -859, 858, -860, 858, -861, 858, -863, 862, -865, 864, -866, 864, -867, 864, -869, 868, -870, 868, -871, 868, -873, 872, -875, 874, -876, 874, -877, 874, -878, 874, -879, 874, -880, 874, -881, 874, -882, 874, -884, 883, -886, 885, -888, 887, -890, 889, -891, 889, -893, 892, -894, 892, -896, 895, -898, 897, -900, 899, -901, 899, -902, 899, -904, 903, -906, 905, -908, 907, -910, 909, -911, 909, -913, 912, -914, 912, -915, 912, -917, 916, -919, 918, -921, 920, -922, 920, -924, 923, -925, 923, -926, 923, -927, 923, -929, 928, -930, 928, -932, 931, -934, 933, -936, 935, -938, 937, -939, 937, -940, 937, -941, 937, -943, 942, -945, 944, -947, 946, -949, 948, -951, 950, -953, 952, -955, 954, -957, 956, -959, 958, -961, 960, -963, 962, -964, 962, -966, 965, -967, 965, -969, 968, -971, 970, -973, 972, -975, 974, -977, 976, -979, 978, -981, 980, -983, 982, -985, 984, -987, 986, -989, 988, -991, 990, -992, 990, -993, 990, -995, 994, -997, 996, -999, 998, -1001, 1000, -1002, 1000, -1003, 1000, -1004, 1000, -1005, 1000, -1006, 1000, -1008, 1007, -1010, 1009, -1012, 1011, -1014, 1013, -1016, 1015, -1017, 1015, -1018, 1015, -1020, 1019, -1022, 1021, -1023, 1021, -1024, 1021, -1025, 1021, -1026, 1021, -1027, 1021, -1029, 1028, -1030, 1028, -1031, 1028, -1033, 1032, -1035, 1034, -1036, 1034, -1038, 1037, -1040, 1039, -1042, 1041, -1044, 1043, -1046, 1045, -1048, 1047, -1050, 1049, -1051, 1049, -1052, 1049, -1053, 1049, -1054, 1049, -1055, 1049, -1056, 1049, -1058, 1057, -1060, 1059, -1061, 1059, -1062, 1059, -1063, 1059, -1064, 1059, -1066, 1065, -1068, 1067, -1070, 1069, -1072, 1071, -1074, 1073, -1076, 1075, -1077, 1075, -1079, 1078, -1081, 1080, -1083, 1082, -1085, 1084, -1086, 1084, -1088, 1087, -1090, 1089, -1091, 1089, -1093, 1092, -1094, 1092, -1095, 1092, -1096, 1092, -1097, 1092, -1098, 1092, -1099, 1092, -1101, 1100, -1103, 1102, -1104, 1102, -1106, 1105, -1107, 1105, -1109, 1108, -1111, 1110, -1113, 1112, -1114, 1112, -1116, 1115, -1117, 1115, -1118, 1115, -1119, 1115, -1120, 1115, -1121, 1115, -1123, 1122, -1124, 1122, -1125, 1122, -1126, 1122, -1128, 1127, -1130, 1129, -1132, 1131, -1134, 1133, -1135, 1133, -1136, 1133, -1137, 1133, -1138, 1133, -1139, 1133, -1140, 1133, -1141, 1133, -1142, 1133, -1143, 1133, -1144, 1133, -1146, 1145, -1148, 1147, -1150, 1149, -1152, 1151, -1153, 1151, -1155, 1154, -1157, 1156, -1159, 1158, -1161, 1160, -1162, 1160, -1164, 1163, -1166, 1165, -1167, 1165, -1168, 1165, -1170, 1169, -1172, 1171, -1174, 1173, -1175, 1173, -1177, 1176, -1179, 1178, -1181, 1180, -1183, 1182, -1185, 1184, -1187, 1186, -1189, 1188, -1191, 1190, -1192, 1190, -1194, 1193, -1196, 1195, -1198, 1197, -1199, 1197, -1200, 1197, -1202, 1201, -1204, 1203, -1206, 1205, -1208, 1207, -1210, 1209, -1212, 1211, -1213, 1211, -1215, 1214, -1216, 1214, -1217, 1214, -1218, 1214, -1220, 1219, -1222, 1221, -1223, 1221, -1225, 1224, -1227, 1226, -1229, 1228, -1230, 1228, -1231, 1228, -1233, 1232, -1235, 1234, -1236, 1234, -1238, 1237, -1240, 1239, -1241, 1239, -1242, 1239, -1243, 1239, -1244, 1239, -1245, 1239, -1246, 1239, -1248, 1247, -1250, 1249, -1252, 1251, -1254, 1253, -1256, 1255, -1258, 1257]} \ No newline at end of file diff --git a/data/leetcode/2015-09-27T13-00-00Z/positions.json b/data/leetcode/2015-09-27T13-00-00Z/positions.json deleted file mode 100644 index 0853550..0000000 --- a/data/leetcode/2015-09-27T13-00-00Z/positions.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [-466, 398, 328, -411, 356, 276, 488, -189, 232, 477, -192, 299, -252, 144, -141, -275, 108, -106, -290, 87, -150, -374, 168, 131, -358, 155, 103, -271, -538, 457, -304, -542, 507, -345, -447, 475, -272, -503, 493, -268, -511, 496, 39, 507, 132, -1, 493, 134, -3, 489, 92, 36, -285, -270, 71, -233, -217, -72, 243, 43, -32, 240, 116, 5, 264, 38, -10, 263, 94, -16, 310, 63, 117, 41, 451, 181, -4, 364, -383, -188, 510, -382, -192, 520, -431, -435, -329, -432, -387, -340, -407, -395, -249, -370, -386, -246, -325, -413, -251, -361, -415, -280, -326, -57, -39, -319, -64, 33, -336, -65, -3, -349, -84, -22, -256, -39, -23, -280, -20, -19, -269, -85, 38, -269, -75, -21, -277, -98, 5, -300, -77, 9, -348, -95, -30, -346, -110, -28, -119, 146, -246, -110, 111, -247, -187, 472, 99, -113, 455, 124, -134, 449, 174, -377, -512, 235, -354, -499, 195, -333, -446, 187, 275, -425, -215, 255, -397, -244, 349, -400, -282, 362, -395, -305, 289, 297, -22, 223, 250, -66, 457, -79, -239, 423, -123, -243, 154, 31, -354, 175, -50, -320, 174, 32, -313, 111, 270, -316, 131, 190, -307, 234, -152, 538, 260, -107, 448, -35, 368, -442, -56, 417, -427, -69, 414, -464, -467, -379, -266, -463, -330, -315, 393, 103, 115, 407, 134, 94, 220, -477, 123, 172, -503, 202, 148, -521, 178, 243, -449, 186, 152, -497, 114, 173, -501, 134, -82, 464, -288, -18, 409, -262, 1, -31, -256, -33, -75, -202, -1, -21, -213, 34, -65, -247, -11, -73, -203, 12, -71, -178, 39, -85, -226, 15, -61, -245, 31, -26, -202, 43, -39, -196, 38, -27, -185, 32, -24, -232, -34, -26, -262, -20, -48, -183, -12, 7, -239, 36, 6, -180, 29, 8, -207, -6, 5, -252, 17, -85, -219, 8, -24, -215, -12, 11, -195, -31, -34, -204, -36, -34, -172, 413, 287, 35, 365, 344, 49, 265, -319, 495, 338, -358, 446, 70, -144, 280, 56, -140, 238, 65, -115, 202, 122, -192, 288, -132, 361, -386, -103, 347, -392, -119, 386, -401, -143, -410, 283, -85, -423, 301, -412, 213, -389, -387, 267, -381, -430, 267, -430, -403, 256, -411, -270, -339, -83, -296, -305, -98, -287, -278, -433, -357, -279, -439, -202, -96, -5, -165, -80, -5, -160, -12, -5, 210, 112, -477, 177, 174, -484, -275, -421, -111, -368, -457, -138, -278, -461, -117, -364, -470, -60, -303, -454, -91, -313, -472, -137, -371, -484, -80, -329, -451, -91, -338, -411, -57, -339, -433, -99, -293, -489, -92, -341, -480, -66, -20, 331, 304, -84, 276, 272, -107, 339, 346, -39, 308, 285, -175, -362, 96, -128, -394, 51, 350, -191, 259, 408, -140, 247, 328, -453, 479, 245, -466, 417, -75, 14, -128, -119, 31, -156, -90, -367, 175, -13, -363, 133, -56, -336, 130, -323, 89, 430, -342, 29, 453, 146, -49, -414, 213, -69, -503, -370, -33, -486, -378, 27, -487, 267, 378, -243, 248, 332, -330, 240, 393, -312, -246, -3, -458, -217, -62, -405, -40, 461, 381, -37, 430, 349, -315, -169, 370, -288, -153, 452, -275, -156, 383, 465, 400, 456, 450, 405, 416, -331, -137, 290, -290, -58, 300, -445, -490, -340, -422, -480, -313, 6, -101, 347, 6, -92, 434, 535, 475, -190, 492, 440, -240, 526, 484, -178, 489, 453, -246, -223, -136, 187, -227, -192, 205, -201, -110, 222, -165, -149, 142, 167, -391, -445, 161, -378, -538, 200, -379, -539, 190, -361, -507, 160, -370, -534, 225, -396, -533, 306, -273, 220, 244, -204, 307, -360, 13, -88, -390, 29, -74, -345, 18, -46, 339, 110, 54, 375, 105, -3, -217, 13, -381, -162, -28, -412, 324, -214, 82, 360, -216, 97, 376, -506, 25, 342, -456, 6, 361, -458, -15, 349, 267, 469, 410, 285, 461, -264, 170, -405, -260, 147, -395, -304, -169, 2, -287, -126, -32, -300, -107, -51, -353, -176, -19, 175, -405, -356, 132, -443, -355, 83, 139, 468, 45, 122, 442, 70, 178, 452, 213, 303, 31, 213, 319, 31, -426, -514, 144, -453, -421, 161, 98, 322, -338, 81, 354, -350, 50, 87, -373, 46, 37, -400, -333, -479, 269, -353, -439, 299, -331, -428, 257, -370, -425, 326, 325, 23, -433, 307, 0, -440, -18, -394, 216, 72, -424, 155, -22, -421, 212, -467, -137, 366, -481, -184, 365, 30, 435, 284, 43, 415, 265, -1, 438, 328, -373, -243, 325, -384, -165, 331, 139, -256, 439, 74, -169, 354, 107, -259, 381, 105, -207, 412, 102, -180, 346, 517, -327, 368, 475, -365, 405, 464, -346, 456, 506, -322, 368, 514, -328, 410, 511, -331, 414, -418, -231, 46, -399, -198, 42, -368, -265, 28, -351, -296, 9, 451, -180, 197, 442, -198, 182, 498, -184, 198, 437, -248, 131, 458, -201, 166, -332, -455, -149, -271, -428, -128, -347, -396, -179, -430, 284, 410, -440, 299, 402, -450, 306, 461, -371, -142, 117, -370, -152, 185, -434, 454, -340, -436, 444, -305, 57, 395, 146, 95, 417, 82, 107, 375, 126, -118, -319, -270, -87, -317, -243, -325, 60, 212, -323, 17, 152, -269, 35, 191, 155, -411, -346, 250, -422, -356, 165, -414, -431, 228, -487, -371, 251, -501, -394, 183, -451, -399, 159, -464, -402, 254, -454, -385, -35, 442, -66, -67, 413, -71, -87, 435, -153, 262, -104, -87, 281, -62, -87, -74, -157, 71, -79, -86, 72, -509, -257, 423, -519, -207, 402, -495, -334, 347, -430, -319, 389, 98, -248, -287, 99, -159, -219, 359, -472, 498, 399, -482, 523, -438, -27, -429, -445, 20, -381, 399, -37, 125, 324, -24, 159, 354, -10, 198, -479, -11, -366, -454, -9, -341, -142, -364, 66, -133, -345, 95, -330, 0, -210, -290, 46, -282, -372, -12, -279, -121, 154, -359, -103, 91, -364, -86, 68, -377, -111, -199, 169, -177, -131, 184, -175, -339, -445, -107, -351, -470, 384, 97, -3, 379, 111, -63, 14, 37, 511, -33, 37, 413, -302, -447, -58, -248, -493, -98, 326, 162, -404, 357, 210, -410, 394, 143, -355, 326, 209, -453, -305, -193, 405, -327, -206, 487, 189, 450, -200, 180, 509, -236, 264, 498, -251, 224, 447, -271, -240, -337, -351, -291, -394, -363, -248, -367, -392, -134, 172, 220, -150, 169, 181, -425, 442, 319, -417, 392, 281, -375, 428, 310, -448, 449, 290, -438, 372, 297, -430, 372, 325, -384, 462, 352, 98, -272, 481, 109, -254, 483, -263, 268, 43, -212, 268, 48, 339, 316, 195, 367, 316, 234, 274, 248, -134, 194, 256, -121, 481, 23, 120, 402, 20, 153, -481, 199, 490, -494, 193, 481, -492, 139, 475, -469, 163, 499, -495, 324, -454, -495, 380, -525, -406, 349, -447, -487, 311, -438, -405, 349, -499, -403, 327, -488, -215, 169, 157, -170, 164, 131, -233, -221, 279, -260, -194, 257, 276, 118, 179, 285, 214, 187, -507, 320, 165, -475, 326, 168, -509, 262, -216, -493, 273, -203, 62, 500, -256, 78, 427, -220, 46, 429, -204, 17, 487, -238, -196, -430, 156, -104, -423, 96, -349, 457, 392, -373, 461, 400, -356, 421, 392, -344, 509, 412, -412, -72, 157, -430, -12, 158, -403, -34, 161, -58, -37, -228, -28, -67, -285, 327, -228, 140, 420, -233, 146, 327, -184, 208, 270, -136, 408, 305, -137, 457, 281, 107, -434, 289, 99, -435, 258, 98, -415, 296, 123, -452, 341, 126, -449, 305, 93, -404, 214, 40, 195, 233, -3, 186, -438, -374, 222, -380, -365, 129, -437, -391, 168, -378, -388, 184, 195, -413, 306, 184, -386, 366, 376, -182, -129, 422, -182, -45, 417, -249, -107, -495, -101, 375, -500, -44, 335, -474, -73, 361, 426, -324, -177, 416, -287, -164, 386, -525, -176, 431, -538, -174, -378, -343, -65, -370, -318, -65, -267, -418, 242, -278, -368, 289, 130, -125, -471, 149, -163, -441, 98, -170, -468, 96, -115, -437, 66, -139, -482, 344, 488, 209, 330, 470, 212, 176, -525, -344, 158, -442, -407, 208, -485, -394, 219, -435, -360, 215, 251, 61, 298, 230, 27, 51, 6, -210, 16, 30, -188, -264, 160, 202, -189, 138, 251, 247, -183, 306, 185, -232, 258, -20, 53, -405, -44, 44, -425, 239, -378, 35, 248, -338, 39, -384, -202, 411, -369, -186, 443, 201, 241, 48, 164, 279, 48, 353, 268, -510, 344, 316, -438, -10, 408, -302, -39, 426, -294, -44, 362, -302, 2, 437, -313, -242, 357, -39, -302, 401, -35, -236, 360, -100, -161, 362, -122, 90, -410, 261, 124, -420, 252, 66, -247, 384, 70, -246, 384, -202, 199, -512, -178, 190, -480, -186, 220, -468, -213, 202, -495, -189, 150, -496, -227, 146, -454, -251, 189, -528, 507, 440, -194, 461, 371, -168, 235, 1, 525, 192, 75, 443, 512, 59, 278, 487, 53, 288, -16, -31, -306, -74, -46, -246, -7, 18, -306, -58, -22, -244, -60, -26, -296, -184, 407, 280, -173, 396, 293, -330, 219, 297, -292, 138, 313, 204, 155, -478, 186, 116, -455, 211, -98, -366, 127, -97, -410, 163, -103, -403, 164, -130, -382, 199, -124, -330, 146, -55, -350, 180, -97, -403, 138, -71, -402, -195, -103, -343, -134, -148, -365, 347, 304, 126, 389, 262, 219, 69, -160, 497, -8, -120, 451, 398, 503, -117, 424, 535, -40, -27, -284, 279, -101, -254, 236, -71, -290, 252, -7, -249, 248, 335, 64, 340, 263, 62, 323, -179, -425, 404, -113, -408, 433, -311, -460, 67, -370, -477, 85, -375, -429, 63, -378, -406, 64, -342, -493, 72, -342, -454, 110, -339, -479, 115, -306, -410, 76, 370, -23, 32, 378, -83, -9, 241, -222, -472, 280, -153, -474, -126, 484, 147, -135, 488, 121, -104, 508, 110, 149, -472, 312, 136, -528, 318, -410, -58, 336, -440, -48, 323, -208, 293, 438, -145, 273, 461, -116, 297, 456, -335, -19, 110, -312, 60, 196, -364, -172, -34, -329, -117, 30, -349, -121, 49, -324, -131, 49, -83, -49, -85, -12, -93, -97, -269, -171, 103, -248, -192, 79, -224, 177, -33, -166, 205, 41, -198, 242, 22, -11, -109, -1, -1, -168, 18, 106, 75, -105, 105, 82, -53, 68, 111, -97, 130, 83, -138, -360, 269, -382, -299, 198, -452, -23, 151, 164, -101, 96, 212, -39, 165, 210, -52, 146, 200, -81, 150, 147, -90, 162, 246, 76, -304, -478, 66, -320, -419, -174, 328, 348, -168, 370, 379, 250, 395, 530, 240, 350, 442, 218, 372, 490, -441, 241, 335, -389, 208, 402, 349, -507, 328, 328, -522, 239, 354, 466, -255, 326, 461, -281, 284, 447, -245, -441, -284, -377, -434, -277, -375, 195, -162, -400, 219, -127, -449, 10, 462, 488, 14, 494, 458, -454, -12, -378, -420, -6, -345, -184, 173, 291, -218, 197, 315, -168, 436, 356, -134, 484, 335, 261, -94, -121, 284, -93, -131, 287, -47, -131, 332, -105, -130, 298, -109, -104, 36, -440, 370, 2, -464, 438, 9, -477, 437, 427, 104, -214, 352, 84, -259, 343, 81, -283, -70, -49, 218, -116, -21, 199, -97, -28, 190, -143, -143, 25, -73, -133, -12, -327, 424, 223, -315, 469, 279, 315, 406, -89, 263, 424, -104, 322, 420, -20, 344, 426, -39, 341, 375, -79, 247, -278, -274, 190, -260, -323, -30, 312, 352, 40, 402, 337, -381, 480, -109, -443, 501, -101, 281, 137, 68, 337, 184, 32, 321, 181, 42, 305, 176, 97, -95, -424, 159, -70, -384, 138, -74, -474, 152, -349, 293, 186, -290, 297, 146, 152, -162, -334, 185, -161, -324, 148, -170, -392, -148, -203, 267, -122, -190, 242, -198, -129, 239, -262, -488, 169, -295, -474, 148, 7, -56, 79, 60, -11, 59, 15, -58, 121, -9, -9, 98, -233, -320, -196, -315, -258, -210, -130, 331, 79, -93, 344, 123, -134, 304, 68, 81, 206, 4, 103, 132, -95, 72, 124, -45, 235, 167, -166, 178, 144, -184, 281, 96, 203, 347, 129, 198, -237, -226, -216, -277, -226, -180, 137, 502, -23, 112, 486, -13, -480, 264, 496, -476, 255, 483, -177, 431, -321, -159, 435, -307, -37, -533, -215, -81, -542, -177, 374, 55, 133, 376, 39, 154, 369, 506, -212, 364, 511, -178, 374, -120, 353, 387, -114, 385, 397, -53, 384, 148, -293, 9, 113, -293, 49, -244, -5, 333, -189, 48, 327, -201, 80, 319, 207, 407, -301, 237, 367, -322, 436, -44, -170, 487, 11, -144, -27, 89, 108, 25, 135, 115, 502, -310, -406, 488, -228, -404, 34, 364, -128, 12, 405, -89, -19, 355, -129, 33, 375, -105, -105, 326, -7, -64, 399, 0, -116, 333, -1, -39, 329, -17, -128, 325, -27, -123, 343, -28, -413, 201, -188, -409, 269, -144, -366, 212, -135, 243, -247, -65, 274, -284, -84, -419, 196, 166, -487, 219, 178, 182, -397, 104, 171, -378, 118, 130, -153, 281, 133, -147, 234, -262, -502, -277, -276, -497, -278, -319, -549, -263, -336, 139, 14, -400, 180, -20, -407, 149, 34, 315, -328, 109, 366, -377, 128, 286, -353, 137, 253, -146, 501, 163, -102, 475, 255, -137, 482, -292, 397, -460, -309, 338, -483, -160, -221, 359, -182, -159, 401, -155, -222, 359, -177, -201, 396, 341, -48, -351, 389, -104, -443, -172, -325, 111, -154, -394, 116, -163, -399, 89, 92, 214, 48, 30, 289, 41, 109, 230, 56, -127, -305, 376, -138, -373, 444, 286, -448, -175, 289, -410, -107, 246, -367, -415, 303, -390, -443, 464, 202, -275, 529, 168, -292, -390, 115, -448, -358, 121, -370, -385, 118, 401, -342, 77, 388, -183, 55, 361, -201, -8, 325, -167, -480, 436, -99, -469, 458, 374, 345, 37, 396, 279, 29, 380, 296, -9, -180, -254, 139, -251, -341, 138, -228, -252, 128, 47, 306, -249, 85, 246, -189, -408, 336, 200, -376, 353, 178, -405, -431, 131, -346, -419, 132, 180, 249, -261, 102, 257, -246, 280, -460, -459, 298, -429, -488, 243, -468, -467, 278, -486, -415, 238, -467, -436, 255, -401, -433, 304, -421, -495, -117, 209, 435, -170, 214, 490, -10, 430, 240, 1, 399, 246, -63, 406, 219, -14, 428, 231, -17, 488, 198, -364, 54, -257, -281, 92, -230, -506, -61, 165, -466, -23, 241, -205, 21, -361, -167, 35, -407, -209, 61, -411, -187, 11, -381, -287, -189, -146, -237, -177, -105, -262, 289, 394, -334, 293, 414, 184, -434, 372, 211, -449, 441, 516, 143, -162, 481, 93, -164, 531, 132, -176, 501, 85, -145, 444, 165, -175, 178, -549, -462, 156, -474, -429, 453, 77, 445, 503, 112, 403, -180, 177, -449, -190, 123, -415, -212, 143, -413, -172, 411, 164, -206, 404, 154, -334, 435, 12, -311, 378, 18, -59, -346, -222, -101, -352, -231, -79, -376, -174, -93, -402, -272, -359, -471, 251, -395, -404, 205, -386, -426, 244, -365, -408, 250, -367, -461, 189, 25, -434, 102, 23, -510, 122, -3, -348, 290, -92, -336, 251, 85, 287, -246, 74, 283, -203, -189, 240, -356, -206, 214, -371, -291, -531, -292, -233, -532, -302, -22, 179, -244, -9, 135, -228, -49, 122, -229, 29, 132, -223, -68, 174, -195, 47, -52, -435, 39, -96, -434, -383, 453, 421, -398, 431, 448, -1, -15, -39, 24, -58, -25, 77, -14, 33, 63, -296, -476, 78, -232, -420, -118, 15, 153, -104, 3, 196, -14, 314, 223, -38, 293, 183, 32, 377, 180, 148, -84, 63, 152, -84, 65, -296, -196, -177, -227, -214, -206, -262, -141, -243, -276, -224, -173, -247, -137, -227, 82, 307, 233, 110, 299, 217, 78, 395, 210, 154, 327, 170, -307, 441, 168, -284, 501, 238, -237, 431, -379, -175, 402, -404, -198, 402, -350, -184, 433, -377, -416, -412, -219, -381, -438, -235, -380, -407, -189, -370, -360, -281, -427, 206, 493, -434, 212, 527, -171, 1, -469, -150, 55, -469, -153, -27, -469, -93, -38, -449, -155, 24, -434, -185, -4, -419, -167, 2, -399, -114, 37, -411, -174, 5, -456, -320, 82, -489, -303, 68, -444, -173, -78, -220, -209, -72, -238, -36, -68, 85, 24, 25, 21, -288, -528, 72, -259, -457, 126, -219, -513, 64, -358, 177, 287, -365, 243, 310, -310, 204, 351, 196, 308, -488, 238, 328, -493, -159, -87, -86, -124, -68, -81, 92, 297, 431, 124, 342, 449, 67, 366, 372, 82, 342, 437, 502, -409, -40, 486, -376, -86, 263, -340, 83, 241, -277, 68, 141, 400, 382, 106, 459, 400, 385, -375, -191, 396, -372, -156, 325, -395, -155, 127, -422, 74, 114, -383, 89, 197, -440, 101, 195, -409, 81, 368, 118, -426, 338, 160, -446, -106, 187, 74, -84, 249, 110, -113, -70, 295, -83, -57, 282, -71, -94, 320, -19, 439, -493, -35, 419, -539, -64, 453, -485, 11, 445, -501, -6, 486, -488, 78, -317, 99, 46, -322, 36, 0, -340, 41, 148, 414, 398, 237, 388, 397, 88, -55, 108, 152, -46, 8, 231, -40, 481, 309, -22, 477, -358, 284, 188, -390, 277, 207, -313, 293, 212, -343, 205, 179, -363, 236, 178, 471, 180, 529, 495, 178, 476, -29, 456, 321, -16, 400, 321, 365, 468, 35, 323, 514, 63, 392, -376, 157, 373, -340, 148, 319, 20, 190, 386, 50, 189, 387, 26, -121, 390, 42, -128, 282, -143, -291, 290, -222, -221, -302, 260, -418, -264, 220, -436, -406, 143, -201, -370, 113, -140, -384, -266, 326, -378, -249, 352, 214, -97, -355, 139, -192, -279, 167, -142, -364, 335, -64, -230, 369, -80, -138, 316, -13, -204, -275, -534, 87, -288, -507, 86, -270, 23, 128, -282, 1, 130, 388, -147, 34, 386, -169, 20, -150, 435, 55, -132, 414, 84, -34, -438, -150, -94, -430, -118, 122, -420, 149, 106, -453, 189, -144, 283, 95, -108, 263, 133, -171, 252, 31, -210, 268, 60, 26, 309, -287, -37, 361, -253, -368, 171, 224, -396, 94, 269, -35, -56, 428, -28, -63, 422, -269, 160, 445, -250, 238, 446, -250, 144, 421, -219, 243, 418, 223, 250, -402, 252, 267, -323, -155, 209, -231, -187, 133, -200, 462, 294, -242, 484, 232, -179, 96, -440, 413, 46, -428, 370, 63, -475, 407, 94, -405, 425, 54, -436, 388, 25, -461, 370, 80, -447, 377, 263, 145, 302, 308, 132, 319, -83, 301, 450, -70, 272, 423, -260, 213, -39, -250, 246, -42, 3, 471, 293, -19, 479, 329, 178, 24, 280, 227, -16, 189, 254, -34, 274, 256, 28, 284, 82, 12, -466, 100, 40, -472, 410, -82, -276, 397, -11, -283, 402, -78, -335, 385, -7, -345, 359, -19, -346, 456, -42, -281, 430, 5, -303, -285, -145, -367, -306, -154, -405, -329, -111, -342, -311, -139, -343, 373, -101, -101, 395, -80, -60, -350, -283, -280, -362, -360, -302, -348, -310, -348, 376, 366, -33, 334, 375, -17, -399, -471, 212, -433, -452, 195, 135, -475, 80, 135, -429, 74, 213, -175, 52, 204, -135, -11, 281, 485, -192, 233, 518, -194, 14, -239, 237, -22, -271, 200, -140, 160, 313, -126, 134, 304, -135, 227, 292, -126, 228, 339, -126, 166, 300, -157, 142, 337, -169, 151, 282, -162, 194, 294, 413, -286, -338, 403, -302, -314, 18, 339, 242, -77, 364, 237, -40, 275, 162, -45, 355, 207, -77, 352, 236, -33, 283, 158, 16, 421, -438, 60, 457, -435, 273, -347, 354, 230, -277, 339, 225, -71, 468, 228, -41, 445, -111, -165, -93, -167, -179, -2, 262, 287, 407, 248, 318, 399, -25, -109, 405, -83, -103, 414, -52, -109, 407, 185, -97, -12, 198, -109, 51, -66, 393, -173, -50, 485, -115, 90, -246, -150, 109, -219, -164, -267, 88, 211, -252, 75, 222, -298, 56, 176, 96, -161, -168, 132, -160, -203, -131, 276, 6, -217, 284, 5, -171, 246, -52, 401, 238, 90, 339, 198, 126, 382, 193, 125, 365, 177, 111, 435, 151, 65, 355, 218, 46, 354, 169, 123, 375, 145, 119, -60, 134, 3, -115, 191, 61, -285, 343, 143, -233, 400, 108, -190, 320, 136, -450, 103, 347, -447, 150, 336, -434, 174, 347, 36, 447, 378, 71, 435, 402, 436, -219, -395, 410, -214, -438, -150, -327, 211, -150, -342, 150, -133, -271, 180, -179, 11, 173, -241, 77, 198, -181, 42, 175, -174, 80, 119, -196, 40, 132, -227, -7, 206, -218, 57, 179, -459, 349, 256, -448, 372, 187, -468, 371, 218, -525, 339, 198, -534, 365, 209, -221, -291, -182, -268, -254, -197, -160, 167, -132, -182, 195, -116, 65, 365, -294, 71, 394, -300, 533, -135, 391, 510, -201, 458, 486, -139, 462, 468, -158, 448, 464, -165, 387, 503, -116, 459, 496, -109, 438, 473, -114, 397, 448, -174, 448, 496, -145, 397, 501, -119, 424, 485, -158, 468, -241, 162, 286, -210, 130, 313, 138, -201, -244, 85, -206, -209, -354, -207, 219, -275, -253, 217, -403, 357, 364, -425, 409, 341, -432, 349, 364, -48, -190, -412, -44, -198, -364, -338, -107, 269, -299, -122, 246, -264, 376, -229, -315, 404, -141, -124, -129, -167, -118, -132, -192, -86, -129, -150, 312, 15, 323, 394, 19, 330, -415, 5, -145, -412, 12, -98, -356, 18, -78, -432, 30, -140, -88, 234, -365, -60, 209, -383, 545, -61, -117, 482, -20, -167, 142, 184, -185, 130, 230, -213, 168, 198, -240, -263, -18, -323, -202, -13, -367, 376, -496, -28, 378, -491, 63, 14, 365, 407, 49, 387, 411, 318, 364, 406, 355, 383, 421, -467, -300, -446, -446, -363, -409, 476, 310, -459, 491, 292, -423, 353, 391, 70, 397, 431, 80, -406, 476, 449, -384, 493, 427, -379, 495, 475, 83, 416, -335, 27, 456, -281, -6, 511, -152, 23, 493, -140, 278, -40, 74, 350, -9, 86, 363, -42, 53, 327, -26, 92, -357, -257, -12, -323, -330, 16, -236, 110, -464, -232, 123, -384, 169, -141, -42, 146, -105, -41, -9, 417, -369, 51, 429, -394, 90, 475, -366, 92, 393, -367, -39, -92, -351, -47, -165, -312, -102, -141, -322, 158, 305, 474, 160, 252, 484, 215, 272, 484, 127, 268, 494, 153, 264, 505, 230, -432, -328, 239, -376, -332, -286, 362, -216, -218, 332, -241, -201, 349, -252, -92, -374, -337, -133, -394, -320, 400, -383, -321, 436, -326, -399, -159, -74, -328, -96, -167, -352, -185, -97, -346, -117, -94, -379, -124, -104, 9, -40, -68, 33, 345, 80, 389, 396, 89, 376, 360, 39, 410, -422, -16, 441, -386, -11, 419, 53, -481, -367, 39, -470, -330, -13, -487, -334, -20, -413, -341, 62, -445, -304, 60, -449, -341, 34, -486, -397, 39, -421, -395, 356, 244, 153, 391, 288, 72, -241, 475, -397, -276, 478, -425, -403, -392, 372, -365, -386, 304, 80, -409, 38, 82, -345, 68, -295, -52, 16, -305, -30, -8, 134, 321, -438, 113, 303, -468]} \ No newline at end of file diff --git a/data/leetcode/manifest.json b/data/leetcode/manifest.json deleted file mode 100644 index 65aabbb..0000000 --- a/data/leetcode/manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "all": [ - "2015-09-27T13-00-00Z" - ], - "last": "2015-09-27T13-00-00Z" -} diff --git a/dev-server.js b/dev-server.js deleted file mode 100644 index c596965..0000000 --- a/dev-server.js +++ /dev/null @@ -1,42 +0,0 @@ -var devConfig = require('./webpack.local.config'); - -ensureBuildExists(); - -// Start webpack: -var webpack = require('webpack'); -var WebpackDevServer = require('webpack-dev-server'); -var compiler = webpack(devConfig); - -new WebpackDevServer(compiler, { - publicPath: devConfig.output.publicPath, - contentBase: "./build", - disableHostCheck: true, - hot: true, - quiet: false, - filename: 'app.js', - stats: { colors: true }, - noInfo: false, - historyApiFallback: true -}).listen(devConfig.port, '0.0.0.0', function (err) { - if (err) { - console.log(err); - } else { - console.log('Dev Server listening at http://127.0.0.1:' + devConfig.port); - } -}); - -function ensureBuildExists() { - var fs = require('fs'); - var path = require('path'); - var buildDir = path.join(__dirname, 'build'); - - if (!fs.existsSync(buildDir)) { - fs.mkdirSync(buildDir); - } - - var source = path.join(__dirname, 'src', 'index.html'); - var dest = path.join(__dirname, 'build', 'index.html'); - - console.log('Copying ' + source + ' to ' + dest); - fs.createReadStream(source).pipe(fs.createWriteStream(dest)); -} diff --git a/package.json b/package.json deleted file mode 100644 index 0442f34..0000000 --- a/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "sgraph", - "version": "1.0.0", - "description": "Visualization of solutions", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "mkdir -p ./build && cp ./src/index.html ./build/ && webpack -p --config webpack.production.config.js", - "start": "PORT=8081 node dev-server.js", - "deploy": "npm run build && cp -r build/* . && git checkout gh-pages && git add . && git commit -m 'Deploy to GitHub Pages' && git push origin HEAD:gh-pages" - }, - "author": "David Kobalia", - "license": "MIT", - "devDependencies": { - "express": "^4.12.3", - "ngraph.generators": "0.0.15", - "react-hot-loader": "^1.2.7", - "webpack-dev-server": "^1.9.0" - }, - "dependencies": { - "babel-core": "^5.2.17", - "babel-loader": "^5.0.0", - "bluebird": "^2.9.25", - "bootstrap": "^3.3.4", - "css-loader": "^0.12.0", - "extract-text-webpack-plugin": "^0.8.0", - "file-loader": "^0.8.1", - "history": "^1.17.0", - "keymirror": "^0.1.1", - "less": "^2.5.0", - "less-loader": "^2.2.0", - "maco": "^2.0.3", - "ngraph.events": "0.0.3", - "node-libs-browser": "^0.5.0", - "qs": "^4.0.0", - "rafor": "^1.0.2", - "react": "^0.14.5", - "react-bootstrap": "^0.28.1", - "react-dom": "^0.14.5", - "react-list": "^0.7.10", - "react-router": "^1.0.3", - "style-loader": "^0.12.2", - "three.orientation": "^1.1.0", - "unrender": "git+https://github.com/anvaka/unrender.git", - "url-loader": "^0.5.5", - "webgl-enabled": "^1.0.3", - "webpack": "^1.15.0" - } -} diff --git a/src/config.js b/src/config.js deleted file mode 100644 index 3072e28..0000000 --- a/src/config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - dataUrl: '//raw.githubusercontent.com/blocage/leetcode-algorithms/main/data/' -}; diff --git a/src/destination.jsx b/src/destination.jsx deleted file mode 100644 index 2facc22..0000000 --- a/src/destination.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react"; - -const prefix = 'https://raw.githubusercontent.com/blocage/leetcode-algorithms/main/.github/images/'; - -export default class Destination extends React.Component { - setHoverOn() { - this.setState({ hover: true }); - } - - setHoverOff() { - this.setState({ hover: false }); - } - - render() { - let x = this; - let props = x.props; - let isHover = x.state ? x.state.hover : false; - let imageSrc = prefix + props.media; - if (isHover) imageSrc = imageSrc.replace(/_first\.png/, '_150.gif'); - if (props.static && props.dynamic) { - imageSrc = isHover ? props.dynamic : props.static; - } - - return ( - -
- {props.name}/ -
-
-

{props.name}

- {props.description} -
-
- ); - } - -} diff --git a/src/galaxy/about.jsx b/src/galaxy/about.jsx deleted file mode 100644 index ad0b273..0000000 --- a/src/galaxy/about.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -export default require('maco').template(about, React); - -function about() { - return ( -
- About... -
- ); -} diff --git a/src/galaxy/galaxyPage.jsx b/src/galaxy/galaxyPage.jsx deleted file mode 100644 index cbf8f5e..0000000 --- a/src/galaxy/galaxyPage.jsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import LoadingIndicator from './loadingIndicator.jsx'; -import Scene from './scene.jsx'; -import appEvents from './service/appEvents.js'; - -module.exports = require('maco')(galaxyPage, React); - -function galaxyPage(x) { - var currentPath; - - x.render = function() { - // This doesn't seem to belong here. The whole routing system is a mess - // TODO: Come up with better routing - loadGraphIfRouteChanged(); - - return ( -
- - -
- ); - }; - - function loadGraphIfRouteChanged() { - var routeChanged = x.props.params.name !== currentPath; - if (routeChanged) { - currentPath = x.props.params.name; - appEvents.downloadGraphRequested.fire(currentPath); - } - appEvents.queryChanged.fire(); - } -} diff --git a/src/galaxy/help.jsx b/src/galaxy/help.jsx deleted file mode 100644 index 87e299e..0000000 --- a/src/galaxy/help.jsx +++ /dev/null @@ -1,175 +0,0 @@ -/** - * This component shows basic navigation help. The idea is to show it only - * first time when user opens. All subsequent page opening should not trigger - * help screen. - * - * The only possible way to show help again is by triggerign "show help" - * action, which is currently bound to mouse wheel event - */ -import React from 'react'; -import appEvents from './service/appEvents.js'; -import Key from './utils/key.js'; - -export default require('maco')(help, React); - -var helpWasShown = false; - -function help(x) { - var graphDownloaded = false; - - x.render = function() { - if (window.orientation !== undefined) { - // no need to show help on orientation enabled devices - return null; - } - - if (helpWasShown) { - // no need to annoy people - return null; - } - - if (!graphDownloaded) { - // Show help only after all is downloaded - return null; - } - - return ( -
-

Movement manual

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mouse wheelshow this help
any keyhide this help
WMove forwardUpRotate up
SMove backwardDownRotate down
AMove leftLeftRotate left
DMove rightRightRotate right
QRoll rightRFly up
ERoll leftFFly down
LToggle linksspacebarToggle Steering
shiftMove faster
-
- ); - }; - - x.componentDidMount = function () { - if (window.orientation !== undefined) return; - appEvents.graphDownloaded.on(showHelpIfNeeded); - appEvents.downloadGraphRequested.on(resetHelp); - appEvents.toggleHelp.on(toggleHelp); - - listenToKeys(); - listenToWheel(); - } - - x.componentWillUnmount = function () { - if (window.orientation !== undefined) return; - appEvents.graphDownloaded.off(showHelpIfNeeded); - appEvents.downloadGraphRequested.off(resetHelp); - appEvents.toggleHelp.off(toggleHelp); - - releaseKeyListener(); - releaseWheel(); - } - - function showHelpIfNeeded() { - if (helpWasShown) return; - graphDownloaded = true; - - x.forceUpdate(); - } - - function toggleHelp() { - helpWasShown = !helpWasShown; - x.forceUpdate(); - } - - function resetHelp() { - graphDownloaded = false; - x.forceUpdate(); - } - - function handlekey(e) { - if (Key.isModifier(e)) { - // ignore modifiers - return; - } - var needsUpdate = !helpWasShown; - helpWasShown = true; - - if (needsUpdate) { - x.forceUpdate(); - } - } - - function handlewheel(e) { - // only show when used on scene - if (e.target && e.target.nodeName === 'CANVAS') { - helpWasShown = false; - x.forceUpdate(); - appEvents.focusScene.fire(); - } - } - - function listenToKeys() { - document.body.addEventListener('keydown', handlekey); - } - - function listenToWheel() { - document.body.addEventListener('wheel', handlewheel, true); - } - - function releaseKeyListener() { - document.body.removeEventListener('keydown', handlekey, true); - } - - function releaseWheel() { - document.body.removeEventListener('wheel', handlewheel, true); - } -} diff --git a/src/galaxy/hoverInfo.jsx b/src/galaxy/hoverInfo.jsx deleted file mode 100644 index 10a1a7f..0000000 --- a/src/galaxy/hoverInfo.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import scene from './store/scene.js'; -import React from 'react'; -import hoverModel from './store/hover.js'; - -module.exports = require('maco')(hoverInfo, React); - -function hoverInfo(x) { - var hoverTemplate = null; - - x.render = function render() { - return hoverTemplate; - }; - - x.componentDidMount = function() { - hoverModel.on('changed', updateView); - }; - - x.componentWillUnmount = function () { - hoverModel.off('changed', updateView); - }; - - function updateView(viewTemplate) { - hoverTemplate = viewTemplate; - x.forceUpdate(); - } -} diff --git a/src/galaxy/loadingIndicator.jsx b/src/galaxy/loadingIndicator.jsx deleted file mode 100644 index 51f0196..0000000 --- a/src/galaxy/loadingIndicator.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import scene from './store/scene.js'; - -module.exports = require('maco')(loadingIndicator, React); - -function loadingIndicator(x) { - var loadingMessage = ''; - - x.render = function() { - return scene.isLoading() ? -
{loadingMessage}
: - null; - }; - - x.componentDidMount = function() { - scene.on('loadProgress', updateLoadingIndicator); - }; - - x.componentWillUnmount = function () { - scene.off('loadProgress', updateLoadingIndicator); - }; - - function updateLoadingIndicator(progress) { - loadingMessage = `${progress.message} - ${progress.completed}`; - x.forceUpdate(); - } -} diff --git a/src/galaxy/native/appConfig.js b/src/galaxy/native/appConfig.js deleted file mode 100644 index c9fce7c..0000000 --- a/src/galaxy/native/appConfig.js +++ /dev/null @@ -1,212 +0,0 @@ -import appEvents from '../service/appEvents.js'; -import eventify from 'ngraph.events'; -import scene from '../store/scene.js'; -import qs from 'qs'; - - -var defaultConfig = { - pos: {x : 0, y: 0, z: 0 }, - lookAt: {x: 0, y: 0, z: 0, w: 1}, - showLinks: true, - maxVisibleDistance: 150, - scale: 1.75, - manifestVersion: 0 -}; - -export default appConfig(); - -function appConfig() { - var hashConfig = parseFromHash(window.location.hash); - var hashUpdate; // async hash update id - - var api = { - getCameraPosition: getCameraPosition, - getCameraLookAt: getCameraLookAt, - getShowLinks: getShowLinks, - getScaleFactor: getScaleFactor, - getMaxVisibleEdgeLength: getMaxVisibleEdgeLength, - setCameraConfig: setCameraConfig, - setShowLinks: setShowLinks, - getManifestVersion: getManifestVersion, - setManifestVersion: setManifestVersion - }; - - appEvents.toggleLinks.on(toggleLinks); - appEvents.queryChanged.on(queryChanged); - - eventify(api); - return api; - - - function getScaleFactor() { - return hashConfig.scale; - } - - function getManifestVersion() { - return hashConfig.manifestVersion; - } - - function getMaxVisibleEdgeLength() { - return hashConfig.maxVisibleDistance * hashConfig.maxVisibleDistance * hashConfig.scale; - } - - function getCameraPosition() { - return hashConfig.pos; - } - - function toggleLinks() { - setShowLinks(!hashConfig.showLinks); - } - - function getCameraLookAt() { - return hashConfig.lookAt; - } - - function getShowLinks() { - return hashConfig.showLinks; - } - - function queryChanged() { - var currentHashConfig = parseFromHash(window.location.hash); - var cameraChanged = !same(currentHashConfig.pos, hashConfig.pos) || - !same(currentHashConfig.lookAt, hashConfig.lookAt); - var showLinksChanged = hashConfig.showLinks !== currentHashConfig.showLinks; - - if (cameraChanged) { - setCameraConfig(currentHashConfig.pos, currentHashConfig.lookAt); - api.fire('camera'); - } - if (showLinksChanged) { - setShowLinks(currentHashConfig.showLinks); - } - setManifestVersion(currentHashConfig.manifestVersion); - } - - function setShowLinks(linksVisible) { - if (linksVisible === hashConfig.showLinks) return; - hashConfig.showLinks = linksVisible; - api.fire('showLinks'); - updateHash(); - } - - function setManifestVersion(version) { - if (version === hashConfig.manifestVersion) return; - hashConfig = parseFromHash(window.location.hash); - hashConfig.manifestVersion = version; - updateHash(); - - var name = scene.getGraphName(); - appEvents.downloadGraphRequested.fire(name); - } - - function setCameraConfig(pos, lookAt) { - if (same(pos, hashConfig.pos) && - same(lookAt, hashConfig.lookAt) && - lookAt.w === hashConfig.lookAt.w) return; - - hashConfig.pos.x = pos.x; - hashConfig.pos.y = pos.y; - hashConfig.pos.z = pos.z; - - hashConfig.lookAt.x = lookAt.x; - hashConfig.lookAt.y = lookAt.y; - hashConfig.lookAt.z = lookAt.z; - hashConfig.lookAt.w = lookAt.w; - - updateHash(); - } - - function updateHash() { - // TODO: This needs to be rewritten. It should not update all fields, - // only those that modified. - var name = scene.getGraphName(); - var pos = hashConfig.pos; - var lookAt = hashConfig.lookAt; - var hash = '#/galaxy/' + name + - '?cx=' + Math.round(pos.x) + - '&cy=' + Math.round(pos.y) + - '&cz=' + Math.round(pos.z) + - '&lx=' + lookAt.x.toFixed(4) + - '&ly=' + lookAt.y.toFixed(4) + - '&lz=' + lookAt.z.toFixed(4) + - '&lw=' + lookAt.w.toFixed(4) + - '&ml=' + hashConfig.maxVisibleDistance + - '&s=' + hashConfig.scale + - '&l=' + (hashConfig.showLinks ? '1' : '0') + - '&v=' + hashConfig.manifestVersion; - - setHash(hash); - } - - function setHash(hash) { - // I noticed Chrome address string becomes very slow if we update URL too - // often. Thus, I'm adding small throttling here. - if (hashUpdate) { - window.clearTimeout(hashUpdate); - } - - hashUpdate = setTimeout(function() { - if (window.history) { - window.history.replaceState(undefined, undefined, hash); - } else { - window.location.replace(hash); - } - hashUpdate = null; - }, 400); - } - - function same(v1, v2) { - if (!v1 || !v2) return false; - return v1.x === v2.x && - v1.y === v2.y && - v1.z === v2.z; - } - - function parseFromHash(hash) { - if (!hash) { - return defaultConfig; - } - - var query = qs.parse(hash.split('?')[1]); - - var pos = { - x: query.cx || 0, - y: query.cy || 0, - z: query.cz || 0 - }; - - var lookAt = { - x: query.lx || 0, - y: query.ly || 0, - z: query.lz || 0, - w: getNumber(query.lw || 1) - }; - - var showLinks = (query.l === '1'); - - return { - pos: normalize(pos), - lookAt: normalize(lookAt), - showLinks: showLinks, - maxVisibleDistance: getNumber(query.ml, defaultConfig.maxVisibleDistance), - scale: getNumber(query.s, defaultConfig.scale), - manifestVersion: query.v || defaultConfig.manifestVersion - }; - } -} - -function normalize(v) { - if (!v) return v; - v.x = getNumber(v.x); - v.y = getNumber(v.y); - v.z = getNumber(v.z); - return v; -} - -function getNumber(x, defaultValue) { - if (defaultValue === undefined) defaultValue = 0; - - x = parseFloat(x); - if (isNaN(x)) return defaultValue; - return x; -} diff --git a/src/galaxy/native/getNearestIndex.js b/src/galaxy/native/getNearestIndex.js deleted file mode 100644 index 2682137..0000000 --- a/src/galaxy/native/getNearestIndex.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Based on octree search results tries to find index of a point which is - * nearest to the ray in z-direction, and is closer than maxDistanceFromRay - */ - -export default getNearestIndex; - -function getNearestIndex(allPoints, intersectedIndexes, ray, maxDistanceFromRay) { - if (intersectedIndexes.length === 0) return; - - // This is not necessary the fastest solution, but in practice it is very fast - intersectedIndexes.sort(byProximityToRay); - - var candidate = intersectedIndexes[0]; - - if (getDistanceToRay(candidate) < maxDistanceFromRay) { - return candidate; - } - - // No point is closer than maxDistanceFromRay, return undefined answer - return; - - function byProximityToRay(x, y) { - var distX = getDistanceToRay(x); - var distY = getDistanceToRay(y); - return distX - distY; - } - - function getDistanceToRay(idx) { - var x = allPoints[idx]; - var y = allPoints[idx + 1]; - var z = allPoints[idx + 2]; - - var dx = ray.direction.x * (x - ray.origin.x); - var dy = ray.direction.y * (y - ray.origin.y); - var dz = ray.direction.z * (z - ray.origin.z); - - var directionDistance = dx + dy + dz; - var vx = ray.direction.x * directionDistance + ray.origin.x; - var vy = ray.direction.y * directionDistance + ray.origin.y; - var vz = ray.direction.z * directionDistance + ray.origin.z; - - return (vx - x) * (vx - x) + (vy - y) * (vy - y) + (vz - z) * (vz - z); - } -} diff --git a/src/galaxy/native/lineView.js b/src/galaxy/native/lineView.js deleted file mode 100644 index d6ff973..0000000 --- a/src/galaxy/native/lineView.js +++ /dev/null @@ -1,104 +0,0 @@ -import appConfig from './appConfig.js'; - -export default renderLinks; - -function renderLinks(scene, THREE) { - var linksVisible = true; - var linkMesh; - - var api = { - /** - * Renders links based on current graph model - */ - render: render, - /** - * Turns links rendering on or off - */ - toggleLinks: toggleLinks, - /** - * Gets or sets links visibility. If you pass truthy argument - * sets visibility to that value. Otherwise returns current visibility - */ - linksVisible: setOrGetLinksVisible - }; - - return api; - - function setOrGetLinksVisible(newValue) { - if (newValue === undefined) { - return linksVisible; - } - - if (newValue) { - scene.add(linkMesh); - } else { - scene.remove(linkMesh); - } - - linksVisible = newValue; - return linksVisible; - } - - function render(links, idxToPos, linksCount) { - var jsPos = []; - var jsColors = []; - var r = 16000; - var i = 0; - var linkId = 0; - var maxVisibleDistance = appConfig.getMaxVisibleEdgeLength(); - - for (i = 0; i < links.length; ++i) { - var to = links[i]; - if (to === undefined) continue; // no links for this node - - var fromX = idxToPos[i * 3]; - var fromY = idxToPos[i * 3 + 1]; - var fromZ = idxToPos[i * 3 + 2]; - - for (var j = 0; j < to.length; j++) { - var toIdx = to[j]; - - var toX = idxToPos[toIdx * 3]; - var toY = idxToPos[toIdx * 3 + 1]; - var toZ = idxToPos[toIdx * 3 + 2]; - - var dist = distance(fromX, fromY, fromZ, toX, toY, toZ); - if (maxVisibleDistance < dist) continue; - jsPos.push(fromX, fromY, fromZ, toX, toY, toZ); - jsColors.push(fromX / r + 0.5, fromY / r + 0.5, fromZ / r + 0.5, toX / r + 0.5, toY / r + 0.5, toZ / r + 0.5) - } - } - - var positions = new Float32Array(jsPos); - var colors = new Float32Array(jsColors); - - var geometry = new THREE.BufferGeometry(); - var material = new THREE.LineBasicMaterial({ - vertexColors: THREE.VertexColors, - blending: THREE.AdditiveBlending, - opacity:0.5, - transparent: true - }); - - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - geometry.addAttribute('color', new THREE.BufferAttribute(colors, 3)); - - geometry.computeBoundingSphere(); - if (linkMesh) { - scene.remove(linkMesh); - } - - linkMesh = new THREE.Line(geometry, material, THREE.LinePieces); - scene.add(linkMesh); - } - - function toggleLinks() { - setOrGetLinksVisible(!linksVisible); - } -} - -function distance(x1, y1, z1, x2, y2, z2) { - return (x1 - x2) * (x1 - x2) + - (y1 - y2) * (y1 - y2) + - (z1 - z2) * (z1 - z2); -} diff --git a/src/galaxy/native/renderer.js b/src/galaxy/native/renderer.js deleted file mode 100644 index 1acd70f..0000000 --- a/src/galaxy/native/renderer.js +++ /dev/null @@ -1,347 +0,0 @@ -/** - * This is a bridge between ultrafast particle renderer and react world. - * - * It listens to graph loading events. Once graph positions are loaded it calls - * native renderer to show the positions. - * - * It also listens to native renderer for user interaction. When user hovers - * over a node or clicks on it - it reports user actions back to the global - * events bus. These events are later consumed by stores to show appropriate - * UI feedback - */ -// TODO: This class needs to be refactored. It is doing too much, and parts -// of its code should be done from unrender itself -// TODO: Use DynamicBufferAttribute which can accelarate render -// E.g.: threejs.org/examples/webgl_buffergeometry_drawcalls.html -import unrender from 'unrender'; -window.THREE = unrender.THREE; - -import eventify from 'ngraph.events'; -import appEvents from '../service/appEvents.js'; -import scene from '../store/scene.js'; -import getNearestIndex from './getNearestIndex.js'; -import createTouchControl from './touchControl.js'; -import createLineView from './lineView.js'; -import appConfig from './appConfig.js'; - -export default sceneRenderer; - -var defaultNodeColor = 0xffffffff; - -var highlightNodeColor = 0xff0000ff; - -function sceneRenderer(container) { - var renderer, positions, graphModel, touchControl; - var hitTest, lastHighlight, lastHighlightSize, cameraPosition; - var lineView, links, lineViewNeedsUpdate; - var queryUpdateId = setInterval(updateQuery, 200); - - appEvents.positionsDownloaded.on(setPositions); - appEvents.linksDownloaded.on(setLinks); - appEvents.toggleSteering.on(toggleSteering); - appEvents.focusOnNode.on(focusOnNode); - appEvents.around.on(around); - appEvents.highlightQuery.on(highlightQuery); - appEvents.highlightLinks.on(highlightLinks); - appEvents.accelerateNavigation.on(accelarate); - appEvents.focusScene.on(focusScene); - appEvents.cls.on(cls); - - appConfig.on('camera', moveCamera); - appConfig.on('showLinks', toggleLinks); - - var api = { - destroy: destroy - }; - - eventify(api); - - return api; - - function accelarate(isPrecise) { - var input = renderer.input(); - if (isPrecise) { - input.movementSpeed *= 4; - input.rollSpeed *= 4; - } else { - input.movementSpeed /= 4; - input.rollSpeed /= 4; - } - } - - function updateQuery() { - if (!renderer) return; - var camera = renderer.camera(); - - appConfig.setCameraConfig(camera.position, camera.quaternion); - } - - function toggleSteering() { - if (!renderer) return; - - var input = renderer.input(); - var isDragToLookEnabled = input.toggleDragToLook(); - - // steering does not require "drag": - var isSteering = !isDragToLookEnabled; - appEvents.showSteeringMode.fire(isSteering); - } - - function clearHover() { - appEvents.nodeHover.fire({ - nodeIndex: undefined, - mouseInfo: undefined - }); - } - - function focusOnNode(nodeId) { - if (!renderer) return; - - renderer.lookAt(nodeId * 3, highlightFocused); - - function highlightFocused() { - appEvents.selectNode.fire(nodeId); - } - } - - function around(r, x, y, z) { - renderer.around(r, x, y, z); - } - - function setPositions(_positions) { - destroyHitTest(); - - positions = _positions; - focusScene(); - - if (!renderer) { - renderer = unrender(container); - touchControl = createTouchControl(renderer); - moveCameraInternal(); - var input = renderer.input(); - input.on('move', clearHover); - } - - renderer.particles(positions); - - hitTest = renderer.hitTest(); - hitTest.on('over', handleOver); - hitTest.on('click', handleClick); - hitTest.on('dblclick', handleDblClick); - hitTest.on('hitTestReady', adjustMovementSpeed); - } - - function adjustMovementSpeed(tree) { - var input = renderer.input(); - if (tree) { - var root = tree.getRoot(); - input.movementSpeed = root.bounds.half * 0.02; - } else { - input.movementSpeed *= 2; - } - } - - function focusScene() { - // need to be within timeout, in case if we are detached (e.g. - // first load) - setTimeout(function() { - container.focus(); - }, 30); - } - - function setLinks(outLinks, inLinks) { - links = outLinks; - lineViewNeedsUpdate = true; - updateSizes(outLinks, inLinks); - renderLineViewIfNeeded(); - } - - function updateSizes(outLinks, inLinks) { - var maxInDegree = getMaxSize(inLinks); - var view = renderer.getParticleView(); - var sizes = view.sizes(); - for (var i = 0; i < sizes.length; ++i) { - var degree = inLinks[i]; - if (degree) { - sizes[i] = ((200 / maxInDegree) * degree.length + 15); - } else { - sizes[i] = 30; - } - } - view.sizes(sizes); - } - - function getMaxSize(sparseArray) { - var maxSize = 0; - for (var i = 0; i < sparseArray.length; ++i) { - var item = sparseArray[i]; - if (item && item.length > maxSize) maxSize = item.length; - } - - return maxSize; - } - - function renderLineViewIfNeeded() { - if (!appConfig.getShowLinks()) return; - if (!lineView) { - lineView = createLineView(renderer.scene(), unrender.THREE); - } - lineView.render(links, positions); - lineViewNeedsUpdate = false; - } - - function toggleLinks() { - if (lineView) { - if (lineViewNeedsUpdate) renderLineViewIfNeeded(); - lineView.toggleLinks(); - } else { - renderLineViewIfNeeded(); - } - } - - function moveCamera() { - moveCameraInternal(); - } - - function moveCameraInternal() { - if (!renderer) return; - - var camera = renderer.camera(); - var pos = appConfig.getCameraPosition(); - if (pos) { - camera.position.set(pos.x, pos.y, pos.z); - } - var lookAt = appConfig.getCameraLookAt(); - if (lookAt) { - camera.quaternion.set(lookAt.x, lookAt.y, lookAt.z, lookAt.w); - } - } - - function destroyHitTest() { - if (!hitTest) return; // nothing to destroy - - hitTest.off('over', handleOver); - hitTest.off('click', handleClick); - hitTest.off('dblclick', handleDblClick); - hitTest.off('hitTestReady', adjustMovementSpeed); - } - - function handleClick(e) { - var nearestIndex = getNearestIndex(positions, e.indexes, e.ray, 30); - - appEvents.selectNode.fire(getModelIndex(nearestIndex)); - } - - function handleDblClick(e) { - var nearestIndex = getNearestIndex(positions, e.indexes, e.ray, 30); - if (nearestIndex !== undefined) { - focusOnNode(nearestIndex/3); - } - } - - function handleOver(e) { - var nearestIndex = getNearestIndex(positions, e.indexes, e.ray, 30); - - highlightNode(nearestIndex); - appEvents.nodeHover.fire({ - nodeIndex: getModelIndex(nearestIndex), - mouseInfo: e - }); - } - - function highlightNode(nodeIndex) { - var view = renderer.getParticleView(); - var colors = view.colors(); - var sizes = view.sizes(); - - if (lastHighlight !== undefined) { - colorNode(lastHighlight, colors, defaultNodeColor); - sizes[lastHighlight/3] = lastHighlightSize; - } - - lastHighlight = nodeIndex; - - if (lastHighlight !== undefined) { - colorNode(lastHighlight, colors, highlightNodeColor); - lastHighlightSize = sizes[lastHighlight/3]; - sizes[lastHighlight/3] *= 1.5; - } - - view.colors(colors); - view.sizes(sizes); - } - - function highlightQuery(query, color, scale) { - if (!renderer) return; - - var nodeIds = query.results.map(toNativeIndex); - var view = renderer.getParticleView(); - var colors = view.colors(); - - for (var i = 0; i < nodeIds.length; ++i) { - colorNode(nodeIds[i], colors, color) - } - - view.colors(colors); - appEvents.queryHighlighted.fire(query, color); - } - - function colorNode(nodeId, colors, color) { - var colorOffset = (nodeId/3) * 4; - colors[colorOffset + 0] = (color >> 24) & 0xff; - colors[colorOffset + 1] = (color >> 16) & 0xff; - colors[colorOffset + 2] = (color >> 8) & 0xff; - colors[colorOffset + 3] = (color & 0xff); - } - - function highlightLinks(links, color) { - var lines = new Float32Array(links.length * 3); - for (var i = 0; i < links.length; ++i) { - var i3 = links[i] * 3; - lines[i * 3] = positions[i3]; - lines[i * 3 + 1] = positions[i3 + 1]; - lines[i * 3 + 2] = positions[i3 + 2]; - } - renderer.lines(lines, color); - } - - function cls() { - var view = renderer.getParticleView(); - var colors = view.colors(); - - for (var i = 0; i < colors.length/4; i++) { - colorNode(i * 3, colors, 0xffffffff); - } - - view.colors(colors); - } - - function toNativeIndex(i) { - return i.id * 3; - } - - function getModelIndex(nearestIndex) { - if (nearestIndex !== undefined) { - // since each node represented as triplet we need to divide by 3 to - // get actual index: - return nearestIndex/3 - } - } - - function destroy() { - var input = renderer.input(); - if (input) input.off('move', clearHover); - renderer.destroy(); - appEvents.positionsDownloaded.off(setPositions); - appEvents.linksDownloaded.off(setLinks); - - if (touchControl) touchControl.destroy(); - renderer = null; - - clearInterval(queryUpdateId); - appConfig.off('camera', moveCamera); - appConfig.off('showLinks', toggleLinks); - - // todo: app events? - } -} diff --git a/src/galaxy/native/sceneKeyboardBinding.js b/src/galaxy/native/sceneKeyboardBinding.js deleted file mode 100644 index d46c0ed..0000000 --- a/src/galaxy/native/sceneKeyboardBinding.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This file defines special keyboard bindings for the scene. Most movement - * keyboard bindings are handled by `unrender` module (e.g. WASD). Here - * we handle additional keyboard shortcuts. For example toggle steering mode - */ -export default sceneKeyboardBinding; - -import events from '../service/appEvents.js'; -import Key from '../utils/key.js'; - -function sceneKeyboardBinding(container) { - var api = { - destroy: destroy - }; - var lastShiftKey = false; - - container.addEventListener('keydown', keydown, false); - container.addEventListener('keyup', keyup, false); - return api; - - function destroy() { - container.removeEventListener('keydown', keydown, false); - container.removeEventListener('keyup', keyup, false); - } - - function keydown(e) { - if (e.which === Key.Space) { - events.toggleSteering.fire(); - } else if (e.which === Key.L) { // L - toggle links - if (!e.ctrlKey && !e.metaKey) { - events.toggleLinks.fire(); - } - } else if (e.which === Key.H || (e.which === Key['/'] && e.shiftKey)) { // 'h' or '?' key - // Need to stop propagation, since help screen attempts to close itself - // once user presses any key. We don't want that now, since this is - // explicit request to render help - e.stopPropagation(); - events.toggleHelp.fire(); - } - if (e.shiftKey && !lastShiftKey) { - lastShiftKey = true; - events.accelerateNavigation.fire(true); - } - } - - function keyup(e) { - if (lastShiftKey && !e.shiftKey) { - lastShiftKey = false; - events.accelerateNavigation.fire(false); - } - } - -} diff --git a/src/galaxy/native/touchControl.js b/src/galaxy/native/touchControl.js deleted file mode 100644 index a66a25e..0000000 --- a/src/galaxy/native/touchControl.js +++ /dev/null @@ -1,57 +0,0 @@ -export default createTouchControl; - -function createTouchControl(renderer) { - var api = { - destroy: destroy - }; - var wasdControls, touchControls; - - init(); - - return api; - - function init() { - var container = renderer.getContainer(); - container.addEventListener('touchstart', onTouchStart, false); - container.addEventListener('touchend', onTouchEnd, false); - - // todo: should this be part of unrender itself? - wasdControls = renderer.input(); - if (window.orientation !== undefined) { - var camera = renderer.camera(); - touchControls = require('three.orientation')(camera); - renderer.onFrame(updateFromDeviceOritentation); - } - } - - function updateFromDeviceOritentation() { - touchControls.update(); - } - - function destroy() { - var container = renderer.getContainer(); - container.removeEventListener('touchstart', onTouchStart, false); - container.removeEventListener('touchend', onTouchEnd, false); - if (touchControls) { - touchControls.disconnect(); - renderer.offFrame(updateFromDeviceOritentation); - } - } - - function onTouchStart(e) { - if (!e.touches) return; - - if (e.touches.length > 0) { - wasdControls.moveState.forward = (e.touches.length === 1); - wasdControls.moveState.back = (e.touches.length === 2); - wasdControls.updateMovementVector(); - } - } - - function onTouchEnd(e) { - if (!e.touches) return; - wasdControls.moveState.forward = (e.touches.length === 1); - wasdControls.moveState.back = (e.touches.length === 2); - wasdControls.updateMovementVector(); - } -} diff --git a/src/galaxy/noWebgl.jsx b/src/galaxy/noWebgl.jsx deleted file mode 100644 index 69dafec..0000000 --- a/src/galaxy/noWebgl.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -export default require('maco').template(noWebGL, React); - -function noWebGL() { - return ( -
-

Could not initialize WebGL

-

- Your browser does not seem to support WebGL. - Find out how to get it here. -

-
- ); -} diff --git a/src/galaxy/nodeDetails/degreeWindowViewModel.js b/src/galaxy/nodeDetails/degreeWindowViewModel.js deleted file mode 100644 index 7d707d9..0000000 --- a/src/galaxy/nodeDetails/degreeWindowViewModel.js +++ /dev/null @@ -1,54 +0,0 @@ -import scene from '../store/scene.js'; -import formatNumber from '../utils/formatNumber.js'; - -export default DegreeWindowViewModel; - -function DegreeWindowViewModel(name, list, connectionType, id) { - this.id = id; - this.className = 'degree-results-window'; - this.list = list; - this.nodeName = name; - this.degreeNumber = formatNumber(list.length); - this.connectionType = connectionType; - this.degreeKindName = getDegreeName(connectionType, list.length); -} - -DegreeWindowViewModel.prototype.__name = 'DegreeWindowViewModel'; - -// TODO: This is a dupe. -function getDegreeName(connectionType, count) { - var graphName = scene.getGraphName(); - switch (graphName) { - case 'npm': - case 'bower': - case 'cpan': - case 'cran': - case 'composer': - case 'rubygems': - case 'gosearch': - case 'debian': - case 'fedora': - case 'arch': - case 'brew': - case 'nuget': - return dependencyName(connectionType, count); - case 'github': - return followerName(connectionType, count); - } - return connectionType === 'in' ? 'indegree' : 'outdegree'; -} - -function dependencyName(connectionType, count) { - if (connectionType === 'in') { - return count === 1 ? 'solution' : 'solutions'; - } - return count === 1 ? 'soltuion' : 'dependencies'; -} - -function followerName(connectionType, count) { - if (connectionType === 'out') { - return 'following' - } - - return count === 1 ? 'follower' : 'followers'; -} diff --git a/src/galaxy/nodeDetails/nodeDetailsStore.js b/src/galaxy/nodeDetails/nodeDetailsStore.js deleted file mode 100644 index 1a61038..0000000 --- a/src/galaxy/nodeDetails/nodeDetailsStore.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Prepares data for selected node details - */ -import appEvents from '../service/appEvents.js'; -import scene from '../store/scene.js'; -import DegreeWindowViewModel from './degreeWindowViewModel.js'; - -import getBaseNodeViewModel from '../store/baseNodeViewModel.js'; - -import eventify from 'ngraph.events'; - -export default nodeDetailsStore(); - -function nodeDetailsStore() { - var api = { - getSelectedNode: getSelectedNode - }; - - var currentNodeId, degreeVisible = false, - currentConnectionType; - - appEvents.selectNode.on(updateDetails); - appEvents.showDegree.on(updateDegreeDetails); - - eventify(api); - - return api; - - function updateDetails(nodeId) { - currentNodeId = nodeId; - updateDegreeDetails(currentNodeId, currentConnectionType); - } - - function updateDegreeDetails(id, connectionType) { - currentNodeId = id; - - degreeVisible = currentNodeId !== undefined; - if (degreeVisible) { - currentConnectionType = connectionType; - var rootInfo = scene.getNodeInfo(id); - var conenctions = scene.getConnected(id, connectionType); - - var viewModel = new DegreeWindowViewModel(rootInfo.name, conenctions, connectionType, id); - - appEvents.showNodeListWindow.fire(viewModel, 'degree'); - } else { - appEvents.hideNodeListWindow.fire('degree'); - } - api.fire('changed'); - } - - function getSelectedNode() { - if (currentNodeId === undefined) return; - - return getBaseNodeViewModel(currentNodeId); - } -} diff --git a/src/galaxy/nodeDetails/nodeDetailsView.jsx b/src/galaxy/nodeDetails/nodeDetailsView.jsx deleted file mode 100644 index 3d237d2..0000000 --- a/src/galaxy/nodeDetails/nodeDetailsView.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; -import detailModel from './nodeDetailsStore.js'; -import specialNodeDetails from './templates/all.js'; -import scene from '../store/scene.js'; - -module.exports = require('maco')(detailedNodeView, React); - -function detailedNodeView(x) { - x.render = function () { - var selectedNode = detailModel.getSelectedNode(); - if (!selectedNode) return null; - var NodeDetails = getNodeDetails(selectedNode); - - return ( -
- -
- ); - }; - - x.componentDidMount = function() { - detailModel.on('changed', updateView); - }; - - x.componentWillUnmount = function () { - detailModel.off('changed', updateView); - }; - - function getNodeDetails(viewModel) { - var Template = specialNodeDetails[scene.getGraphName()] || specialNodeDetails.default; - return Template; - } - - function updateView() { - x.forceUpdate(); - } -} diff --git a/src/galaxy/nodeDetails/templates/all.js b/src/galaxy/nodeDetails/templates/all.js deleted file mode 100644 index e3f553c..0000000 --- a/src/galaxy/nodeDetails/templates/all.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * TODO: I need something better than this. Manually changing template is - * very inconvenient :(. Should it be defined with metadata? - */ -import leetcode from './leetcode.jsx'; - -import defaultTemplate from './default.jsx'; - -export default { - leetcode: leetcode, - default: defaultTemplate -} diff --git a/src/galaxy/nodeDetails/templates/commonPackageTemplate.jsx b/src/galaxy/nodeDetails/templates/commonPackageTemplate.jsx deleted file mode 100644 index df6bd64..0000000 --- a/src/galaxy/nodeDetails/templates/commonPackageTemplate.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -export default commonPackageTemplate; - -function commonPackageTemplate(model, link, linkText) { - return ( -
-
- -
-
-

{model.inDegree}

-
-
{model.inDegreeLabel}
-
-
-
-

{model.outDegree}

-
-
{model.outDegreeLabel}
-
-
-
-
- -
{model.inDegree}
-
{model.outDegree}
-
-
-
- ); -} \ No newline at end of file diff --git a/src/galaxy/nodeDetails/templates/default.jsx b/src/galaxy/nodeDetails/templates/default.jsx deleted file mode 100644 index a9c4f93..0000000 --- a/src/galaxy/nodeDetails/templates/default.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; - -export default require('maco').template(template, React); - -function template(props) { - var model = props.model; - - return ( -
-
-
-

{model.name}

-
-
-
-

{model.inDegree}

-
-
{model.inDegreeLabel}
-
-
-
-

{model.outDegree}

-
-
{model.outDegreeLabel}
-
-
- -
-
-
{model.name}
-
{model.inDegree}
-
{model.outDegree}
-
-
-
- ); -} \ No newline at end of file diff --git a/src/galaxy/nodeDetails/templates/leetcode.jsx b/src/galaxy/nodeDetails/templates/leetcode.jsx deleted file mode 100644 index c6f38f2..0000000 --- a/src/galaxy/nodeDetails/templates/leetcode.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import commonPackageTemplate from './commonPackageTemplate.jsx'; - -export default require('maco').template(leetcode, React); - -function leetcode(props) { - var model = props.model; - - var link = 'https://github.com/blocage/leetcode-algorithms/tree/main/' + encodeURIComponent(model.name); - var linkText = model.name; - - return commonPackageTemplate(model, link, linkText); -} diff --git a/src/galaxy/runtime/around.js b/src/galaxy/runtime/around.js deleted file mode 100644 index daf535d..0000000 --- a/src/galaxy/runtime/around.js +++ /dev/null @@ -1,7 +0,0 @@ -import appEvents from '../service/appEvents.js'; - -export default around; - -function around(r, x, y, z) { - appEvents.around.fire(r, x, y, z); -} diff --git a/src/galaxy/runtime/clientRuntime.js b/src/galaxy/runtime/clientRuntime.js deleted file mode 100644 index 5a1a9c6..0000000 --- a/src/galaxy/runtime/clientRuntime.js +++ /dev/null @@ -1,14 +0,0 @@ -import search from './search.js'; -import highlight from './highlight.js'; -import showLinks from './showLinks.js'; -import cls from './cls.js'; -import around from './around.js'; - -export default { - search: search, - highlight: highlight, - hl: highlight, - links: showLinks, - cls: cls, - around: around -}; diff --git a/src/galaxy/runtime/cls.js b/src/galaxy/runtime/cls.js deleted file mode 100644 index ca455bc..0000000 --- a/src/galaxy/runtime/cls.js +++ /dev/null @@ -1,7 +0,0 @@ -import appEvents from '../service/appEvents.js'; - -export default cls; - -function cls() { - appEvents.cls.fire(); -} diff --git a/src/galaxy/runtime/highlight.js b/src/galaxy/runtime/highlight.js deleted file mode 100644 index e11c2f3..0000000 --- a/src/galaxy/runtime/highlight.js +++ /dev/null @@ -1,7 +0,0 @@ -import appEvents from '../service/appEvents.js'; - -export default highlight; - -function highlight(query, color, size) { - appEvents.highlightQuery.fire(query, color, size); -} diff --git a/src/galaxy/runtime/search.js b/src/galaxy/runtime/search.js deleted file mode 100644 index a8f8fe8..0000000 --- a/src/galaxy/runtime/search.js +++ /dev/null @@ -1,12 +0,0 @@ -import scene from '../store/scene.js'; - -export default search; - -function search(query) { - var graph = scene.getGraph(); - - return { - request: query, - results: graph.find(query), - }; -} diff --git a/src/galaxy/runtime/showLinks.js b/src/galaxy/runtime/showLinks.js deleted file mode 100644 index 7a035dd..0000000 --- a/src/galaxy/runtime/showLinks.js +++ /dev/null @@ -1,16 +0,0 @@ -import appEvents from '../service/appEvents.js'; -import scene from '../store/scene.js'; - -export default showLinks; - -function showLinks(from, to, color) { - var graph = scene.getGraph(); - if (typeof from !== 'boolean') { - from = from.results; - } - if (typeof to !== 'boolean') { - to = to.results; - } - var links = graph.findLinks(from, to); - appEvents.highlightLinks.fire(links, color); -} diff --git a/src/galaxy/scene.jsx b/src/galaxy/scene.jsx deleted file mode 100644 index e699cee..0000000 --- a/src/galaxy/scene.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react'; -import {findDOMNode} from 'react-dom'; -import HoverInfo from './hoverInfo.jsx'; -import NodeDetails from './nodeDetails/nodeDetailsView.jsx'; - -import SteeringIndicator from './steeringIndicator.jsx'; -import SearchBox from './search/searchBoxView.jsx'; -import NoWebGL from './noWebgl.jsx'; -import Help from './help.jsx'; -import About from './about.jsx'; - -import WindowCollection from './windows/windowCollectionView.jsx'; -import createNativeRenderer from './native/renderer.js'; -import createKeyboardBindings from './native/sceneKeyboardBinding.js'; - -import appEvents from './service/appEvents.js'; -var webglEnabled = require('webgl-enabled')(); -module.exports = require('maco')(scene, React); - -function scene(x) { - var nativeRenderer, keyboard; - var hoverModel, delegateClickHandler; - - x.render = function() { - if (!webglEnabled) { - return ; - } - - return ( -
-
- - - - - - -
- ); - }; - - x.componentDidMount = function() { - if (!webglEnabled) return; - var container = findDOMNode(x.refs.graphContainer); - nativeRenderer = createNativeRenderer(container); - keyboard = createKeyboardBindings(container); - delegateClickHandler = container.parentNode; - delegateClickHandler.addEventListener('click', handleDelegateClick); - }; - - x.componentWillUnmount = function() { - if (nativeRenderer) nativeRenderer.destroy(); - if (keyboard) keyboard.destroy(); - if (delegateClickHandler) delegateClickHandler.removeEventListener('click', handleDelegateClick); - }; - - function handleDelegateClick(e) { - var clickedEl = e.target; - - // since we are handling all clicks, we should avoid excessive work and - // talk with DOM only when absolutely necessary: - var classList = clickedEl.classList; - var isInDegree = classList.contains('in-degree'); - var isOutDegree = !isInDegree && classList.contains('out-degree'); - var nodeId; - if (isInDegree || isOutDegree) { - nodeId = parseInt(clickedEl.id, 10); - var connectionType = isInDegree ? 'in' : 'out'; - - appEvents.showDegree.fire(nodeId, connectionType); - } - if (classList.contains('node-focus')) { - nodeId = parseInt(clickedEl.id, 10); - appEvents.focusOnNode.fire(nodeId); - } - } -} diff --git a/src/galaxy/search/SearchResultWindowViewModel.js b/src/galaxy/search/SearchResultWindowViewModel.js deleted file mode 100644 index 91dcd1e..0000000 --- a/src/galaxy/search/SearchResultWindowViewModel.js +++ /dev/null @@ -1,11 +0,0 @@ -import formatNumber from '../utils/formatNumber.js'; - -export default SearchResultWindowViewModel; - -function SearchResultWindowViewModel(list) { - this.className = 'search-results-window'; - this.list = list; - this.matchesCountString = formatNumber(list.length); -} - -SearchResultWindowViewModel.prototype.__name = 'SearchResultWindowViewModel'; diff --git a/src/galaxy/search/searchBoxModel.js b/src/galaxy/search/searchBoxModel.js deleted file mode 100644 index 1c189b3..0000000 --- a/src/galaxy/search/searchBoxModel.js +++ /dev/null @@ -1,40 +0,0 @@ -import appEvents from '../service/appEvents.js'; -import scene from '../store/scene.js' -import clientRuntime from '../runtime/clientRuntime.js'; - -import SearchResultWindowViewModel from './SearchResultWindowViewModel.js'; - -export default searchBoxModel(); - -const searchResultsWindowId = 'search-results'; - -function searchBoxModel() { - let api = { - search: search, - submit: submit - }; - - return api; - - function search(newText) { - if (newText && newText[0] === ':') return; // processed in submit - - var searchResults = scene.find(newText); - var searchResultWindowViewModel = new SearchResultWindowViewModel(searchResults); - - if (searchResults.length) { - appEvents.showNodeListWindow.fire(searchResultWindowViewModel, searchResultsWindowId); - } else { - appEvents.hideNodeListWindow.fire(searchResultsWindowId); - } - } - - function submit(command) { - if (!command || command[0] !== ':') return; // We can handle only commands here - - // Yes, this is not secure, I know - command = 'with (ctx) { ' + command.substr(1) + ' }'; - var dynamicFunction = new Function('ctx', command); - dynamicFunction(clientRuntime); - } -} diff --git a/src/galaxy/search/searchBoxView.jsx b/src/galaxy/search/searchBoxView.jsx deleted file mode 100644 index 0348bc8..0000000 --- a/src/galaxy/search/searchBoxView.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import searchBoxModel from './searchBoxModel.js'; - -module.exports = require('maco')(searchBar, React); - -function searchBar(x) { - x.render = function () { - return ( -
-
-
-
- - - - -
-
-
-
- ); - }; - - function runSearch(e) { - searchBoxModel.search(e.target.value); - } - - function runSubmit(e) { - var searchText = React.findDOMNode(x.refs.searchText).value; - searchBoxModel.submit(searchText); - e.preventDefault(); - } -} diff --git a/src/galaxy/service/appEvents.js b/src/galaxy/service/appEvents.js deleted file mode 100644 index b7bc297..0000000 --- a/src/galaxy/service/appEvents.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Defines list of global events transmitted inside the application. - * - * Views should never listen to these, instead stores and native renderer - * consume these, transform them to view-friendly format and fire store-specific - * events. - */ -import eventify from 'ngraph.events'; -import eventMirror from './eventMirror.js'; - -var appEvents = eventify({}); - -export default eventMirror([ - /** - * Fired when labels are downloaded - */ - 'labelsDownloaded', - - /** - * Fired when positions are downloaded - */ - 'positionsDownloaded', - - /** - * Fired when links are downloaded - */ - 'linksDownloaded', - - /** - * Fired when entire graph is downloaded - */ - 'graphDownloaded', - - /** - * Fired when new galaxy page is opened and graph download is required - */ - 'downloadGraphRequested', - - /** - * Fired when user hover mouse over a node - */ - 'nodeHover', - - /** - * Fired when user wants to select a node - */ - 'selectNode', - - /** - * Fired when user wants to toggle camera steering mode. In steering - * mode camera will always try to focus on mouse position. Thus - * middle point of the screen is the only stable point. - */ - 'toggleSteering', - - /** - * Fired when user wants to show or hide links - */ - 'toggleLinks', - - /** - * Requests the application to show "Steering mode" indicator. - */ - 'showSteeringMode', - - /** - * fired when user inputs a text into the search bar - */ - 'commandBarChanged', - - /** - * fired when user requesed to show or hide help screen - */ - 'toggleHelp', - - // These events are not documented since I'm not sure whether to keep them - 'showNodeListWindow', - 'hideNodeListWindow', - 'showDegree', - 'focusOnNode', - 'focusScene', - 'highlightQuery', - 'queryHighlighted', - 'highlightLinks', - 'cls', - 'around', - 'queryChanged', - - 'accelerateNavigation' -], appEvents); - diff --git a/src/galaxy/service/edgeFinder.js b/src/galaxy/service/edgeFinder.js deleted file mode 100644 index 0d0b86f..0000000 --- a/src/galaxy/service/edgeFinder.js +++ /dev/null @@ -1,92 +0,0 @@ -export default edgeFinder; - -function edgeFinder(from, to, outL, inL, labels) { - var result = []; - var anyFrom = typeof from === 'boolean'; - var anyTo = typeof to === 'boolean'; - if (anyFrom && anyTo) { - // it's either all or nothing: - if (from && to) { - addAllEdges(); - } - return result; - } - - if (anyFrom && !anyTo) { - if (!from) return result; - - addAnyFrom(to, inL); - return result; - } else if (anyTo && !anyFrom) { - if (!to) return result; - - addAnyTo(from, outL); - return result; - } - var indexSource = from; - var iterateSource = to; - var iterateDeps = inL; - - if (from.length > to.length) { - indexSource = to; - iterateSource = from; - iterateDeps = outL; - } - var index = buildIndex(indexSource); - - compositeSearch(); - - return result; - - function buildIndex(src) { - var index = Object.create(null); - for (var i = 0; i < src.length; ++i) { - index[src[i].id] = true; - } - return index; - } - - function compositeSearch() { - for (var i = 0; i < iterateSource.length; ++i) { - var item = iterateSource[i].id; - addIndexed(item, iterateDeps[item]); - } - } - - function addIndexed(nodeId, neighbours) { - if (!neighbours) return; - for (var i = 0; i < neighbours.length; ++i) { - if (index[neighbours[i]]) { - result.push(nodeId, neighbours[i]); - } - } - } - - function addAnyFrom(to, inL) { - for (var i = 0; i < to.length; ++i) { - var nodeId = to[i].id; - addEdges(nodeId, inL[nodeId]); - } - } - - function addAnyTo(from, outL) { - for (var i = 0; i < from.length; ++i) { - var nodeId = from[i].id; - addEdges(nodeId, outL[nodeId]); - } - } - - function addAllEdges() { - for (var i = 0; i < labels.length; ++i) { - addEdges(i, outL[i]); - addEdges(i, inL[i]); - } - } - - function addEdges(node, edges) { - if (!edges) return; - for (var i = 0; i < edges.length; ++i) { - result.push(node, edges[i]); - } - } -} diff --git a/src/galaxy/service/eventMirror.js b/src/galaxy/service/eventMirror.js deleted file mode 100644 index c7263c5..0000000 --- a/src/galaxy/service/eventMirror.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * This is a syntax sugar wrapper which allows consumer to register events on - * a given event bus, later clients can have rich API to consume events. - * - * For example: - * - * // Create a simple event bus: - * var myBus = require('ngraph.events')({}); - * - * // Register several events on this bus: - * var events = eventMirror(['sayHi', 'sayBye'], myBus); - * - * // Now consumers can do: - * events.sayHi.fire('world'); // fire 'sayHi' event, and pass 'world' argument - * - * // this will listen to 'sayHi' event, and will print "Hello world" - * events.sayHi.on(function (name) { console.log('Hello ' + name); }) - * - * // it is also equivalent to - * myBus.fire('sayHi', 'world'); - * myBus.on('sayHi', function (name) { console.log('Hello ' + name); }); - * - * Why? I think having explicit place with all registered events can be - * beneficial for the reader. You can easily find and document all possible - * events in the system. - */ -export default eventMirror; - -function eventMirror(eventNames, eventBus) { - var events = Object.create(null); - eventNames.forEach(setActiveCommand); - - return events; - - function setActiveCommand(eventName, idx) { - events[eventName] = { - id: eventName, - fire: fire(eventName), - on: on(eventName), - off: off(eventName) - }; - } - - function fire(name) { - return function () { - eventBus.fire.apply(this, [name].concat(Array.prototype.slice.call(arguments))); - } - } - - function on(name) { - return function (callback) { - eventBus.on(name, callback); - } - } - - function off(name) { - return function (callback) { - eventBus.off(name, callback); - } - } -} diff --git a/src/galaxy/service/graph.js b/src/galaxy/service/graph.js deleted file mode 100644 index ae22028..0000000 --- a/src/galaxy/service/graph.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Wrapper on top of graph data. Not sure where it will go yet. - */ -import linkFinder from './edgeFinder.js'; -export default graph; - -function graph(rawGraphLoaderData) { - var {labels, outLinks, inLinks, positions} = rawGraphLoaderData; - var empty = []; - - var api = { - getNodeInfo: getNodeInfo, - getConnected: getConnected, - find: find, - findLinks: findLinks - }; - - return api; - - function findLinks(from, to) { - return linkFinder(from, to, outLinks, inLinks, labels); - } - - function find(query) { - var result = []; - if (!labels) return result; - - if (typeof query === 'string') { - // short circuit if it's blank string - no results - if (!query) return result; - query = regexMatcher(query); - } - - for (var i = 0; i < labels.length; ++i) { - if (query(i, labels, outLinks, inLinks, positions)) { - result.push(getNodeInfo(i)); - } - } - - return result; - } - - function regexMatcher(str) { - var regex = compileRegex(str); - if (!regex) return no; - - return function (i, labels, outLinks, inLinks, pos) { - var label = labels[i]; - if (typeof label === 'string') { - return label.match(regex); - } - return label.toString().match(regex); - } - } - - function no() { return false; } - - function compileRegex(pattern) { - try { - return new RegExp(pattern, 'ig'); - } catch (e) { - // this cannot be compiled. Ignore it. - } - } - - function getConnected(startId, connectionType) { - if (connectionType === 'out') { - return outLinks[startId] || empty; - } else if (connectionType === 'in') { - return inLinks[startId] || empty; - } - return empty; - } - - function getNodeInfo(id) { - if (!labels) return; - - var outLinksCount = 0; - if (outLinks[id]) { - outLinksCount = outLinks[id].length; - } - - var inLinksCount = 0; - if (inLinks[id]) { - inLinksCount = inLinks[id].length; - } - - return { - id: id, - name: labels[id], - out: outLinksCount, - in : inLinksCount - }; - } - - function getName(id) { - if (!labels) return ''; - if (id < 0 || id > labels.length) { - throw new Error(id + " is outside of labels range"); - } - return labels[id]; - } - - function getPositions() { - return positions; - } - - function getLinks() { - return links; - } -} diff --git a/src/galaxy/service/graphLoader.js b/src/galaxy/service/graphLoader.js deleted file mode 100644 index 9a69e2b..0000000 --- a/src/galaxy/service/graphLoader.js +++ /dev/null @@ -1,182 +0,0 @@ -import config from '../../config.js'; -import request from './request.js'; -import createGraph from './graph.js'; -import appEvents from './appEvents.js'; -import appConfig from '../native/appConfig.js'; -import asyncFor from 'rafor'; -import Promise from 'bluebird'; - -export default loadGraph; - -/** - * @param {string} name of the graph to be downloaded - * @param {progressCallback} progress notifies when download progress event is - * received - * @param {completeCallback} complete notifies when all graph files are downloaded - * - */ -function loadGraph(name, progress) { - var positions, labels; - var outLinks = []; - var inLinks = []; - - // todo: handle errors - var manifestEndpoint = config.dataUrl + name; - var galaxyEndpoint = manifestEndpoint; - - var manifest; - - return loadManifest() - .then(loadPositions) - .then(loadLinks) - .then(loadLabels) - .then(convertToGraph); - - function convertToGraph() { - return createGraph({ - positions: positions, - labels: labels, - outLinks: outLinks, - inLinks: inLinks - }); - } - - function loadManifest() { - return request(manifestEndpoint + '/manifest.json?nocache=' + (+new Date()), { - responseType: 'json' - }).then(setManifest); - } - - function setManifest(response) { - manifest = response; - var version = getFromAppConfig(manifest) || manifest.last; - if (manifest.endpoint) { - // the endpoint is overridden. Since we trust manifest endpoint, we also - // trust overridden endpoint: - galaxyEndpoint = manifest.endpoint; - } else { - galaxyEndpoint = manifestEndpoint; - } - galaxyEndpoint += '/' + version; - appConfig.setManifestVersion(version); - } - - function getFromAppConfig(manifest) { - var appConfigVersion = appConfig.getManifestVersion(); - var approvedVersions = manifest && manifest.all; - - // default to the last version: - if (!approvedVersions || !appConfigVersion) return; - - // If this version is whitelisted, let it through: - if (approvedVersions.indexOf(appConfigVersion) >= 0) { - return appConfigVersion; - } - } - - function loadPositions() { - return request(galaxyEndpoint + '/positions.json', { - responseType: 'json', - progress: reportProgress(name, 'positions') - }).then(setPositions); - } - - function setPositions(buffer) { - positions = new Int32Array(buffer['data']); - var scaleFactor = appConfig.getScaleFactor(); - for (var i = 0; i < positions.length; ++i) { - positions[i] *= scaleFactor; - } - appEvents.positionsDownloaded.fire(positions); - } - - function loadLinks() { - return request(galaxyEndpoint + '/links.json', { - responseType: 'json', - progress: reportProgress(name, 'links') - }).then(setLinks); - } - - function setLinks(buffer) { - var links = new Int32Array(buffer['data']); - var lastArray = []; - outLinks[0] = lastArray; - var srcIndex; - var processed = 0; - var total = links.length; - - asyncFor(links, processLink, reportBack); - var deffered = defer(); - function processLink(link) { - if (link < 0) { - srcIndex = -link - 1; - lastArray = outLinks[srcIndex] = []; - } else { - var toNode = link - 1; - lastArray.push(toNode); - if (inLinks[toNode] === undefined) { - inLinks[toNode] = [srcIndex]; - } else { - inLinks[toNode].push(srcIndex); - } - } - processed += 1; - if (processed % 10000 === 0) { - reportLinkProgress(processed / total); - } - } - - function reportLinkProgress(percent) { - progress({ - message: name + ': initializing edges ', - completed: Math.round(percent * 100) + '%' - }); - } - - function reportBack() { - appEvents.linksDownloaded.fire(outLinks, inLinks); - deffered.resolve(); - } - - return deffered.promise; - } - - function loadLabels() { - return request(galaxyEndpoint + '/labels.json', { - responseType: 'json', - progress: reportProgress(name, 'labels') - }).then(setLabels); - } - - function setLabels(data) { - labels = data; - appEvents.labelsDownloaded.fire(labels); - } - - function reportProgress(name, file) { - return function(e) { - let progressInfo = { - message: name + ': downloading ' + file, - }; - if (e.percent !== undefined) { - progressInfo.completed = Math.round(e.percent * 100) + '%' - } else { - progressInfo.completed = Math.round(e.loaded) + ' bytes' - } - progress(progressInfo); - }; - } -} - -function defer() { - var resolve, reject; - var promise = new Promise(function() { - resolve = arguments[0]; - reject = arguments[1]; - }); - return { - resolve: resolve, - reject: reject, - promise: promise - }; -} diff --git a/src/galaxy/service/request.js b/src/galaxy/service/request.js deleted file mode 100644 index 5ef9c74..0000000 --- a/src/galaxy/service/request.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * A very basic ajax client with promises and progress reporting. - */ -import Promise from 'bluebird'; - -export default request; - -function request(url, options) { - if (!options) options = {}; - - return new Promise(download); - - function download(resolve, reject) { - var req = new XMLHttpRequest(); - - if (typeof options.progress === 'function') { - req.addEventListener("progress", updateProgress, false); - } - - req.addEventListener("load", transferComplete, false); - req.addEventListener("error", transferFailed, false); - req.addEventListener("abort", transferCanceled, false); - - req.open('GET', url); - if (options.responseType) { - req.responseType = options.responseType; - } - req.send(null); - - function updateProgress(e) { - if (e.lengthComputable) { - options.progress({ - loaded: e.loaded, - total: e.total, - percent: e.loaded / e.total - }); - } else { - options.progress({ - loaded: e.loaded, - }); - } - } - - function transferComplete() { - if (req.status !== 200) { - reject(`Unexpected status code ${req.status} when calling ${url}`); - return; - } - var response = req.response; - - if (options.responseType === 'json' && typeof response === 'string') { - // IE - response = JSON.parse(response); - } - - resolve(response); - } - - function transferFailed() { - reject(`Failed to download ${url}`); - } - - function transferCanceled() { - reject(`Cancelled download of ${url}`); - } - } -} diff --git a/src/galaxy/steeringIndicator.jsx b/src/galaxy/steeringIndicator.jsx deleted file mode 100644 index a672960..0000000 --- a/src/galaxy/steeringIndicator.jsx +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This component renders a huge steering wheel, which denotes we are in the - * steering mode (camera follows mouse cursor). - */ -import appEvents from './service/appEvents.js'; -import React from 'react'; - -module.exports = require('maco')(steeringIndicator, React); - -function steeringIndicator(x) { - var showSteeringMode = false; - appEvents.showSteeringMode.on(updateSteering); - - x.render = function () { - if (!showSteeringMode) return null; - - return ( -
-
-
Press SPACE to deactivate steering mode
-
- ); - }; - - function updateSteering(isVisible) { - showSteeringMode = isVisible; - x.forceUpdate(); - } -} diff --git a/src/galaxy/store/baseNodeViewModel.js b/src/galaxy/store/baseNodeViewModel.js deleted file mode 100644 index 9af6fa1..0000000 --- a/src/galaxy/store/baseNodeViewModel.js +++ /dev/null @@ -1,22 +0,0 @@ -import getGraphSpecificInfo from './graphSepcific/graphSpecificInfo.js'; -import scene from './scene.js'; -import formatNumber from '../utils/formatNumber.js'; - -export default getBaseNodeViewModel; - -function getBaseNodeViewModel(nodeId) { - var graphName = scene.getGraphName(); - var graphSpecificInfo = getGraphSpecificInfo(graphName); - var nodeInfo = scene.getNodeInfo(nodeId); - - return { - name: nodeInfo.name, - id: nodeInfo.id, - - inDegree: formatNumber(nodeInfo.in), - inDegreeLabel: graphSpecificInfo.getInDegreeLabel(nodeInfo.in), - - outDegree: formatNumber(nodeInfo.out), - outDegreeLabel: graphSpecificInfo.getOutDegreeLabel(nodeInfo.out) - }; -} diff --git a/src/galaxy/store/graphSepcific/graphSpecificInfo.js b/src/galaxy/store/graphSepcific/graphSpecificInfo.js deleted file mode 100644 index 4433e91..0000000 --- a/src/galaxy/store/graphSepcific/graphSpecificInfo.js +++ /dev/null @@ -1,48 +0,0 @@ -export default graphSpecificInfo; - -function graphSpecificInfo(graphName) { - switch(graphName) { - case 'leetcode': - return new PackagesGraph(graphName); - } - return new DefaultGraph(graphName); -} - -function DefaultGraph(graphName) { - this.graphName = graphName; - this.getInDegreeLabel = function getInDegreeLabel(inDegreeValue) { - return 'in-degree'; - }; - - this.getOutDegreeLabel = function getInDegreeLabel(outDegreeValue) { - return 'out-degree'; - }; -} - -function PackagesGraph(graphName) { - DefaultGraph.call(this, graphName); - - this.getInDegreeLabel = function getInDegreeLabel(inDegreeValue) { - return inDegreeValue === 1 ? 'solution' : 'solutions'; - }; - - this.getOutDegreeLabel = function getInDegreeLabel(outDegreeValue) { - return outDegreeValue === 1 ? 'dependency' : 'dependencies'; - }; -} - -function GoGraph(graphName) { - PackagesGraph.call(this, graphName); -} - -function FollowersGraph(graphName) { - DefaultGraph.call(this, graphName); - - this.getInDegreeLabel = function getInDegreeLabel(inDegreeValue) { - return inDegreeValue === 1 ? 'follower' : 'followers'; - }; - - this.getOutDegreeLabel = function getInDegreeLabel(outDegreeValue) { - return 'following'; - }; -} diff --git a/src/galaxy/store/hover.js b/src/galaxy/store/hover.js deleted file mode 100644 index 8df39f5..0000000 --- a/src/galaxy/store/hover.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react'; -import eventify from 'ngraph.events'; - -import appEvents from '../service/appEvents.js'; -import scene from './scene.js'; -import getBaseNodeViewModel from './baseNodeViewModel.js'; - -export default hoverStore(); - -function hoverStore() { - var store = {}; - eventify(store); - - appEvents.nodeHover.on(prepareViewModelAndNotifyConsumers); - - return store; - - function prepareViewModelAndNotifyConsumers(hoverDetails) { - var hoverTemplate = null; - if (hoverDetails.nodeIndex !== undefined) { - var viewModel = createViewModel(hoverDetails); - hoverTemplate = createDefaultTemplate(viewModel); - } - - store.fire('changed', hoverTemplate); - } - - function createViewModel(model) { - if (model === null) throw new Error('Model is not expected to be null'); - - var hoverViewModel = getBaseNodeViewModel(model.nodeIndex); - hoverViewModel.left = model.mouseInfo.x; - hoverViewModel.top = model.mouseInfo.y; - - return hoverViewModel; - } -} - -function createDefaultTemplate(viewModel) { - var style = { - left: viewModel.left + 20, - top: viewModel.top - 35 - }; - - return ( -
- {viewModel.name} - {viewModel.inDegree} - {viewModel.outDegree} -
- ); -} diff --git a/src/galaxy/store/scene.js b/src/galaxy/store/scene.js deleted file mode 100644 index 6e00de3..0000000 --- a/src/galaxy/store/scene.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Manages graph model life cycle. The low-level rendering of the particles - * is handled by ../native/renderer.js - */ -import loadGraph from '../service/graphLoader.js'; -import appEvents from '../service/appEvents.js'; - -import eventify from 'ngraph.events'; - -export default sceneStore(); - -function sceneStore() { - var loadInProgress = true; - var currentGraphName; - var unknownNodeInfo = { - inDegree: '?', - outDegree: '?' - } - - var graph; - - var api = { - isLoading: isLoading, - getGraph: getGraph, - getGraphName: getGraphName, - getNodeInfo: getNodeInfo, - getConnected: getConnected, - find: find - }; - - appEvents.downloadGraphRequested.on(downloadGraph); - - eventify(api); - - return api; - - function find(query) { - return graph.find(query); - } - - function isLoading() { - return loadInProgress; - } - - function downloadGraph(graphName) { - if (graphName === currentGraphName) return; - - loadInProgress = true; - currentGraphName = graphName; - loadGraph(graphName, reportProgress).then(loadComplete); - } - - function getGraph() { - return graph; - } - - function getGraphName() { - return currentGraphName; - } - - function getNodeInfo(nodeId) { - if (!graph) { - unknownNodeInfo.name = nodeId; - return unknownNodeInfo; - } - var nodeInfo = graph.getNodeInfo(nodeId); - // TODO: too tired, need to get this out from here - if (currentGraphName === 'github') { - nodeInfo.icon = 'https://avatars.githubusercontent.com/' + nodeInfo.name; - } - - return nodeInfo; - } - - function getConnected(nodeId, connectionType) { - if (!graph) { - return []; - } - return graph.getConnected(nodeId, connectionType).map(getNodeInfo); - } - - function reportProgress(progress) { - api.fire('loadProgress', progress); - } - - function loadComplete(model) { - loadInProgress = false; - graph = model; - api.fire('loadProgress', {}); - appEvents.graphDownloaded.fire(); - } -} diff --git a/src/galaxy/utils/formatNumber.js b/src/galaxy/utils/formatNumber.js deleted file mode 100644 index 4fc22e2..0000000 --- a/src/galaxy/utils/formatNumber.js +++ /dev/null @@ -1,5 +0,0 @@ -export default formatNumber; - -function formatNumber(x) { - return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); -} diff --git a/src/galaxy/utils/key.js b/src/galaxy/utils/key.js deleted file mode 100644 index 9a51f42..0000000 --- a/src/galaxy/utils/key.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - isModifier, - - H: 72, - L: 76, - Space: 32, - '/': 191 -}; - -function isModifier(e) { - return e.altKey || e.ctrlKey || e.metaKey || e.shiftKey; -} diff --git a/src/galaxy/utils/resources.js b/src/galaxy/utils/resources.js deleted file mode 100644 index a97cbae..0000000 --- a/src/galaxy/utils/resources.js +++ /dev/null @@ -1,11 +0,0 @@ -export default getStaticResource; - -let resources = Object.create(null); - -getStaticResource.add = function add(key, value) { - resources[key] = value; -} - -function getStaticResource(name) { - return resources[name]; -} diff --git a/src/galaxy/windows/nodeInfoRow.jsx b/src/galaxy/windows/nodeInfoRow.jsx deleted file mode 100644 index 8504d77..0000000 --- a/src/galaxy/windows/nodeInfoRow.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import formatNumber from '../utils/formatNumber.js'; - -module.exports = require('maco').template(windowTitle, React); - -function windowTitle(props) { - var item = props.viewModel; - var image = ''; - if (item.icon) { - image = ; - } - - return ( -
-
- {image} - - {item.name} - -
-
- {formatNumber(item.in)} -
-
- {formatNumber(item.out)} -
-
- ); -} diff --git a/src/galaxy/windows/nodeListView.jsx b/src/galaxy/windows/nodeListView.jsx deleted file mode 100644 index 16647c4..0000000 --- a/src/galaxy/windows/nodeListView.jsx +++ /dev/null @@ -1,59 +0,0 @@ -/** - * This component renders list of packages in single window. - * There can be multiple lists opened at any time. The list is currently - * managed by windowCollectionView - */ -import React from 'react'; -import ReactList from 'react-list'; -import WindowTitle from './windowTitle.jsx'; -import NodeInfoRow from './nodeInfoRow.jsx'; - -module.exports = require('maco')(nodeListView, React); -var windowId = 0; - -function nodeListView(x) { - windowId += 1; - - x.render = function () { - var windowViewModel = x.props.viewModel; - var className = 'window-container'; - - if (windowViewModel.className) { - className += ' ' + windowViewModel.className; - } - - var items = windowViewModel.list; - var id = windowId + windowViewModel.className + items.length; - - return ( -
- -
- {content(items)} -
-
- ); - - function renderItem(idx, key) { - var vm = items[idx]; - return ; - } - - function getHeight() { - // FIXME: Hardcoding is not good. - return 20; - } - - function content(items) { - if (items.length > 0) { - return ; - } else { - return null; - } - } - }; -} diff --git a/src/galaxy/windows/windowCollectionModel.js b/src/galaxy/windows/windowCollectionModel.js deleted file mode 100644 index ebe6740..0000000 --- a/src/galaxy/windows/windowCollectionModel.js +++ /dev/null @@ -1,46 +0,0 @@ -import appEvents from '../service/appEvents.js'; -import eventify from 'ngraph.events'; - -export default windowCollectionModel(); - -function windowCollectionModel() { - - appEvents.showNodeListWindow.on(showWindow); - appEvents.hideNodeListWindow.on(hideWindow); - - var api = { - getWindows: getWindows - }; - - var registeredWindows = Object.create(null); - var allWindows = []; - - eventify(api); - - return api; - - function getWindows() { - return allWindows; - } - - function showWindow(viewModel, windowId) { - var windowIndex = registeredWindows[windowId]; - if (windowIndex === undefined) { - allWindows.push(viewModel); - windowIndex = registeredWindows[windowId] = allWindows.length - 1; - } else { - allWindows[windowIndex] = viewModel; - } - api.fire('changed'); - } - - function hideWindow(windowId) { - var windowIndex = registeredWindows[windowId]; - if (windowIndex !== undefined) { - delete registeredWindows[windowId]; - allWindows.splice(windowIndex, 1); - - api.fire('changed', windowIndex); - } - } -} diff --git a/src/galaxy/windows/windowCollectionView.jsx b/src/galaxy/windows/windowCollectionView.jsx deleted file mode 100644 index 170a062..0000000 --- a/src/galaxy/windows/windowCollectionView.jsx +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Renders collection of windows - */ -import React from 'react'; -import NodeListView from './nodeListView.jsx'; -import windowCollectionModel from './windowCollectionModel.js'; - -module.exports = require('maco')(windowCollectionView, React); - -function windowCollectionView(x) { - x.render = function () { - var windows = windowCollectionModel.getWindows(); - if (windows.length === 0) return null; - - return
{windows.map(toWindowView)}
; - }; - - x.componentDidMount = function () { - windowCollectionModel.on('changed', update); - }; - - x.componentWillUnmount = function() { - windowCollectionModel.off('changed', update); - }; - - function toWindowView(windowViewModel, idx) { - return ; - } - - function update() { - x.forceUpdate(); - } -} diff --git a/src/galaxy/windows/windowTitle.jsx b/src/galaxy/windows/windowTitle.jsx deleted file mode 100644 index 845bbfb..0000000 --- a/src/galaxy/windows/windowTitle.jsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import resource from '../utils/resources.js'; - -var maco = require('maco'); -registerDataTemplates(); - -module.exports = maco.template(windowTitle, React); - -var ContentControl = maco(contentControl, React); - -function windowTitle(props) { - // TODO: Close/drag? - var viewModel = props.viewModel; - return ; -} - - -function contentControl(x) { - x.render = function() { - var viewModel = x.props.viewModel; - var Template; - - if (viewModel) { - Template = contentTemplateSelector(viewModel); - } - if (!Template) { - return
{viewModel}
; - } - - return