sclass LineComp_PairCounts { new MultiSet<Pair<Int>> counts; MultiSetMap<Int, Pair<Int>> byCount = multiSetMap_innerTreeSet_outerRevTreeMap(); void addAll(Iterable<Pair<Int>> l) { fOr (Pair<Int> p : l) add(p); } void removeAll(Iterable<Pair<Int>> l) { fOr (Pair<Int> p : l) remove(p); } // increment pair's count void add(Pair<Int> p) { int count = counts.get(p); byCount.remove(count, p); counts.add(p); byCount.put(count+1, p); } // decrement pair's count void remove(Pair<Int> p) { int count = counts.get(p); if (count == 0) fail("Can't remove pair " + p); byCount.remove(count, p); counts.remove(p); if (count-- > 0) byCount.put(count, p); } Pair<Int> mostPopularDuplicate() { ret toInt(firstKey(byCount)) < 2 ? null : firstValue(byCount); } int numberOfDuplicates() { ret counts.size()-l(byCount.get(1)); } int getCount(Pair<Int> p) { ret counts.get(p); } }
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: | 384 / 416 |
| Referenced in: | -