Improve item combination algorithm

This commit is contained in:
2022-06-08 16:12:44 +01:00
parent 1b3988f961
commit ba8b33a87c
14 changed files with 77 additions and 22 deletions
+8
View File
@@ -32,3 +32,11 @@ multiLookupTrie xs t@(Trie my ch)
case M.lookup z ch of
Nothing -> multiLookupTrie zs t
Just t' -> map (_1 %~ (z:)) (multiLookupTrie zs t') ++ multiLookupTrie zs t
multiLookupTrieI :: Ord a => [(a,c)] -> Trie a b -> [([c],b)]
multiLookupTrieI xs t@(Trie my ch)
| null xs || null ch = maybe [] (\y -> [([],y)]) my
| otherwise = let ((z1,z2):zs) = xs in
case M.lookup z1 ch of
Nothing -> multiLookupTrieI zs t
Just t' -> map (_1 %~ (z2:)) (multiLookupTrieI zs t') ++ multiLookupTrieI zs t