import Data
.List
(foldl')
type Collection a = [[a]]
bestMatch :: (Eq a) => [a] -> Collection a -> Maybe [a]
bestMatch x c = foldl' f Nothing c where
f Nothing y = if (isMatch y) then Just y else Nothing
f jold
@(Just old
) y
= if ((isMatch y
) && (length y
> length old
)) then Just y
else jold
main
= print $ bestMatch
[1,2,3,3] [[1],[1,2,3],[1,2],[1,2,3,2],[1,2,3,4]]
aW1wb3J0IERhdGEuTGlzdCAoZm9sZGwnKQoKdHlwZSBDb2xsZWN0aW9uIGEgID0gW1thXV0KCmJlc3RNYXRjaCA6OiAoRXEgYSkgPT4gW2FdIC0+IENvbGxlY3Rpb24gYSAtPiBNYXliZSBbYV0KYmVzdE1hdGNoIHggYyA9IGZvbGRsJyBmIE5vdGhpbmcgYyB3aGVyZQogIGYgTm90aGluZyB5ID0gaWYgKGlzTWF0Y2ggeSkgdGhlbiBKdXN0IHkgZWxzZSBOb3RoaW5nCiAgZiBqb2xkQChKdXN0IG9sZCkgeSA9IGlmICgoaXNNYXRjaCB5KSAmJiAobGVuZ3RoIHkgPiBsZW5ndGggb2xkKSkgdGhlbiBKdXN0IHkgZWxzZSBqb2xkCiAgaXNNYXRjaCB5ID0gdGFrZSAobGVuZ3RoIHkpIHggPT0gIHkKCm1haW4gPSBwcmludCAkIGJlc3RNYXRjaCBbMSwyLDMsM10gW1sxXSxbMSwyLDNdLFsxLDJdLFsxLDIsMywyXSxbMSwyLDMsNF1dCg==