Last active
July 25, 2019 01:01
-
-
Save lgastako/19f0225e8bb1ad54489fce14ae69b5a9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 7 5 3 2 1 | |
5 7 4 1 2 3 | |
4 7 5 1 2 3 | |
2 6 5 4 7 | |
3 6 5 4 7 | |
4 7 5 6 3 2 1 | |
5 7 4 1 2 3 6 | |
4 7 5 1 2 3 6 | |
4 8 5 3 2 1 | |
5 8 4 1 2 3 | |
4 8 5 1 2 3 | |
4 8 6 3 2 1 | |
6 8 4 1 2 3 | |
6 8 5 3 2 1 | |
5 8 6 3 2 1 | |
6 8 5 1 2 3 | |
1 4 5 6 8 | |
2 4 5 6 8 | |
2 6 5 4 8 | |
3 6 5 4 8 | |
4 8 5 6 3 2 1 | |
4 8 6 5 3 2 1 | |
6 8 4 5 3 2 1 | |
5 8 4 1 2 3 6 | |
4 8 5 1 2 3 6 | |
6 8 4 1 2 3 5 | |
4 8 6 3 2 1 5 | |
6 8 5 4 1 2 3 | |
6 8 4 5 1 2 3 | |
4 8 6 5 1 2 3 | |
6 8 5 3 2 1 4 | |
5 8 6 3 2 1 4 | |
4 8 7 5 3 2 1 | |
4 7 8 5 3 2 1 | |
5 8 7 4 1 2 3 | |
5 7 8 4 1 2 3 | |
4 8 7 5 1 2 3 | |
4 7 8 5 1 2 3 | |
4 7 8 6 3 2 1 | |
6 8 7 4 1 2 3 | |
6 8 7 5 3 2 1 | |
5 7 8 6 3 2 1 | |
6 8 7 5 1 2 3 | |
1 4 5 6 8 7 | |
2 6 5 4 7 8 | |
2 4 5 6 8 7 | |
2 6 5 4 8 7 | |
3 6 5 4 7 8 | |
3 6 5 4 8 7 | |
5 7 4 1 2 3 6 8 | |
4 7 5 1 2 3 6 8 | |
4 7 8 6 5 3 2 1 | |
6 8 4 7 5 3 2 1 | |
6 8 7 4 5 3 2 1 | |
4 8 7 5 6 3 2 1 | |
4 7 8 5 6 3 2 1 | |
4 7 5 8 6 3 2 1 | |
5 7 4 8 6 3 2 1 | |
6 8 4 1 2 3 5 7 | |
4 8 6 3 2 1 5 7 | |
6 8 5 3 2 1 4 7 | |
5 8 6 3 2 1 4 7 | |
5 8 7 4 1 2 3 6 | |
5 7 8 4 1 2 3 6 | |
4 8 7 5 1 2 3 6 | |
4 7 8 5 1 2 3 6 | |
6 8 7 5 4 1 2 3 | |
6 8 5 7 4 1 2 3 | |
6 8 7 4 5 1 2 3 | |
6 8 4 7 5 1 2 3 | |
4 7 8 6 5 1 2 3 | |
6 8 7 4 1 2 3 5 | |
4 7 8 6 3 2 1 5 | |
6 8 7 5 3 2 1 4 | |
5 7 8 6 3 2 1 4 | |
6 9 5 3 2 1 | |
5 9 6 3 2 1 | |
6 9 5 1 2 3 | |
1 4 5 6 9 | |
2 4 5 6 9 | |
6 9 5 4 1 2 3 | |
6 9 5 3 2 1 4 | |
5 9 6 3 2 1 4 | |
5 7 4 1 2 3 6 9 | |
4 7 5 1 2 3 6 9 | |
4 7 5 9 6 3 2 1 | |
6 9 5 3 2 1 4 7 | |
5 9 6 3 2 1 4 7 | |
6 9 5 7 4 1 2 3 | |
4 8 9 5 3 2 1 | |
5 9 8 4 1 2 3 | |
4 8 9 5 1 2 3 | |
4 8 9 6 3 2 1 | |
6 9 8 4 1 2 3 | |
6 9 8 5 3 2 1 | |
6 8 9 5 3 2 1 | |
5 9 8 6 3 2 1 | |
5 8 9 6 3 2 1 | |
6 9 8 5 1 2 3 | |
6 8 9 5 1 2 3 | |
1 4 5 6 8 9 | |
1 4 5 6 9 8 | |
2 4 5 6 8 9 | |
2 6 5 4 8 9 | |
2 4 5 6 9 8 | |
3 6 5 4 8 9 | |
5 8 4 1 2 3 6 9 | |
4 8 5 1 2 3 6 9 | |
6 8 4 1 2 3 5 9 | |
4 8 6 3 2 1 5 9 | |
4 8 9 6 5 3 2 1 | |
4 8 6 9 5 3 2 1 | |
6 9 8 4 5 3 2 1 | |
4 8 9 5 6 3 2 1 | |
4 8 5 9 6 3 2 1 | |
6 9 5 3 2 1 4 8 | |
5 9 6 3 2 1 4 8 | |
5 9 8 4 1 2 3 6 | |
4 8 9 5 1 2 3 6 | |
6 9 8 5 4 1 2 3 | |
6 8 9 5 4 1 2 3 | |
6 9 5 8 4 1 2 3 | |
5 9 6 8 4 1 2 3 | |
6 9 8 4 5 1 2 3 | |
4 8 9 6 5 1 2 3 | |
4 8 6 9 5 1 2 3 | |
6 9 8 4 1 2 3 5 | |
4 8 9 6 3 2 1 5 | |
6 9 8 5 3 2 1 4 | |
6 8 9 5 3 2 1 4 | |
5 9 8 6 3 2 1 4 | |
5 8 9 6 3 2 1 4 | |
1 4 7 8 9 | |
2 4 7 8 9 | |
1 5 7 8 9 | |
1 5 9 8 7 | |
2 5 7 8 9 | |
2 5 9 8 7 | |
3 5 7 8 9 | |
3 5 9 8 7 | |
1 4 5 7 8 9 | |
1 5 4 7 8 9 | |
5 9 8 7 4 1 | |
4 7 8 9 5 1 | |
1 5 9 8 7 4 | |
1 4 5 9 8 7 | |
1 4 7 8 9 5 | |
2 4 5 7 8 9 | |
2 5 4 7 8 9 | |
5 9 8 7 4 2 | |
4 7 8 9 5 2 | |
2 5 9 8 7 4 | |
2 4 5 9 8 7 | |
2 4 7 8 9 5 | |
2 4 1 5 7 8 9 | |
1 4 2 5 7 8 9 | |
1 5 2 4 7 8 9 | |
2 5 1 4 7 8 9 | |
5 9 8 7 4 2 1 | |
4 7 8 9 5 2 1 | |
2 5 9 8 7 4 1 | |
2 4 7 8 9 5 1 | |
1 5 9 8 7 4 2 | |
5 9 8 7 4 1 2 | |
1 4 7 8 9 5 2 | |
4 7 8 9 5 1 2 | |
2 4 1 5 9 8 7 | |
1 4 2 5 9 8 7 | |
3 5 4 7 8 9 | |
4 7 8 9 5 3 | |
3 5 9 8 7 4 | |
3 5 1 4 7 8 9 | |
3 5 9 8 7 4 1 | |
1 4 7 8 9 5 3 | |
3 5 2 4 7 8 9 | |
4 7 8 9 5 3 2 | |
3 5 9 8 7 4 2 | |
5 9 8 7 4 2 3 | |
2 4 7 8 9 5 3 | |
4 7 8 9 5 2 3 | |
1 4 2 3 5 7 8 9 | |
1 5 3 2 4 7 8 9 | |
3 5 1 2 4 7 8 9 | |
3 5 2 1 4 7 8 9 | |
4 7 8 9 5 3 2 1 | |
3 5 9 8 7 4 2 1 | |
1 4 7 8 9 5 3 2 | |
3 5 9 8 7 4 1 2 | |
1 4 2 3 5 9 8 7 | |
1 5 9 8 7 4 2 3 | |
5 9 8 7 4 1 2 3 | |
1 4 7 8 9 5 2 3 | |
4 7 8 9 5 1 2 3 | |
2 6 9 8 7 | |
3 6 9 8 7 | |
6 9 8 7 4 1 | |
1 4 7 8 9 6 | |
6 9 8 7 4 2 | |
4 7 8 9 6 2 | |
2 6 9 8 7 4 | |
2 4 7 8 9 6 | |
6 9 8 7 4 2 1 | |
4 7 8 9 6 2 1 | |
2 6 9 8 7 4 1 | |
6 9 8 7 4 1 2 | |
1 4 7 8 9 6 2 | |
1 4 2 6 9 8 7 | |
4 7 8 9 6 3 | |
3 6 9 8 7 4 | |
3 6 9 8 7 4 1 | |
1 4 7 8 9 6 3 | |
3 6 2 4 7 8 9 | |
4 7 8 9 6 3 2 | |
3 6 9 8 7 4 2 | |
6 9 8 7 4 2 3 | |
2 4 7 8 9 6 3 | |
4 7 8 9 6 2 3 | |
3 6 2 1 4 7 8 9 | |
4 7 8 9 6 3 2 1 | |
3 6 9 8 7 4 2 1 | |
1 4 7 8 9 6 3 2 | |
3 6 9 8 7 4 1 2 | |
1 4 2 3 6 9 8 7 | |
6 9 8 7 4 1 2 3 | |
1 4 7 8 9 6 2 3 | |
6 9 8 7 5 1 | |
1 5 6 9 8 7 | |
1 5 7 8 9 6 | |
2 6 5 7 8 9 | |
6 9 8 7 5 2 | |
5 7 8 9 6 2 | |
2 6 9 8 7 5 | |
2 5 6 9 8 7 | |
2 6 5 9 8 7 | |
2 5 7 8 9 6 | |
6 9 8 7 5 2 1 | |
5 7 8 9 6 2 1 | |
2 6 9 8 7 5 1 | |
6 9 8 7 5 1 2 | |
1 5 7 8 9 6 2 | |
1 5 2 6 9 8 7 | |
3 6 5 7 8 9 | |
6 9 8 7 5 3 | |
5 7 8 9 6 3 | |
3 6 9 8 7 5 | |
3 5 6 9 8 7 | |
3 6 5 9 8 7 | |
3 5 7 8 9 6 | |
3 6 9 8 7 5 1 | |
1 5 7 8 9 6 3 | |
1 5 3 6 9 8 7 | |
2 6 3 5 7 8 9 | |
3 6 2 5 7 8 9 | |
6 9 8 7 5 3 2 | |
5 7 8 9 6 3 2 | |
3 6 9 8 7 5 2 | |
3 5 7 8 9 6 2 | |
2 6 9 8 7 5 3 | |
6 9 8 7 5 2 3 | |
2 5 7 8 9 6 3 | |
5 7 8 9 6 2 3 | |
3 5 2 6 9 8 7 | |
2 5 3 6 9 8 7 | |
3 6 2 5 9 8 7 | |
2 6 3 5 9 8 7 | |
3 6 2 1 5 7 8 9 | |
6 9 8 7 5 3 2 1 | |
5 7 8 9 6 3 2 1 | |
3 6 9 8 7 5 2 1 | |
3 5 7 8 9 6 2 1 | |
1 5 7 8 9 6 3 2 | |
3 6 9 8 7 5 1 2 | |
3 5 1 2 6 9 8 7 | |
1 5 2 3 6 9 8 7 | |
1 5 3 2 6 9 8 7 | |
3 6 2 1 5 9 8 7 | |
6 9 8 7 5 1 2 3 | |
1 5 7 8 9 6 2 3 | |
6 9 8 7 5 4 1 | |
4 7 8 9 6 5 1 | |
6 9 8 7 4 5 1 | |
6 9 8 7 5 1 4 | |
1 5 6 9 8 7 4 | |
1 4 5 6 9 8 7 | |
1 4 7 8 9 6 5 | |
6 9 8 7 4 1 5 | |
1 4 7 8 9 5 6 | |
1 4 5 7 8 9 6 | |
1 5 4 7 8 9 6 | |
2 6 5 4 7 8 9 | |
6 9 8 7 5 4 2 | |
4 7 8 9 6 5 2 | |
6 9 8 7 4 5 2 | |
4 7 8 9 5 6 2 | |
2 6 9 8 7 5 4 | |
6 9 8 7 5 2 4 | |
2 5 6 9 8 7 4 | |
2 6 5 9 8 7 4 | |
5 7 8 9 6 2 4 | |
2 4 5 6 9 8 7 | |
2 4 7 8 9 6 5 | |
4 7 8 9 6 2 5 | |
2 6 9 8 7 4 5 | |
6 9 8 7 4 2 5 | |
2 4 7 8 9 5 6 | |
4 7 8 9 5 2 6 | |
2 4 5 7 8 9 6 | |
2 5 4 7 8 9 6 | |
5 9 8 7 4 2 6 | |
1 4 2 6 5 7 8 9 | |
1 5 6 2 4 7 8 9 | |
2 6 5 1 4 7 8 9 | |
6 9 8 7 5 4 2 1 | |
4 7 8 9 6 5 2 1 | |
6 9 8 7 4 5 2 1 | |
4 7 8 9 5 6 2 1 | |
2 6 9 8 7 5 4 1 | |
6 9 8 7 5 2 4 1 | |
2 5 6 9 8 7 4 1 | |
2 6 5 9 8 7 4 1 | |
5 7 8 9 6 2 4 1 | |
2 4 7 8 9 6 5 1 | |
4 7 8 9 6 2 5 1 | |
2 6 9 8 7 4 5 1 | |
6 9 8 7 4 2 5 1 | |
6 9 8 7 5 1 4 2 | |
6 9 8 7 5 4 1 2 | |
1 5 6 9 8 7 4 2 | |
1 4 7 8 9 6 5 2 | |
4 7 8 9 6 5 1 2 | |
6 9 8 7 4 1 5 2 | |
6 9 8 7 4 5 1 2 | |
1 4 7 8 9 5 6 2 | |
1 4 5 7 8 9 6 2 | |
1 5 4 7 8 9 6 2 | |
2 4 1 5 6 9 8 7 | |
1 4 2 5 6 9 8 7 | |
1 4 5 2 6 9 8 7 | |
1 5 4 2 6 9 8 7 | |
1 4 2 6 5 9 8 7 | |
2 6 9 8 7 5 1 4 | |
6 9 8 7 5 1 2 4 | |
6 9 8 7 5 2 1 4 | |
1 5 7 8 9 6 2 4 | |
5 7 8 9 6 2 1 4 | |
1 5 2 6 9 8 7 4 | |
1 4 7 8 9 5 2 6 | |
4 7 8 9 5 1 2 6 | |
2 4 1 5 7 8 9 6 | |
1 4 2 5 7 8 9 6 | |
1 5 9 8 7 4 2 6 | |
5 9 8 7 4 1 2 6 | |
2 5 1 4 7 8 9 6 | |
1 5 2 4 7 8 9 6 | |
1 4 7 8 9 6 2 5 | |
4 7 8 9 6 2 1 5 | |
1 4 2 6 9 8 7 5 | |
2 6 9 8 7 4 1 5 | |
6 9 8 7 4 1 2 5 | |
6 9 8 7 4 2 1 5 | |
3 6 5 4 7 8 9 | |
4 7 8 9 6 5 3 | |
6 9 8 7 4 5 3 | |
4 7 8 9 5 6 3 | |
3 6 9 8 7 5 4 | |
3 5 6 9 8 7 4 | |
3 6 5 9 8 7 4 | |
4 7 8 9 6 3 5 | |
3 6 9 8 7 4 5 | |
4 7 8 9 5 3 6 | |
3 5 4 7 8 9 6 | |
3 6 5 1 4 7 8 9 | |
3 6 9 8 7 5 4 1 | |
3 5 6 9 8 7 4 1 | |
3 6 5 9 8 7 4 1 | |
4 7 8 9 6 3 5 1 | |
3 6 9 8 7 4 5 1 | |
1 4 7 8 9 6 5 3 | |
6 9 8 7 4 1 5 3 | |
1 4 7 8 9 5 6 3 | |
1 4 5 7 8 9 6 3 | |
1 5 4 7 8 9 6 3 | |
1 4 5 3 6 9 8 7 | |
3 6 9 8 7 5 1 4 | |
1 5 3 6 9 8 7 4 | |
1 4 7 8 9 5 3 6 | |
3 5 1 4 7 8 9 6 | |
1 4 7 8 9 6 3 5 | |
3 6 9 8 7 4 1 5 | |
3 6 2 4 5 7 8 9 | |
2 6 3 5 4 7 8 9 | |
3 6 2 5 4 7 8 9 | |
3 6 5 2 4 7 8 9 | |
3 5 6 2 4 7 8 9 | |
4 7 8 9 6 5 3 2 | |
6 9 8 7 4 5 3 2 | |
4 7 8 9 5 6 3 2 | |
3 6 9 8 7 5 4 2 | |
3 5 6 9 8 7 4 2 | |
3 6 5 9 8 7 4 2 | |
4 7 8 9 6 3 5 2 | |
3 6 9 8 7 4 5 2 | |
4 7 8 9 5 3 6 2 | |
3 5 4 7 8 9 6 2 | |
6 9 8 7 5 4 2 3 | |
2 4 7 8 9 6 5 3 | |
4 7 8 9 6 2 5 3 | |
4 7 8 9 6 5 2 3 | |
2 6 9 8 7 4 5 3 | |
6 9 8 7 4 2 5 3 | |
6 9 8 7 4 5 2 3 | |
2 4 7 8 9 5 6 3 | |
4 7 8 9 5 2 6 3 | |
4 7 8 9 5 6 2 3 | |
2 4 5 7 8 9 6 3 | |
2 5 4 7 8 9 6 3 | |
5 9 8 7 4 2 6 3 | |
2 4 5 3 6 9 8 7 | |
3 5 4 2 6 9 8 7 | |
3 6 2 4 5 9 8 7 | |
3 6 9 8 7 5 2 4 | |
6 9 8 7 5 3 2 4 | |
3 6 2 5 9 8 7 4 | |
2 6 3 5 9 8 7 4 | |
3 5 7 8 9 6 2 4 | |
5 7 8 9 6 3 2 4 | |
3 5 2 6 9 8 7 4 | |
2 5 3 6 9 8 7 4 | |
2 4 7 8 9 5 3 6 | |
4 7 8 9 5 2 3 6 | |
4 7 8 9 5 3 2 6 | |
3 5 9 8 7 4 2 6 | |
5 9 8 7 4 2 3 6 | |
3 5 2 4 7 8 9 6 | |
2 4 7 8 9 6 3 5 | |
4 7 8 9 6 2 3 5 | |
4 7 8 9 6 3 2 5 | |
3 6 9 8 7 4 2 5 | |
6 9 8 7 4 2 3 5 | |
3 6 2 4 7 8 9 5 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SwipeCodes where | |
import Data.List | |
-- [x] Between 5 to 8 "digits" | |
-- [x] At least 1 horizontal line was filled | |
-- [x] It spanned all 3 horizontal lines | |
-- [x] It spanned all 3 vertical | |
-- [x] It started downward (may have come back up) | |
-- [x] You can't use the same node twice and | |
-- [x] you can't go around a node. | |
saveCodes :: FilePath -> IO () | |
saveCodes path = writeFile path (unlines . map render $ codes) | |
render :: [Int] -> String | |
render = unwords . map show | |
codes :: [[Int]] | |
codes = subsequences [1..9] | |
|> concatMap permutations | |
|> filter length5to8 | |
|> filter hasHorizontalLine | |
-- |> filter spans3Horizontal -- redundant with hasHorizontalLine | |
|> filter spans3Vertical | |
|> filter startsDownward | |
|> filter allConnected | |
length5to8 :: [Int] -> Bool | |
length5to8 = (&&) | |
<$> ((>= 5) . length) | |
<*> ((<= 8) . length) | |
hasHorizontalLine :: [Int] -> Bool | |
hasHorizontalLine xs = any (`isInfixOf` xs) horizontalLines | |
where | |
horizontalLines = horizontalsForward ++ horizontalsBackward | |
horizontalsForward = [ [1, 2, 3] | |
, [4, 5, 6] | |
, [7, 8, 9] | |
] | |
horizontalsBackward = map reverse horizontalsForward | |
spans3Vertical :: [Int] -> Bool | |
spans3Vertical xs = True | |
&& any (`elem` xs) [1, 2, 3] | |
&& any (`elem` xs) [4, 5, 6] | |
&& any (`elem` xs) [7, 8, 9] | |
spans3Horizontal :: [Int] -> Bool | |
spans3Horizontal xs = True | |
&& any (`elem` xs) [1, 4, 7] | |
&& any (`elem` xs) [2, 5, 8] | |
&& any (`elem` xs) [3, 6, 9] | |
startsDownward :: [Int] -> Bool | |
startsDownward (x:y:_) = (x,y) `elem` | |
[ (1, 4), (1, 5), (2, 4), (2, 5), (2, 6), (3, 5), (3, 6) | |
, (4, 7), (4, 8), (5, 7), (5, 8), (5, 9), (6, 8), (6, 9) | |
] | |
allConnected :: [Int] -> Bool | |
allConnected xs = and $ zipWith connected xs (tail xs) | |
where | |
connected x y = (x, y) `elem` neighbors || (y, x) `elem` neighbors | |
neighbors :: [(Int, Int)] | |
neighbors = | |
[ (1, 2), (1, 4), (1, 5) | |
, (2, 3), (2, 4), (2, 5), (2, 6) | |
, (3, 5), (3, 6) | |
, (4, 5), (4, 7), (4, 8) | |
, (5, 6), (5, 7), (5, 8), (5, 9) | |
, (6, 8), (6, 9) | |
, (7, 8) | |
, (8, 9) | |
] | |
(|>) = flip ($) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For https://old.reddit.com/r/programmingrequests/comments/chekl5/can_anyone_help_me_program_a_visual_list_of_all/