Skip to content

Commit a7f5e1d

Browse files
committed
Fixed the isSubsequence function
1 parent 5038fa0 commit a7f5e1d

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

src/AlgebraicDataTypes/ChapterExercises/AsPatterns.hs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
module AlgebraicDataTypes.ChapterExercises.AsPatterns where
2-
2+
33
import Data.Char
4+
import Data.List (elemIndex)
45

56
isSubsequenceOf :: (Eq a) => [a] -> [a] -> Bool
67
isSubsequenceOf [] _ = True
78
isSubsequenceOf _ [] = False
8-
isSubsequenceOf (x:xs) ys
9-
| null ys'' = False
10-
| otherwise = isSubsequenceOf xs (ys' ++ tail ys'')
11-
where (ys', ys'') = span (/= x) ys
9+
isSubsequenceOf xs@(x:xs') (y:ys')
10+
| x == y = isSubsequenceOf xs' ys'
11+
| otherwise = isSubsequenceOf xs ys'
1212

1313
capitalizeWords :: String -> [(String, String)]
1414
capitalizeWords = map f . words

test/AlgebraicDataTypes/ChapterExercises/AsPatternsSpec.hs

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ spec = do
1414
isSubsequenceOf "blah" "wboloath" `shouldBe` True
1515
it "isSubsequenceOf \"blah\" \"wootbla\"" $ do
1616
isSubsequenceOf "blah" "wootbla" `shouldBe` False
17+
it "isSubsequenceOf \"blah\" \"halbwoot\"" $ do
18+
isSubsequenceOf "blah" "halbwoot" `shouldBe` False
1719
it "isSubsequenceOf \"abc\" \"cba\"" $ do
18-
isSubsequenceOf "abc" "cba" `shouldBe` True
20+
isSubsequenceOf "abc" "cba" `shouldBe` False
1921
describe "Test capitalizeWords" $ do
2022
it "capitalizeWords \"hello world\"" $ do
2123
capitalizeWords "hello world" `shouldBe` [("hello", "Hello"), ("world", "World")]

0 commit comments

Comments
 (0)