1 | sclass LineComp_PairCounts {
|
2 | new MultiSet<Pair<Int>> counts; |
3 | MultiSetMap<Int, Pair<Int>> byCount = multiSetMap_innerTreeSet_outerRevTreeMap(); |
4 | |
5 | void addAll(Iterable<Pair<Int>> l) { fOr (Pair<Int> p : l) add(p); }
|
6 | void removeAll(Iterable<Pair<Int>> l) { fOr (Pair<Int> p : l) remove(p); }
|
7 | |
8 | // increment pair's count |
9 | void add(Pair<Int> p) {
|
10 | int count = counts.get(p); |
11 | byCount.remove(count, p); |
12 | counts.add(p); |
13 | byCount.put(count+1, p); |
14 | } |
15 | |
16 | // decrement pair's count |
17 | void remove(Pair<Int> p) {
|
18 | int count = counts.get(p); |
19 | if (count == 0) fail("Can't remove pair " + p);
|
20 | byCount.remove(count, p); |
21 | counts.remove(p); |
22 | if (count-- > 0) byCount.put(count, p); |
23 | } |
24 | |
25 | Pair<Int> mostPopularDuplicate() {
|
26 | ret toInt(firstKey(byCount)) < 2 ? null : firstValue(byCount); |
27 | } |
28 | |
29 | int numberOfDuplicates() {
|
30 | ret counts.size()-l(byCount.get(1)); |
31 | } |
32 | |
33 | int getCount(Pair<Int> p) {
|
34 | ret counts.get(p); |
35 | } |
36 | } |
Began life as a copy of #1028215
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
| Snippet ID: | #1028236 |
| Snippet name: | LineComp_PairCounts - helper for LineComp compressor (backup before IntPair) |
| Eternal ID of this version: | #1028236/1 |
| Text MD5: | 0c13aea5c1234a3a99df7bfa3e05605a |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2020-05-27 14:52:53 |
| Source code size: | 995 bytes / 36 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 385 / 417 |
| Referenced in: | [show references] |