diff --git a/.gitignore b/.gitignore index 0721bc5..c368d45 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -!*.hs +.stack-work/ +*~ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..342c588 --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +Copyright Author name here (c) 2022 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Author name here nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3275918 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# advent-of-code-stack diff --git a/advent-of-code-stack.cabal b/advent-of-code-stack.cabal new file mode 100644 index 0000000..4e1f04b --- /dev/null +++ b/advent-of-code-stack.cabal @@ -0,0 +1,48 @@ +cabal-version: 1.12 + +-- This file has been generated from package.yaml by hpack version 0.35.0. +-- +-- see: https://github.com/sol/hpack + +name: advent-of-code-stack +version: 0.1.0.0 +description: Please see the README on GitHub at +homepage: https://github.com/githubuser/advent-of-code-stack#readme +bug-reports: https://github.com/githubuser/advent-of-code-stack/issues +author: Author name here +maintainer: example@example.com +copyright: 2022 Author name here +license: BSD3 +license-file: LICENSE +build-type: Simple +extra-source-files: + README.md + CHANGELOG.md + +source-repository head + type: git + location: https://github.com/githubuser/advent-of-code-stack + +executable advent-of-code-stack-exe + main-is: one.hs + other-modules: + Main + Paths_advent_of_code_stack + hs-source-dirs: + app + ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N + build-depends: + base >=4.7 && <5 + default-language: Haskell2010 + +executable seven + main-is: seven.hs + other-modules: + Main + Paths_advent_of_code_stack + hs-source-dirs: + app + ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N + build-depends: + base >=4.7 && <5 + default-language: Haskell2010 diff --git a/advent-of-code.cabal b/advent-of-code.cabal deleted file mode 100644 index d473d1c..0000000 --- a/advent-of-code.cabal +++ /dev/null @@ -1,35 +0,0 @@ -cabal-version: 2.4 -name: advent-of-code -version: 0.1.0.0 - --- A short (one-line) description of the package. --- synopsis: - --- A longer description of the package. --- description: - --- A URL where users can report bugs. --- bug-reports: - --- The license under which the package is released. --- license: -author: qvalentin -maintainer: valentin.theodor@web.de - --- A copyright notice. --- copyright: --- category: -extra-source-files: CHANGELOG.md - -executable one - main-is: one.hs - - -- Modules included in this executable, other than Main. - -- other-modules: - - -- LANGUAGE extensions used by modules in this package. - -- other-extensions: - build-depends: base ^>=4.14.3.0 - hs-source-dirs: app - default-language: Haskell2010 - ghc-options: -dynamic -O2 diff --git a/app/seven.hs b/app/seven.hs index 620c519..2116389 100644 --- a/app/seven.hs +++ b/app/seven.hs @@ -2,7 +2,6 @@ import Control.Monad -data FS = FS [Inode] data Inode = Dir Name [Inode] | File Name Size deriving(Show) type Name = String type Size = Int @@ -60,26 +59,45 @@ initZipper = (Dir "/" [],[]) data InodeSize = DirS Size | FileS Size deriving(Show) -getSize (DirS s)= s +getSize (DirS s )=s getSize (FileS s)=s -flattenToSmallDirs :: Inode -> [InodeSize] +flattenToSmallDirs :: Inode -> (InodeSize,[InodeSize]) flattenToSmallDirs (Dir _ children) = - let childSizes =join $ map flattenToSmallDirs children - currentSize=(sum $ map getSize $ childSizes) in - (DirS currentSize):(filter isDir childSizes ) -flattenToSmallDirs (File _ size) = [FileS size] + let childSizes =map flattenToSmallDirs children + currentSize =(sum $ map getSize $ map fst childSizes) in + (DirS currentSize ,filter isDir $ join $ map combineOwnWithChildSize childSizes ) +flattenToSmallDirs (File _ size) = (FileS size,[]) + +combineOwnWithChildSize :: (InodeSize,[InodeSize]) -> [InodeSize] +combineOwnWithChildSize (own,children) = own:children filterSmallDirs :: [InodeSize] -> [Size] filterSmallDirs ((DirS s):rest) = if (s<100000) then s:(filterSmallDirs rest) else filterSmallDirs rest -filterSmallDirs ((FileS s):rest) = filterSmallDirs rest +filterSmallDirs ((FileS _):rest) = filterSmallDirs rest filterSmallDirs [] = [] -isDir (DirS s)=True -isDir (FileS s)=False +isDir :: InodeSize -> Bool +isDir (DirS _)= True +isDir (FileS _)=False -main = do +mainP1 :: IO () +mainP1 = do content <- readFile "seven-input.txt" let statements = map parseEither $ drop 1 $ lines content let a = foldl foldFunction initZipper statements - print $ sum $ filterSmallDirs $ flattenToSmallDirs $ fst $ fsUpToRoot a + print $ sum $ filterSmallDirs $ combineOwnWithChildSize $ flattenToSmallDirs $ fst $ fsUpToRoot a + + +mainP2::IO () +mainP2 = do + content <- readFile "seven-input.txt" + let statements = map parseEither $ drop 1 $ lines content + a = foldl foldFunction initZipper statements + (rootSize, dirSizes) =flattenToSmallDirs $ fst $ fsUpToRoot a + currentlyFree=(70000000- getSize rootSize) + requiredCleanup = 30000000-currentlyFree + largeEnoughDirs = filter (\s -> s >= requiredCleanup) $ map getSize dirSizes + print $ minimum largeEnoughDirs + +main = mainP2 diff --git a/four-easy.hs b/four-easy.hs deleted file mode 100644 index bbac13a..0000000 --- a/four-easy.hs +++ /dev/null @@ -1,31 +0,0 @@ -import Control.Monad -import Data.Char - -parseLine :: String -> [[Int]] -parseLine line = [parseAssignment $ takeWhile (/= ',') line, - parseAssignment $ drop 1 $ dropWhile (',' /= ) line] - -parseAssignment :: String -> [Int] -parseAssignment assignment = do - let first = takeWhile ('-' /=) assignment - let second = drop 1 $ dropWhile ('-' /=) assignment - [(read first).. (read second)] - -isIncludedElseWhere :: [[Int]] -> [Int] -> [[Int]] -> Int -> Int -isIncludedElseWhere previous current [] count=count -isIncludedElseWhere previous current next count=do - let found = (isIncluded current previous && isIncluded current next) - (if found then 1 else 0) + - (isIncludedElseWhere (current:previous) (head next) (tail next) count) - -isIncluded :: [Int] -> [[Int]] -> Bool -isIncluded current list = any includes list - where - includes :: [Int] -> Bool - includes range' = all (`elem` range') current - - -main = do - input <- readFile "four-input2.txt" - let lists= ( join $ map (parseLine) $ lines input) - print $ isIncludedElseWhere [] (head lists) (tail lists) 0 diff --git a/four-input.txt b/four-input.txt new file mode 100644 index 0000000..3c07591 --- /dev/null +++ b/four-input.txt @@ -0,0 +1,1000 @@ +71-97,71-72 +60-97,20-95 +20-59,58-59 +24-83,3-82 +48-96,33-47 +49-49,10-50 +48-86,6-85 +71-72,27-72 +46-83,29-84 +10-52,1-53 +38-84,37-39 +48-48,39-48 +42-87,43-96 +1-99,78-98 +23-39,1-38 +30-30,13-30 +8-37,7-38 +13-85,57-84 +1-97,2-98 +7-99,6-98 +14-99,13-91 +2-87,8-88 +51-66,66-66 +66-98,97-98 +41-73,84-85 +37-95,36-94 +4-22,11-38 +25-90,25-50 +50-97,51-89 +10-86,9-86 +78-93,56-77 +56-84,56-79 +43-48,43-49 +43-96,98-98 +66-76,59-68 +12-15,11-59 +3-85,12-84 +50-74,50-75 +1-7,2-6 +10-11,11-58 +15-96,16-99 +20-87,23-88 +39-79,39-78 +96-98,7-97 +14-74,13-14 +3-99,98-99 +43-47,43-62 +79-83,75-84 +10-13,15-15 +8-91,8-9 +68-74,47-97 +74-88,75-79 +48-97,49-97 +58-96,58-98 +28-60,61-73 +3-99,28-87 +89-90,91-91 +10-40,4-10 +2-97,1-97 +22-24,22-24 +75-76,55-76 +42-83,42-82 +35-95,25-95 +10-27,9-11 +12-83,13-37 +37-97,36-38 +3-30,4-30 +31-51,31-32 +26-28,27-46 +44-46,45-90 +19-82,27-77 +44-92,43-85 +22-54,5-53 +6-98,4-99 +4-4,4-40 +30-99,30-31 +59-59,60-90 +21-95,19-94 +22-43,21-67 +69-72,72-72 +70-94,71-93 +13-15,13-14 +23-90,22-89 +93-94,4-94 +1-21,3-20 +4-68,5-69 +27-29,28-95 +47-47,47-48 +26-54,25-55 +16-81,80-80 +31-33,32-60 +25-82,26-51 +16-73,72-72 +95-95,33-95 +12-72,13-43 +36-95,35-36 +19-94,9-43 +7-7,5-15 +9-96,9-99 +9-91,8-8 +46-62,34-85 +83-84,31-84 +52-56,46-63 +44-85,59-86 +43-70,43-70 +21-38,39-78 +58-58,6-57 +1-99,99-99 +12-90,40-89 +34-67,35-73 +15-97,14-96 +46-98,46-96 +52-70,42-77 +4-23,3-23 +55-82,81-83 +48-84,25-83 +31-92,92-98 +6-93,5-98 +14-39,15-38 +17-58,17-18 +7-16,24-94 +16-71,85-97 +1-95,16-86 +32-60,57-68 +74-96,55-97 +36-95,97-97 +76-78,27-77 +47-84,59-75 +15-37,4-16 +1-97,1-98 +27-78,28-77 +97-98,10-94 +37-97,97-97 +89-89,4-90 +21-28,21-94 +41-90,4-41 +1-93,93-96 +99-99,6-99 +11-13,12-95 +16-22,4-22 +7-89,90-90 +4-58,19-79 +9-84,68-84 +80-85,34-84 +1-70,71-84 +64-74,74-74 +58-80,58-70 +7-59,7-8 +17-19,9-17 +22-34,34-84 +66-76,66-66 +97-99,17-95 +47-97,39-45 +35-36,35-88 +9-79,41-80 +10-11,10-41 +4-14,15-90 +95-96,1-96 +36-92,69-93 +1-7,8-84 +32-39,32-39 +8-94,7-9 +34-50,7-52 +71-94,71-96 +2-47,1-95 +4-5,8-93 +34-66,21-65 +26-95,26-97 +60-82,59-61 +39-96,39-98 +15-22,22-50 +12-82,13-13 +15-63,62-62 +1-99,2-55 +11-26,16-91 +24-76,76-77 +3-6,7-92 +62-93,61-92 +33-83,32-84 +4-99,2-2 +11-21,22-98 +45-46,45-64 +26-30,21-35 +78-99,29-77 +55-73,5-91 +3-4,14-98 +3-93,92-92 +51-77,77-77 +7-90,90-90 +4-67,4-68 +10-95,10-96 +79-89,80-83 +3-86,17-87 +32-77,32-78 +31-72,10-25 +48-50,2-53 +29-58,28-59 +75-77,15-76 +2-76,1-75 +15-15,14-63 +75-85,76-96 +42-97,15-28 +20-98,97-98 +21-64,21-64 +11-95,95-96 +68-96,69-79 +5-89,6-90 +38-72,73-90 +43-97,42-98 +67-83,74-84 +69-87,69-87 +10-12,11-60 +12-67,11-85 +1-3,6-88 +8-80,17-81 +3-47,2-58 +74-74,37-75 +47-99,47-48 +21-78,6-51 +86-87,16-87 +3-86,87-87 +92-96,17-91 +54-85,54-87 +23-24,23-87 +62-91,62-92 +14-49,14-50 +29-93,94-97 +2-3,2-91 +53-57,57-57 +15-44,43-44 +1-37,2-37 +8-19,23-24 +19-20,6-20 +1-7,6-46 +3-26,1-77 +3-6,3-47 +30-80,96-96 +23-70,69-69 +51-52,52-89 +42-82,83-89 +86-97,13-86 +16-45,1-1 +14-77,4-13 +15-81,81-81 +87-87,30-88 +89-89,30-88 +21-22,21-95 +90-94,23-89 +67-67,1-66 +19-99,43-99 +2-97,5-98 +6-78,6-62 +8-9,8-9 +1-13,1-9 +91-95,92-95 +68-86,69-96 +4-26,25-68 +17-96,18-96 +65-65,64-65 +2-99,3-98 +24-97,25-68 +36-57,7-35 +52-89,87-88 +3-96,3-3 +2-34,2-18 +82-96,82-98 +29-30,4-30 +32-73,31-73 +72-98,99-99 +12-32,11-57 +11-86,7-9 +81-82,5-82 +8-94,93-94 +45-68,57-61 +49-50,24-50 +8-78,44-91 +28-29,29-98 +50-82,4-48 +71-71,20-70 +6-17,23-58 +61-73,23-70 +74-90,36-95 +6-14,9-12 +16-78,2-9 +2-92,2-90 +32-40,39-41 +69-69,44-69 +22-59,21-50 +30-66,30-67 +17-97,54-98 +89-97,84-96 +11-93,11-96 +55-80,80-84 +59-87,59-95 +4-81,9-80 +4-96,1-95 +21-95,21-94 +7-40,39-40 +5-98,5-92 +30-32,31-53 +10-88,11-88 +5-36,36-36 +97-98,16-98 +12-83,10-13 +19-68,20-67 +42-42,11-42 +9-11,10-67 +10-88,9-10 +12-70,12-13 +30-69,37-66 +1-95,2-6 +97-98,12-98 +40-46,41-47 +28-91,29-73 +1-5,6-82 +82-92,4-82 +10-91,11-92 +21-93,92-92 +14-58,57-58 +8-79,7-9 +27-94,26-27 +13-22,23-99 +11-11,17-64 +19-71,18-88 +1-13,1-3 +50-68,49-67 +13-14,13-37 +40-90,40-61 +21-95,22-95 +38-39,38-46 +44-95,64-81 +56-57,2-57 +64-85,7-63 +4-99,3-99 +32-90,90-98 +43-63,42-44 +58-58,43-57 +79-80,27-78 +27-72,1-26 +89-91,39-90 +31-43,43-43 +71-90,71-90 +13-95,14-96 +17-77,77-77 +60-62,59-65 +33-35,7-50 +2-8,5-5 +24-61,24-25 +6-74,73-73 +18-18,20-94 +29-54,41-55 +4-43,5-43 +39-69,43-70 +47-48,47-79 +5-6,6-85 +12-12,12-12 +12-91,12-90 +44-64,66-69 +47-58,46-58 +60-99,79-99 +56-86,86-86 +8-98,1-7 +59-59,10-58 +19-41,42-97 +76-94,6-95 +20-69,68-99 +36-63,35-36 +2-15,3-14 +16-28,15-17 +75-92,40-71 +4-61,11-62 +14-66,14-15 +6-70,29-69 +95-96,9-96 +68-89,68-69 +2-75,1-74 +97-97,12-97 +58-86,22-87 +3-4,3-97 +21-68,49-69 +88-88,32-87 +45-93,46-89 +12-92,12-93 +51-75,71-71 +24-29,28-29 +5-6,5-71 +33-34,33-80 +55-94,94-94 +50-64,50-63 +55-92,82-86 +32-34,33-47 +9-13,12-78 +5-99,35-57 +25-53,6-24 +7-85,6-96 +27-72,15-73 +61-74,36-95 +27-62,59-61 +4-82,4-86 +23-79,24-26 +24-43,17-44 +43-74,42-44 +39-84,38-99 +55-85,54-57 +2-78,1-3 +20-71,19-46 +25-38,25-26 +49-77,49-76 +1-2,1-68 +12-21,11-65 +17-82,17-56 +8-92,14-93 +1-52,4-51 +78-78,2-70 +9-42,8-41 +33-64,32-67 +22-68,22-61 +7-82,4-8 +24-42,36-37 +96-96,30-95 +68-68,14-67 +13-78,78-78 +39-70,17-38 +62-93,63-93 +19-64,19-64 +15-83,16-44 +33-34,34-49 +2-65,58-64 +5-53,4-84 +53-54,53-74 +3-58,1-65 +2-5,9-15 +3-39,21-40 +54-57,54-56 +25-62,25-61 +12-94,10-10 +74-75,74-89 +14-85,13-29 +4-76,3-88 +5-55,4-55 +55-93,54-93 +13-48,9-12 +23-56,23-24 +32-71,32-40 +23-94,22-24 +1-99,98-98 +22-75,31-44 +7-96,7-97 +11-12,14-34 +4-98,3-5 +58-94,59-94 +13-70,13-88 +38-40,20-39 +2-88,58-87 +35-81,4-81 +31-82,81-81 +24-93,8-25 +19-96,95-98 +18-64,19-65 +22-40,31-39 +43-75,81-82 +16-27,1-28 +7-28,6-28 +71-79,71-72 +1-99,11-98 +11-12,11-97 +2-75,3-76 +21-79,80-91 +5-49,5-6 +54-55,16-55 +12-97,12-96 +42-83,73-82 +61-84,83-84 +33-82,83-83 +42-85,43-86 +27-71,26-71 +39-39,8-38 +20-25,17-24 +98-99,15-96 +4-92,4-92 +34-82,34-99 +39-43,9-44 +17-29,30-91 +1-98,97-98 +25-92,24-92 +44-68,45-67 +7-22,7-62 +56-95,97-99 +41-79,41-42 +48-89,48-96 +46-96,95-97 +18-88,18-19 +86-87,9-87 +1-1,1-97 +91-97,65-92 +15-80,15-26 +46-98,60-82 +45-70,44-46 +16-83,16-83 +37-55,54-60 +7-57,8-16 +9-27,70-88 +8-72,7-28 +90-91,17-83 +2-64,3-93 +21-46,10-38 +33-88,33-89 +89-90,87-90 +58-59,57-61 +26-94,25-93 +35-48,35-70 +4-75,5-75 +19-22,18-31 +4-94,4-98 +11-74,20-75 +40-67,17-36 +21-22,21-96 +7-43,22-35 +21-89,88-89 +3-44,44-45 +41-62,41-42 +34-60,37-59 +14-69,13-15 +28-76,22-22 +12-51,35-52 +13-98,59-70 +62-91,62-96 +7-88,87-89 +31-32,31-47 +4-99,5-99 +6-9,10-54 +16-33,33-33 +5-97,4-98 +10-52,52-56 +7-8,5-9 +39-66,39-46 +10-45,10-45 +37-89,37-92 +30-31,30-90 +49-82,25-48 +59-71,61-66 +73-87,19-72 +14-97,14-97 +4-63,62-84 +3-97,2-4 +7-64,8-65 +15-16,15-96 +19-66,20-60 +19-35,34-47 +10-10,9-59 +7-9,8-9 +62-99,62-80 +7-92,7-88 +11-42,41-41 +2-2,2-70 +2-68,69-69 +41-81,41-82 +67-96,99-99 +91-93,45-86 +5-87,86-91 +9-13,1-4 +1-97,98-98 +5-27,5-26 +68-86,68-68 +30-40,31-40 +40-81,81-92 +1-91,3-63 +11-96,37-84 +18-61,14-17 +12-75,15-82 +31-52,23-53 +2-74,6-82 +94-95,10-95 +54-54,50-53 +37-68,37-50 +27-75,26-76 +9-30,8-10 +46-74,68-68 +26-39,18-50 +44-45,39-39 +96-97,67-95 +30-90,75-89 +30-85,6-86 +90-92,58-91 +33-36,32-36 +65-96,65-66 +35-69,59-63 +27-47,26-27 +16-86,74-90 +46-78,78-79 +22-85,22-86 +95-95,14-94 +58-59,17-59 +33-58,33-72 +75-75,41-75 +15-35,36-49 +20-90,27-91 +8-69,9-70 +64-99,65-84 +5-80,1-80 +1-2,2-99 +23-32,28-29 +54-56,53-61 +13-56,55-56 +86-87,5-67 +6-88,6-72 +26-95,26-96 +75-85,4-75 +1-44,1-44 +4-7,20-50 +5-96,99-99 +19-69,18-69 +38-91,92-98 +99-99,17-97 +11-22,10-27 +14-76,12-97 +3-54,2-53 +46-81,82-91 +14-15,33-99 +34-35,17-35 +5-79,2-63 +10-57,9-74 +16-38,39-89 +83-86,30-82 +9-72,8-35 +10-70,69-70 +51-86,81-91 +4-72,4-71 +31-91,20-28 +33-98,30-32 +27-87,86-87 +45-45,47-88 +5-57,5-47 +16-90,15-89 +21-99,18-85 +2-34,33-68 +44-58,35-57 +8-65,8-66 +15-39,16-40 +47-67,3-48 +18-84,19-84 +4-98,99-99 +34-77,34-76 +50-50,50-63 +98-99,2-99 +41-95,41-42 +34-48,35-48 +85-94,95-96 +13-38,22-38 +81-82,18-81 +8-86,22-86 +62-97,34-70 +26-73,25-73 +53-58,35-53 +58-80,79-81 +14-41,7-13 +2-21,4-22 +12-98,11-97 +7-73,6-73 +1-94,1-96 +26-82,25-27 +23-76,45-77 +7-78,7-78 +29-72,72-72 +7-8,7-37 +12-24,13-25 +88-91,32-89 +17-76,16-23 +23-40,2-14 +99-99,15-88 +8-85,2-86 +10-89,18-90 +8-97,7-93 +8-98,8-97 +2-12,3-63 +90-90,4-90 +7-23,15-22 +50-96,9-26 +10-80,4-9 +1-85,84-85 +20-22,21-70 +20-83,4-21 +8-32,7-33 +25-45,34-46 +5-34,34-97 +19-91,90-91 +16-96,78-95 +9-64,10-63 +7-8,8-55 +32-50,2-31 +4-16,16-16 +8-99,44-97 +48-73,58-74 +50-80,49-49 +57-58,29-58 +72-76,72-74 +59-75,75-85 +19-98,34-97 +7-94,99-99 +2-95,3-95 +61-78,61-79 +96-98,13-97 +27-82,50-90 +98-99,4-99 +2-95,1-88 +5-66,3-70 +13-26,23-42 +25-55,24-55 +56-56,56-56 +50-98,97-97 +33-85,3-32 +6-45,46-64 +6-57,59-88 +64-72,64-65 +30-92,30-92 +5-46,1-5 +5-89,4-70 +16-69,16-68 +4-88,4-81 +4-94,3-93 +44-47,44-46 +21-38,21-46 +81-86,80-86 +41-96,64-87 +37-73,37-73 +15-75,1-99 +2-36,2-35 +3-94,1-2 +3-87,87-88 +9-9,7-9 +12-97,96-98 +42-89,88-89 +29-85,30-50 +3-4,3-94 +57-92,58-93 +16-95,2-8 +1-98,10-90 +31-65,31-72 +5-87,4-5 +40-45,46-75 +88-95,46-98 +26-87,8-17 +24-27,23-27 +12-99,12-97 +5-99,6-99 +68-77,31-42 +68-91,68-87 +35-35,5-35 +2-66,2-3 +20-32,20-33 +8-88,6-88 +8-82,9-81 +10-97,11-97 +12-59,13-59 +17-32,23-63 +14-15,15-19 +99-99,21-89 +94-99,36-93 +60-65,43-67 +8-97,9-58 +10-52,27-32 +85-91,84-90 +34-88,5-87 +18-43,15-17 +4-99,3-99 +2-97,18-79 +16-56,40-84 +5-5,7-91 +11-97,11-99 +76-77,77-77 +11-90,94-97 +22-23,1-23 +6-43,5-99 +7-85,84-85 +11-12,12-92 +8-89,6-75 +44-64,45-63 +51-95,8-29 +21-54,20-77 +20-87,20-84 +11-25,24-24 +52-54,52-55 +15-16,19-66 +54-91,13-53 +35-98,35-41 +47-48,6-48 +83-89,82-83 +27-83,26-28 +38-92,93-96 +51-76,51-63 +1-3,7-13 +10-96,11-47 +58-98,2-95 +69-69,61-73 +4-89,2-3 +7-58,3-15 +76-93,8-94 +5-20,4-19 +16-23,16-17 +30-85,31-85 +16-70,15-16 +67-67,52-68 +30-99,29-31 +49-71,55-70 +32-94,94-94 +82-93,24-83 +31-94,32-40 +62-79,62-80 +9-84,9-9 +8-97,1-97 +36-37,36-51 +76-77,53-77 +47-49,17-48 +73-75,55-77 +50-85,51-86 +63-63,53-62 +5-15,5-5 +19-99,19-90 +2-63,2-22 +21-75,22-22 +18-97,19-69 +79-92,11-91 +13-23,23-23 +4-94,3-3 +6-82,19-83 +34-50,35-37 +15-99,15-96 +5-58,4-57 +19-56,46-93 +11-73,12-78 +37-42,26-41 +53-65,30-39 +46-47,45-47 +56-99,55-97 +82-86,44-83 +49-55,37-48 +3-96,96-96 +46-52,45-52 +2-36,9-37 +99-99,1-99 +11-70,18-91 +60-75,74-75 +6-97,6-96 +33-66,4-95 +15-58,34-59 +19-86,18-19 +25-43,30-81 +11-66,10-65 +2-49,1-99 +55-77,76-78 +61-87,75-79 +3-93,2-92 +2-2,5-56 +5-99,9-98 +34-46,46-84 +35-36,35-86 +15-17,16-43 +46-51,50-55 +8-8,7-17 +5-98,4-87 +44-58,43-58 +5-41,5-42 +6-27,10-16 +78-78,40-79 +17-88,29-87 +12-69,12-69 +26-78,26-58 +77-95,95-95 +42-49,46-48 +19-69,19-97 +33-77,76-76 +47-49,48-76 +3-99,3-4 +7-34,33-34 +61-91,92-99 +67-83,9-83 +10-91,90-91 +42-83,42-43 +29-31,35-90 +8-80,8-74 +8-95,8-99 +7-80,5-8 +5-12,11-12 +8-89,7-93 +42-93,42-94 +29-85,28-84 +72-72,72-90 +59-77,77-77 +96-99,23-97 +16-30,30-84 +8-69,8-68 +2-98,2-98 +44-98,43-98 +5-6,5-98 +9-90,11-51 +1-3,2-98 +15-69,55-70 +6-94,6-94 +88-89,21-89 +62-79,78-78 +2-71,47-72 +53-61,22-60 +93-97,10-92 +64-64,65-70 +10-10,6-13 +21-78,81-95 +88-94,2-88 +13-62,13-14 +67-67,58-67 +33-38,13-39 +40-51,4-39 +18-86,86-92 +10-97,10-97 +5-13,10-40 +4-94,3-5 +11-71,10-12 +27-31,25-27 +6-95,4-4 +5-99,14-98 +12-71,57-72 +39-76,39-76 +57-76,48-81 +20-64,20-94 +25-25,24-26 +14-74,8-13 +5-92,5-91 +1-96,1-96 +8-51,4-56 +5-95,15-96 +24-80,30-45 +31-98,31-94 +1-33,33-56 +38-54,23-39 +61-83,43-77 +30-38,13-37 +10-71,10-11 +41-59,42-60 +4-49,5-50 +14-14,2-85 +4-7,1-2 +91-92,3-91 +3-78,23-77 +13-74,85-96 +53-86,14-33 +67-95,66-94 +12-13,12-93 +4-99,3-47 +19-86,20-85 +5-98,5-90 +3-89,3-90 +66-67,63-67 +55-72,14-71 +4-5,5-80 +17-94,16-94 +18-71,36-70 +45-49,44-49 +27-90,27-82 +15-31,15-30 +8-57,28-98 +1-41,1-42 +19-20,19-41 +15-92,91-92 +37-73,10-36 +26-63,63-71 +27-30,28-81 +22-87,22-23 +56-56,1-56 +59-89,27-58 +88-89,56-87 +32-39,32-66 +96-96,2-97 +25-56,24-56 +3-94,4-95 +20-93,5-92 +16-70,42-71 +4-89,8-90 +20-83,20-82 +31-88,30-88 +73-73,3-72 +11-97,9-99 +3-23,22-52 +21-96,20-83 +4-65,5-21 +37-37,8-37 +4-95,2-4 +10-71,11-73 +35-81,36-81 +1-5,6-79 +28-39,27-39 +2-92,1-85 +12-97,62-96 +20-91,21-91 +88-98,3-70 +20-66,74-76 +84-99,47-84 +17-95,18-93 +57-78,49-78 +15-17,16-81 +51-84,41-54 +49-74,22-92 diff --git a/four-input2.txt b/four-input2.txt new file mode 100644 index 0000000..9f9e9cf --- /dev/null +++ b/four-input2.txt @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 diff --git a/four.hs b/four.hs deleted file mode 100644 index a6401b1..0000000 --- a/four.hs +++ /dev/null @@ -1,28 +0,0 @@ -import Control.Monad -import Data.Char - -parseLine :: String -> [[Int]] -parseLine line = [parseAssignment $ takeWhile (/= ',') line, - parseAssignment $ drop 1 $ dropWhile (',' /= ) line] - -parseAssignment :: String -> [Int] -parseAssignment assignment = do - let first = takeWhile ('-' /=) assignment - let second = drop 1 $ dropWhile ('-' /=) assignment - [(read first).. (read second)] - - -isIncluded :: [Int] -> [[Int]] -> Bool -isIncluded current list = any includes list - where - includes :: [Int] -> Bool - includes range' = all (`elem` range') current - -coveredByPartner :: [[Int]] -> Bool -coveredByPartner [first,second] = isIncluded first [second] || isIncluded second [first] - - -main = do - input <- readFile "four-input.txt" - let lists= (map (parseLine) $ lines input) - print $ length $ filter id $ map coveredByPartner lists diff --git a/four2.hs b/four2.hs deleted file mode 100644 index a9673ab..0000000 --- a/four2.hs +++ /dev/null @@ -1,25 +0,0 @@ -import Control.Monad -import Data.Char -import Data.List - -parseLine :: String -> [[Int]] -parseLine line = [parseAssignment $ takeWhile (/= ',') line, - parseAssignment $ drop 1 $ dropWhile (',' /= ) line] - -parseAssignment :: String -> [Int] -parseAssignment assignment = do - let first = takeWhile ('-' /=) assignment - let second = drop 1 $ dropWhile ('-' /=) assignment - [(read first).. (read second)] - - - - -coveredByPartner :: [[Int]] -> Bool -coveredByPartner [first,second] = 0 /= (length $ intersect first second) - - -main = do - input <- readFile "four-input.txt" - let lists= (map (parseLine) $ lines input) - print $ length $ filter id $ map coveredByPartner lists diff --git a/input2.txt b/input2.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/input2.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/one.hs b/one.hs deleted file mode 100644 index ab4e5e8..0000000 --- a/one.hs +++ /dev/null @@ -1,14 +0,0 @@ -import Text.Read -f :: (Int,Int) -> Maybe Int -> (Int,Int) -f (max,current) (Just next) = (max,current+next) -f (currentMax,current) (Nothing) = (max currentMax current ,0) - - -result=fst $ foldl f (0,0) (map (readMaybe) $lines "1000\n2000\n3000\n\n4000\n1000\n\n1000") -compute input=fst $ foldl f (0,0) $ map (readMaybe) $lines input - - -main = do - content <- readFile "elves.txt" - putStrLn $ show $compute content - diff --git a/one2.hs b/one2.hs deleted file mode 100644 index 43efbec..0000000 --- a/one2.hs +++ /dev/null @@ -1,12 +0,0 @@ -import Text.Read -import Data.List -f :: ([Int],Int) -> Maybe Int -> ([Int],Int) -f (max,current) (Just next) = (max,current+next) -f (currentMax,current) (Nothing) = (take 3 $ reverse $ sort (current:currentMax) ,0) - -compute input=sum $fst $ foldl f ([0],0) $ map (readMaybe) $lines input - -main = do - content <- readFile "elves.txt" - putStrLn $ show $compute content - diff --git a/package.yaml b/package.yaml new file mode 100644 index 0000000..b94d7b9 --- /dev/null +++ b/package.yaml @@ -0,0 +1,50 @@ +name: advent-of-code-stack +version: 0.1.0.0 +github: "githubuser/advent-of-code-stack" +license: BSD3 +author: "Author name here" +maintainer: "example@example.com" +copyright: "2022 Author name here" + +extra-source-files: + - README.md + - CHANGELOG.md + +# Metadata used when publishing your package +# synopsis: Short description of your package +# category: Web + +# To avoid duplicated efforts in documentation and dealing with the +# complications of embedding Haddock markup inside cabal files, it is +# common to point users to the README.md file. +description: Please see the README on GitHub at + +dependencies: + - base >= 4.7 && < 5 + +ghc-options: + - -Wall + - -Wcompat + - -Widentities + - -Wincomplete-record-updates + - -Wincomplete-uni-patterns + - -Wmissing-export-lists + - -Wmissing-home-modules + - -Wpartial-fields + - -Wredundant-constraints + +executables: + advent-of-code-stack-exe: + main: one.hs + source-dirs: app + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N + seven: + main: seven.hs + source-dirs: app + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N diff --git a/seven-input-test.txt b/seven-input-test.txt new file mode 100644 index 0000000..09a921e --- /dev/null +++ b/seven-input-test.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k diff --git a/seven-input.txt b/seven-input.txt index 09a921e..59838bc 100644 --- a/seven-input.txt +++ b/seven-input.txt @@ -1,23 +1,1032 @@ $ cd / $ ls -dir a -14848514 b.txt -8504156 c.dat -dir d -$ cd a +dir bfqzjjct +dir cgcqpjpn +dir frrjh +dir jjl +293559 jztrccm.hvd +dir mqvn +$ cd bfqzjjct $ ls -dir e -29116 f -2557 g -62596 h.lst -$ cd e +dir cgcqpjpn +dir frrjh +dir gzpbchq +12679 lzrgqrgc +dir mzm +dir phslrcw +240839 phslrcw.ljl +dir qftq +dir qlpg +169962 vntqgq.tps +114950 vzq.qvv +$ cd cgcqpjpn $ ls -584 i +305598 hjrv +134990 jlqcf.sjc +dir phslrcw +dir qsdlvr +129733 rznmd.snf +dir sgcg +dir swfsblvv +dir vprjf +dir wchtzbdv +dir wfvj +229649 zdm.rpl +$ cd phslrcw +$ ls +dir jnzjq +dir lfd +79014 lzrgqrgc.sqh +209222 wfnmqrtr.zbq +$ cd jnzjq +$ ls +163133 qsdcrvz.zmn +287008 zdm.rpl +$ cd .. +$ cd lfd +$ ls +4442 cgcqpjpn +61281 jmr +212696 jztrccm.hvd +dir mlt +dir qsdlvr +$ cd mlt +$ ls +183050 zdm.rpl +$ cd .. +$ cd qsdlvr +$ ls +dir nzjfwdt +dir qsdlvr +$ cd nzjfwdt +$ ls +49044 jdqz.bqd +$ cd .. +$ cd qsdlvr +$ ls +13838 fpfmhq.rbp $ cd .. $ cd .. -$ cd d +$ cd .. +$ cd .. +$ cd qsdlvr $ ls -4060174 j -8033020 d.log -5626152 d.ext -7214296 k +167042 jdqz.bqd +132914 lzrgqrgc +$ cd .. +$ cd sgcg +$ ls +dir bjwzfr +111567 jdqz.bqd +33253 jztrccm.hvd +75760 qsdlvr +$ cd bjwzfr +$ ls +268763 npjd.glz +dir phslrcw +121486 vbfsrwf.mbc +dir vtwtmnvl +$ cd phslrcw +$ ls +114641 cgsrlq +235130 npjd.glz +$ cd .. +$ cd vtwtmnvl +$ ls +7771 hnrpgsn +290862 rtrljz.vbf +220102 rztn.vqq +$ cd .. +$ cd .. +$ cd .. +$ cd swfsblvv +$ ls +231282 vclmcf.vpq +16727 vjhmb.ftn +$ cd .. +$ cd vprjf +$ ls +dir fppsf +56173 npjd.glz +dir phslrcw +dir pwjdcdff +dir qsdlvr +dir qvh +dir sbmtlz +$ cd fppsf +$ ls +dir hltnf +dir qrmggjs +dir qsdlvr +$ cd hltnf +$ ls +201448 npjd.glz +23616 zdm.rpl +$ cd .. +$ cd qrmggjs +$ ls +dir blhwqwd +dir szf +$ cd blhwqwd +$ ls +142887 vzq.qvv +$ cd .. +$ cd szf +$ ls +225491 tvsf.tpv +$ cd .. +$ cd .. +$ cd qsdlvr +$ ls +92209 brmrwznr +dir frrjh +212979 qsdlvr.bwh +dir vpvnb +$ cd frrjh +$ ls +143811 qvwmpj.gnc +$ cd .. +$ cd vpvnb +$ ls +dir wwsw +$ cd wwsw +$ ls +13671 qsdlvr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd phslrcw +$ ls +dir bpfhc +dir fjvgwbj +127950 hjngrw.rtr +37045 lfpjb.ftz +dir qsn +$ cd bpfhc +$ ls +232351 frrjh.szf +14824 jztrccm.hvd +162270 vzq.qvv +$ cd .. +$ cd fjvgwbj +$ ls +dir cgcqpjpn +4290 jrfsmghw.vqr +dir lqnpdd +$ cd cgcqpjpn +$ ls +208104 btrcq.vpn +149676 bwvp.jlf +76056 gvvrvqdf.zdc +272686 pqhtjpv +dir zjntbw +$ cd zjntbw +$ ls +140092 jdqz.bqd +$ cd .. +$ cd .. +$ cd lqnpdd +$ ls +dir brf +197899 jdqz.bqd +dir phslrcw +236823 qcvgnlv.ngn +dir szrfcwtw +88974 vzq.qvv +$ cd brf +$ ls +112059 jdqz.bqd +217412 vzq.qvv +$ cd .. +$ cd phslrcw +$ ls +84285 jnzf +282660 zdm.rpl +$ cd .. +$ cd szrfcwtw +$ ls +84415 gcp +163787 wffb.wbq +$ cd .. +$ cd .. +$ cd .. +$ cd qsn +$ ls +139676 zdm.rpl +$ cd .. +$ cd .. +$ cd pwjdcdff +$ ls +dir cgcqpjpn +54163 lzrgqrgc +dir qsdlvr +51246 qsdlvr.cmq +5082 rvmv.tqj +112712 vzq.qvv +$ cd cgcqpjpn +$ ls +92895 dmf.bsv +dir lhqzc +$ cd lhqzc +$ ls +13443 hwlsmmjn.wpj +232141 tlsn +$ cd .. +$ cd .. +$ cd qsdlvr +$ ls +216144 dghbz.lnl +241311 jztrccm.hvd +$ cd .. +$ cd .. +$ cd qsdlvr +$ ls +109764 qsdlvr.tbj +$ cd .. +$ cd qvh +$ ls +dir frrjh +51428 hdtmm.zzl +$ cd frrjh +$ ls +271661 brff.mgp +$ cd .. +$ cd .. +$ cd sbmtlz +$ ls +277255 jztrccm.hvd +$ cd .. +$ cd .. +$ cd wchtzbdv +$ ls +198310 cgcqpjpn +300478 fcfvgpdr.lzv +145860 jdqz.bqd +20145 mggg +$ cd .. +$ cd wfvj +$ ls +270522 phslrcw.mwt +213919 tczvr +19226 zdm.rpl +$ cd .. +$ cd .. +$ cd frrjh +$ ls +dir cgcqpjpn +246391 hnc.bzl +dir lzrgqrgc +dir mnrbzwr +239337 npjd.glz +dir qsdlvr +$ cd cgcqpjpn +$ ls +2423 pflhrgjg.gch +$ cd .. +$ cd lzrgqrgc +$ ls +265708 vzq.qvv +107406 zwnjb +$ cd .. +$ cd mnrbzwr +$ ls +287289 jgs.bdb +$ cd .. +$ cd qsdlvr +$ ls +dir qsdlvr +$ cd qsdlvr +$ ls +71204 gnfz +$ cd .. +$ cd .. +$ cd .. +$ cd gzpbchq +$ ls +dir cmqgph +dir fwf +146975 jztrccm.hvd +284515 lzrgqrgc.qsf +27455 qbsbvscc +$ cd cmqgph +$ ls +177740 zdm.rpl +$ cd .. +$ cd fwf +$ ls +210658 dnmvdgwn.wzt +22013 rqcspw.qmf +244013 zdm.rpl +$ cd .. +$ cd .. +$ cd mzm +$ ls +262805 gnfsbdcd.tvp +$ cd .. +$ cd phslrcw +$ ls +74949 wncqjc.tzd +$ cd .. +$ cd qftq +$ ls +dir jrds +$ cd jrds +$ ls +dir dvht +dir qsdlvr +$ cd dvht +$ ls +57354 phslrcw +57174 qsdlvr.ftm +$ cd .. +$ cd qsdlvr +$ ls +132030 fbsmfspp +$ cd .. +$ cd .. +$ cd .. +$ cd qlpg +$ ls +dir cgcqpjpn +dir frrjh +dir jjsfmg +186178 jmvcvw +dir qgjhlnmf +100234 qltp.vdr +dir tbwt +dir vjjvfbdw +dir wjz +162428 zlbnsg +$ cd cgcqpjpn +$ ls +dir gvmgcftp +dir hsgvgc +dir nps +dir phslrcw +dir scdglb +$ cd gvmgcftp +$ ls +31869 dsddwbbp +dir fbsrjgzj +53280 tzn.fvp +$ cd fbsrjgzj +$ ls +89267 qsdlvr.lhs +$ cd .. +$ cd .. +$ cd hsgvgc +$ ls +dir lzrgqrgc +210774 wpspf.vrd +$ cd lzrgqrgc +$ ls +289086 gfhwwslq.tlz +$ cd .. +$ cd .. +$ cd nps +$ ls +74713 fnqzcr +dir srjvfq +94736 wbrcn.nng +dir wmddln +dir zsgnrmcc +$ cd srjvfq +$ ls +dir grqft +dir pjnjlf +254618 wmfnmfrc.wng +$ cd grqft +$ ls +3742 zmpzwh.nvz +$ cd .. +$ cd pjnjlf +$ ls +dir mlrsrs +$ cd mlrsrs +$ ls +167149 jztrccm.hvd +$ cd .. +$ cd .. +$ cd .. +$ cd wmddln +$ ls +222831 cgcqpjpn.dcv +140188 gsvngqp +174466 sfngrqgj.gvz +$ cd .. +$ cd zsgnrmcc +$ ls +143043 vzq.qvv +$ cd .. +$ cd .. +$ cd phslrcw +$ ls +dir cdfsrvnc +103523 hzsjc +239089 jvwdjbq +229835 npjd.glz +189778 wwcccwmb.bdp +$ cd cdfsrvnc +$ ls +dir vzsvcnlz +$ cd vzsvcnlz +$ ls +dir wwn +$ cd wwn +$ ls +60279 frngbwm.wwf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd scdglb +$ ls +176557 vzq.qvv +$ cd .. +$ cd .. +$ cd frrjh +$ ls +130811 jdqz.bqd +$ cd .. +$ cd jjsfmg +$ ls +dir nffq +22842 vzt.nwh +$ cd nffq +$ ls +dir wmq +$ cd wmq +$ ls +196322 jztrccm.hvd +$ cd .. +$ cd .. +$ cd .. +$ cd qgjhlnmf +$ ls +dir jhqqjt +dir phslrcw +246296 pzvmcq +219308 tlhqgtcl.twb +dir vfgb +300258 zdm.rpl +221663 zsqh.dph +$ cd jhqqjt +$ ls +90068 fctpjdlm.ggg +dir frrjh +dir ngmzbqb +dir phslrcw +64341 qsdlvr.pnq +dir vlgpcg +$ cd frrjh +$ ls +49247 qrrhdhld.sjr +$ cd .. +$ cd ngmzbqb +$ ls +247800 cgcqpjpn.wgv +$ cd .. +$ cd phslrcw +$ ls +dir qsdlvr +dir vjrrrm +$ cd qsdlvr +$ ls +255302 ddvc +182817 dzd.trp +$ cd .. +$ cd vjrrrm +$ ls +38983 hjbsqd.pdl +$ cd .. +$ cd .. +$ cd vlgpcg +$ ls +dir frrjh +83387 jztrccm.hvd +$ cd frrjh +$ ls +dir rmlc +$ cd rmlc +$ ls +273584 jztrccm.hvd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd phslrcw +$ ls +96286 jztrccm.hvd +224425 npjd.glz +$ cd .. +$ cd vfgb +$ ls +dir fgl +dir fllsgwjt +dir frrjh +dir qsdlvr +$ cd fgl +$ ls +61972 lzrgqrgc.qrs +$ cd .. +$ cd fllsgwjt +$ ls +dir fqchdcpd +214477 zcr.spz +$ cd fqchdcpd +$ ls +156000 jccqlw.twl +$ cd .. +$ cd .. +$ cd frrjh +$ ls +210987 zdm.rpl +$ cd .. +$ cd qsdlvr +$ ls +dir phslrcw +dir znnsfvz +$ cd phslrcw +$ ls +214655 ddw +$ cd .. +$ cd znnsfvz +$ ls +126028 zpq.bgs +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tbwt +$ ls +dir ltjjhr +$ cd ltjjhr +$ ls +158069 vplwrz.rzp +$ cd .. +$ cd .. +$ cd vjjvfbdw +$ ls +277114 fmndb.rth +241524 frrjh +212152 frrjh.dlq +61370 jztrccm.hvd +dir srvqm +237264 znt +$ cd srvqm +$ ls +dir fbzmddc +61958 jdqz.bqd +dir phslrcw +173063 vwvmhwzn.tvg +$ cd fbzmddc +$ ls +dir ccvtbpzw +201647 lzrgqrgc.sjs +192449 rhfgcgz +224557 sbcpcbpd +$ cd ccvtbpzw +$ ls +dir phslrcw +dir prpllzcn +$ cd phslrcw +$ ls +290780 lbl.qmm +$ cd .. +$ cd prpllzcn +$ ls +242024 bhq +118347 frrjh.tsz +dir hcqs +$ cd hcqs +$ ls +104706 csnllvcf +270940 npjd.glz +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd phslrcw +$ ls +244909 czfjsrns.fdm +dir frrjh +68252 lzrgqrgc +146640 npjd.glz +290259 pbzpthgs.bgf +99657 rmfpfmd +dir zllf +$ cd frrjh +$ ls +dir cgcqpjpn +65295 jdqz.bqd +dir phslrcw +$ cd cgcqpjpn +$ ls +dir mwfwrd +$ cd mwfwrd +$ ls +26481 sngtgc +dir zfzddl +$ cd zfzddl +$ ls +47854 fzfdrmbb.ngm +$ cd .. +$ cd .. +$ cd .. +$ cd phslrcw +$ ls +251021 fwfpd.vrt +230149 fwjznjtz +140480 gbsmhj +112221 lzrgqrgc.gcr +139564 npjd.glz +dir pvmvm +dir tpzr +$ cd pvmvm +$ ls +73785 tnbgmgt.wqg +$ cd .. +$ cd tpzr +$ ls +16759 tmcmp +$ cd .. +$ cd .. +$ cd .. +$ cd zllf +$ ls +281402 dzrsnzh.smb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wjz +$ ls +266826 cgcqpjpn.spr +dir frvbfjj +111126 jdqz.bqd +257951 pbn.gdc +dir vjs +dir zrnvnb +$ cd frvbfjj +$ ls +257181 glfdplrm +$ cd .. +$ cd vjs +$ ls +dir jmpbwhtj +159996 lzrgqrgc.zcb +192135 phw +dir tdfz +dir wtm +$ cd jmpbwhtj +$ ls +dir fln +dir frrjh +dir nrtcmj +$ cd fln +$ ls +284574 frrjh.scb +$ cd .. +$ cd frrjh +$ ls +10020 npjd.glz +295395 vzq.qvv +$ cd .. +$ cd nrtcmj +$ ls +dir htvm +$ cd htvm +$ ls +dir lwh +$ cd lwh +$ ls +162494 npjd.glz +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tdfz +$ ls +dir gtvlbhhw +dir hvssbj +dir phslrcw +$ cd gtvlbhhw +$ ls +172627 sjvcfz +dir tfnhsrc +76460 vvgcv +$ cd tfnhsrc +$ ls +dir hjrjmrwc +$ cd hjrjmrwc +$ ls +41459 jztrccm.hvd +$ cd .. +$ cd .. +$ cd .. +$ cd hvssbj +$ ls +64052 phslrcw +$ cd .. +$ cd phslrcw +$ ls +dir wtdpf +dir zctdqwbc +$ cd wtdpf +$ ls +75802 jztrccm.hvd +$ cd .. +$ cd zctdqwbc +$ ls +127648 vqzcf.wbl +$ cd .. +$ cd .. +$ cd .. +$ cd wtm +$ ls +265433 jztrccm.hvd +20952 mplbrzlp +123701 nwr.tjg +58492 qsdlvr.qzq +$ cd .. +$ cd .. +$ cd zrnvnb +$ ls +228205 ghllsc.fqn +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd cgcqpjpn +$ ls +dir cmnsbsqp +dir hzsn +221975 jdqz.bqd +177439 jztrccm.hvd +dir mqjrcw +dir tdp +211065 zdm.rpl +$ cd cmnsbsqp +$ ls +282903 qzlc +$ cd .. +$ cd hzsn +$ ls +221345 wtdnp.grd +$ cd .. +$ cd mqjrcw +$ ls +156244 gznmpr.dlr +45213 hdb.fjb +202993 pdt +dir znvdz +$ cd znvdz +$ ls +183973 jztrccm.hvd +$ cd .. +$ cd .. +$ cd tdp +$ ls +68564 nmntwl +259117 vzq.qvv +$ cd .. +$ cd .. +$ cd frrjh +$ ls +276034 lzrgqrgc.fgq +dir psqczq +dir qsdlvr +dir snrw +$ cd psqczq +$ ls +158415 jdqz.bqd +127684 lhctqnnz.hgn +123191 phslrcw.prl +dir wrftp +$ cd wrftp +$ ls +234327 qdbbl.czd +$ cd .. +$ cd .. +$ cd qsdlvr +$ ls +179591 chbns.sqf +88327 jdqz.bqd +dir mrf +$ cd mrf +$ ls +229849 phslrcw.rdr +$ cd .. +$ cd .. +$ cd snrw +$ ls +dir cbvr +dir lbbrtc +134786 lzrgqrgc.vrt +131987 vzq.qvv +$ cd cbvr +$ ls +120330 htmgqj.nbq +162963 lzrgqrgc.rwq +$ cd .. +$ cd lbbrtc +$ ls +dir tnqdj +$ cd tnqdj +$ ls +72261 lhqnwns.nhj +235520 qsdlvr.dtr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jjl +$ ls +dir fcfpptw +dir frrjh +dir gmdwgs +221258 jdqz.bqd +dir lzrgqrgc +dir mwnmjjj +297139 smjtpl.zzs +$ cd fcfpptw +$ ls +167264 frrjh +101587 hsmhhc.lvb +$ cd .. +$ cd frrjh +$ ls +268280 jztrccm.hvd +127939 nbqgvd +247875 nmnrsqq +dir phslrcw +dir rmgwbq +288264 znrrdmw +$ cd phslrcw +$ ls +dir cgcqpjpn +dir nbwjw +$ cd cgcqpjpn +$ ls +249503 phslrcw.dmf +$ cd .. +$ cd nbwjw +$ ls +dir phslrcw +$ cd phslrcw +$ ls +193336 sqpgwtgp.fpb +$ cd .. +$ cd .. +$ cd .. +$ cd rmgwbq +$ ls +90116 jztrccm.hvd +303005 phslrcw +$ cd .. +$ cd .. +$ cd gmdwgs +$ ls +dir lzrgqrgc +dir mwrj +dir mzqn +104570 qsqqbfg.njt +dir zmj +$ cd lzrgqrgc +$ ls +dir cmn +dir qsdlvr +dir rtz +$ cd cmn +$ ls +20043 bgm.tvn +41301 hqdl.rnr +32026 tsmmr.bfl +$ cd .. +$ cd qsdlvr +$ ls +dir dcsdmqt +$ cd dcsdmqt +$ ls +107938 zdm.rpl +$ cd .. +$ cd .. +$ cd rtz +$ ls +308963 jbwvpjvj.fgn +31573 jdqz.bqd +97775 phslrcw +dir qsdlvr +225929 wwznl.bpd +$ cd qsdlvr +$ ls +52056 bddqnlmg.hjm +236614 qsdlvr.vcz +$ cd .. +$ cd .. +$ cd .. +$ cd mwrj +$ ls +dir dfsm +dir mtfqs +$ cd dfsm +$ ls +32797 jztrccm.hvd +dir mthjq +241875 vzq.qvv +$ cd mthjq +$ ls +147247 zdm.rpl +$ cd .. +$ cd .. +$ cd mtfqs +$ ls +dir crpfs +dir phslrcw +$ cd crpfs +$ ls +24073 jdqz.bqd +269270 jztrccm.hvd +89807 lzrgqrgc.ddj +$ cd .. +$ cd phslrcw +$ ls +124727 cgcqpjpn.zfz +dir gttptlwj +dir phslrcw +dir qsdlvr +$ cd gttptlwj +$ ls +295546 frrjh.tmq +$ cd .. +$ cd phslrcw +$ ls +234122 zdm.rpl +$ cd .. +$ cd qsdlvr +$ ls +131491 zdm.rpl +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd mzqn +$ ls +16352 qjllmbh.jfm +36853 zdm.rpl +$ cd .. +$ cd zmj +$ ls +dir dvrwbrbt +dir frrjh +217060 mftczjfs.zch +dir znhsrsfb +$ cd dvrwbrbt +$ ls +dir lzssrrq +$ cd lzssrrq +$ ls +dir qsdlvr +$ cd qsdlvr +$ ls +108975 npjd.glz +$ cd .. +$ cd .. +$ cd .. +$ cd frrjh +$ ls +dir phslrcw +dir zjstpvl +$ cd phslrcw +$ ls +244682 pgn.jqm +$ cd .. +$ cd zjstpvl +$ ls +300736 bsw.wzn +102742 jdqz.bqd +$ cd .. +$ cd .. +$ cd znhsrsfb +$ ls +121093 qsdlvr +$ cd .. +$ cd .. +$ cd .. +$ cd lzrgqrgc +$ ls +50942 jdqz.bqd +26201 ljqgqqrr +71462 lrrfvs.ghl +274208 tqhcl.hcl +$ cd .. +$ cd mwnmjjj +$ ls +184865 mzwmp.jbw +68016 thbh.nbg +$ cd .. +$ cd .. +$ cd mqvn +$ ls +287623 spfzctll diff --git a/seven-input.txtreal b/seven-input.txtreal deleted file mode 100644 index 59838bc..0000000 --- a/seven-input.txtreal +++ /dev/null @@ -1,1032 +0,0 @@ -$ cd / -$ ls -dir bfqzjjct -dir cgcqpjpn -dir frrjh -dir jjl -293559 jztrccm.hvd -dir mqvn -$ cd bfqzjjct -$ ls -dir cgcqpjpn -dir frrjh -dir gzpbchq -12679 lzrgqrgc -dir mzm -dir phslrcw -240839 phslrcw.ljl -dir qftq -dir qlpg -169962 vntqgq.tps -114950 vzq.qvv -$ cd cgcqpjpn -$ ls -305598 hjrv -134990 jlqcf.sjc -dir phslrcw -dir qsdlvr -129733 rznmd.snf -dir sgcg -dir swfsblvv -dir vprjf -dir wchtzbdv -dir wfvj -229649 zdm.rpl -$ cd phslrcw -$ ls -dir jnzjq -dir lfd -79014 lzrgqrgc.sqh -209222 wfnmqrtr.zbq -$ cd jnzjq -$ ls -163133 qsdcrvz.zmn -287008 zdm.rpl -$ cd .. -$ cd lfd -$ ls -4442 cgcqpjpn -61281 jmr -212696 jztrccm.hvd -dir mlt -dir qsdlvr -$ cd mlt -$ ls -183050 zdm.rpl -$ cd .. -$ cd qsdlvr -$ ls -dir nzjfwdt -dir qsdlvr -$ cd nzjfwdt -$ ls -49044 jdqz.bqd -$ cd .. -$ cd qsdlvr -$ ls -13838 fpfmhq.rbp -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd qsdlvr -$ ls -167042 jdqz.bqd -132914 lzrgqrgc -$ cd .. -$ cd sgcg -$ ls -dir bjwzfr -111567 jdqz.bqd -33253 jztrccm.hvd -75760 qsdlvr -$ cd bjwzfr -$ ls -268763 npjd.glz -dir phslrcw -121486 vbfsrwf.mbc -dir vtwtmnvl -$ cd phslrcw -$ ls -114641 cgsrlq -235130 npjd.glz -$ cd .. -$ cd vtwtmnvl -$ ls -7771 hnrpgsn -290862 rtrljz.vbf -220102 rztn.vqq -$ cd .. -$ cd .. -$ cd .. -$ cd swfsblvv -$ ls -231282 vclmcf.vpq -16727 vjhmb.ftn -$ cd .. -$ cd vprjf -$ ls -dir fppsf -56173 npjd.glz -dir phslrcw -dir pwjdcdff -dir qsdlvr -dir qvh -dir sbmtlz -$ cd fppsf -$ ls -dir hltnf -dir qrmggjs -dir qsdlvr -$ cd hltnf -$ ls -201448 npjd.glz -23616 zdm.rpl -$ cd .. -$ cd qrmggjs -$ ls -dir blhwqwd -dir szf -$ cd blhwqwd -$ ls -142887 vzq.qvv -$ cd .. -$ cd szf -$ ls -225491 tvsf.tpv -$ cd .. -$ cd .. -$ cd qsdlvr -$ ls -92209 brmrwznr -dir frrjh -212979 qsdlvr.bwh -dir vpvnb -$ cd frrjh -$ ls -143811 qvwmpj.gnc -$ cd .. -$ cd vpvnb -$ ls -dir wwsw -$ cd wwsw -$ ls -13671 qsdlvr -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd phslrcw -$ ls -dir bpfhc -dir fjvgwbj -127950 hjngrw.rtr -37045 lfpjb.ftz -dir qsn -$ cd bpfhc -$ ls -232351 frrjh.szf -14824 jztrccm.hvd -162270 vzq.qvv -$ cd .. -$ cd fjvgwbj -$ ls -dir cgcqpjpn -4290 jrfsmghw.vqr -dir lqnpdd -$ cd cgcqpjpn -$ ls -208104 btrcq.vpn -149676 bwvp.jlf -76056 gvvrvqdf.zdc -272686 pqhtjpv -dir zjntbw -$ cd zjntbw -$ ls -140092 jdqz.bqd -$ cd .. -$ cd .. -$ cd lqnpdd -$ ls -dir brf -197899 jdqz.bqd -dir phslrcw -236823 qcvgnlv.ngn -dir szrfcwtw -88974 vzq.qvv -$ cd brf -$ ls -112059 jdqz.bqd -217412 vzq.qvv -$ cd .. -$ cd phslrcw -$ ls -84285 jnzf -282660 zdm.rpl -$ cd .. -$ cd szrfcwtw -$ ls -84415 gcp -163787 wffb.wbq -$ cd .. -$ cd .. -$ cd .. -$ cd qsn -$ ls -139676 zdm.rpl -$ cd .. -$ cd .. -$ cd pwjdcdff -$ ls -dir cgcqpjpn -54163 lzrgqrgc -dir qsdlvr -51246 qsdlvr.cmq -5082 rvmv.tqj -112712 vzq.qvv -$ cd cgcqpjpn -$ ls -92895 dmf.bsv -dir lhqzc -$ cd lhqzc -$ ls -13443 hwlsmmjn.wpj -232141 tlsn -$ cd .. -$ cd .. -$ cd qsdlvr -$ ls -216144 dghbz.lnl -241311 jztrccm.hvd -$ cd .. -$ cd .. -$ cd qsdlvr -$ ls -109764 qsdlvr.tbj -$ cd .. -$ cd qvh -$ ls -dir frrjh -51428 hdtmm.zzl -$ cd frrjh -$ ls -271661 brff.mgp -$ cd .. -$ cd .. -$ cd sbmtlz -$ ls -277255 jztrccm.hvd -$ cd .. -$ cd .. -$ cd wchtzbdv -$ ls -198310 cgcqpjpn -300478 fcfvgpdr.lzv -145860 jdqz.bqd -20145 mggg -$ cd .. -$ cd wfvj -$ ls -270522 phslrcw.mwt -213919 tczvr -19226 zdm.rpl -$ cd .. -$ cd .. -$ cd frrjh -$ ls -dir cgcqpjpn -246391 hnc.bzl -dir lzrgqrgc -dir mnrbzwr -239337 npjd.glz -dir qsdlvr -$ cd cgcqpjpn -$ ls -2423 pflhrgjg.gch -$ cd .. -$ cd lzrgqrgc -$ ls -265708 vzq.qvv -107406 zwnjb -$ cd .. -$ cd mnrbzwr -$ ls -287289 jgs.bdb -$ cd .. -$ cd qsdlvr -$ ls -dir qsdlvr -$ cd qsdlvr -$ ls -71204 gnfz -$ cd .. -$ cd .. -$ cd .. -$ cd gzpbchq -$ ls -dir cmqgph -dir fwf -146975 jztrccm.hvd -284515 lzrgqrgc.qsf -27455 qbsbvscc -$ cd cmqgph -$ ls -177740 zdm.rpl -$ cd .. -$ cd fwf -$ ls -210658 dnmvdgwn.wzt -22013 rqcspw.qmf -244013 zdm.rpl -$ cd .. -$ cd .. -$ cd mzm -$ ls -262805 gnfsbdcd.tvp -$ cd .. -$ cd phslrcw -$ ls -74949 wncqjc.tzd -$ cd .. -$ cd qftq -$ ls -dir jrds -$ cd jrds -$ ls -dir dvht -dir qsdlvr -$ cd dvht -$ ls -57354 phslrcw -57174 qsdlvr.ftm -$ cd .. -$ cd qsdlvr -$ ls -132030 fbsmfspp -$ cd .. -$ cd .. -$ cd .. -$ cd qlpg -$ ls -dir cgcqpjpn -dir frrjh -dir jjsfmg -186178 jmvcvw -dir qgjhlnmf -100234 qltp.vdr -dir tbwt -dir vjjvfbdw -dir wjz -162428 zlbnsg -$ cd cgcqpjpn -$ ls -dir gvmgcftp -dir hsgvgc -dir nps -dir phslrcw -dir scdglb -$ cd gvmgcftp -$ ls -31869 dsddwbbp -dir fbsrjgzj -53280 tzn.fvp -$ cd fbsrjgzj -$ ls -89267 qsdlvr.lhs -$ cd .. -$ cd .. -$ cd hsgvgc -$ ls -dir lzrgqrgc -210774 wpspf.vrd -$ cd lzrgqrgc -$ ls -289086 gfhwwslq.tlz -$ cd .. -$ cd .. -$ cd nps -$ ls -74713 fnqzcr -dir srjvfq -94736 wbrcn.nng -dir wmddln -dir zsgnrmcc -$ cd srjvfq -$ ls -dir grqft -dir pjnjlf -254618 wmfnmfrc.wng -$ cd grqft -$ ls -3742 zmpzwh.nvz -$ cd .. -$ cd pjnjlf -$ ls -dir mlrsrs -$ cd mlrsrs -$ ls -167149 jztrccm.hvd -$ cd .. -$ cd .. -$ cd .. -$ cd wmddln -$ ls -222831 cgcqpjpn.dcv -140188 gsvngqp -174466 sfngrqgj.gvz -$ cd .. -$ cd zsgnrmcc -$ ls -143043 vzq.qvv -$ cd .. -$ cd .. -$ cd phslrcw -$ ls -dir cdfsrvnc -103523 hzsjc -239089 jvwdjbq -229835 npjd.glz -189778 wwcccwmb.bdp -$ cd cdfsrvnc -$ ls -dir vzsvcnlz -$ cd vzsvcnlz -$ ls -dir wwn -$ cd wwn -$ ls -60279 frngbwm.wwf -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd scdglb -$ ls -176557 vzq.qvv -$ cd .. -$ cd .. -$ cd frrjh -$ ls -130811 jdqz.bqd -$ cd .. -$ cd jjsfmg -$ ls -dir nffq -22842 vzt.nwh -$ cd nffq -$ ls -dir wmq -$ cd wmq -$ ls -196322 jztrccm.hvd -$ cd .. -$ cd .. -$ cd .. -$ cd qgjhlnmf -$ ls -dir jhqqjt -dir phslrcw -246296 pzvmcq -219308 tlhqgtcl.twb -dir vfgb -300258 zdm.rpl -221663 zsqh.dph -$ cd jhqqjt -$ ls -90068 fctpjdlm.ggg -dir frrjh -dir ngmzbqb -dir phslrcw -64341 qsdlvr.pnq -dir vlgpcg -$ cd frrjh -$ ls -49247 qrrhdhld.sjr -$ cd .. -$ cd ngmzbqb -$ ls -247800 cgcqpjpn.wgv -$ cd .. -$ cd phslrcw -$ ls -dir qsdlvr -dir vjrrrm -$ cd qsdlvr -$ ls -255302 ddvc -182817 dzd.trp -$ cd .. -$ cd vjrrrm -$ ls -38983 hjbsqd.pdl -$ cd .. -$ cd .. -$ cd vlgpcg -$ ls -dir frrjh -83387 jztrccm.hvd -$ cd frrjh -$ ls -dir rmlc -$ cd rmlc -$ ls -273584 jztrccm.hvd -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd phslrcw -$ ls -96286 jztrccm.hvd -224425 npjd.glz -$ cd .. -$ cd vfgb -$ ls -dir fgl -dir fllsgwjt -dir frrjh -dir qsdlvr -$ cd fgl -$ ls -61972 lzrgqrgc.qrs -$ cd .. -$ cd fllsgwjt -$ ls -dir fqchdcpd -214477 zcr.spz -$ cd fqchdcpd -$ ls -156000 jccqlw.twl -$ cd .. -$ cd .. -$ cd frrjh -$ ls -210987 zdm.rpl -$ cd .. -$ cd qsdlvr -$ ls -dir phslrcw -dir znnsfvz -$ cd phslrcw -$ ls -214655 ddw -$ cd .. -$ cd znnsfvz -$ ls -126028 zpq.bgs -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd tbwt -$ ls -dir ltjjhr -$ cd ltjjhr -$ ls -158069 vplwrz.rzp -$ cd .. -$ cd .. -$ cd vjjvfbdw -$ ls -277114 fmndb.rth -241524 frrjh -212152 frrjh.dlq -61370 jztrccm.hvd -dir srvqm -237264 znt -$ cd srvqm -$ ls -dir fbzmddc -61958 jdqz.bqd -dir phslrcw -173063 vwvmhwzn.tvg -$ cd fbzmddc -$ ls -dir ccvtbpzw -201647 lzrgqrgc.sjs -192449 rhfgcgz -224557 sbcpcbpd -$ cd ccvtbpzw -$ ls -dir phslrcw -dir prpllzcn -$ cd phslrcw -$ ls -290780 lbl.qmm -$ cd .. -$ cd prpllzcn -$ ls -242024 bhq -118347 frrjh.tsz -dir hcqs -$ cd hcqs -$ ls -104706 csnllvcf -270940 npjd.glz -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd phslrcw -$ ls -244909 czfjsrns.fdm -dir frrjh -68252 lzrgqrgc -146640 npjd.glz -290259 pbzpthgs.bgf -99657 rmfpfmd -dir zllf -$ cd frrjh -$ ls -dir cgcqpjpn -65295 jdqz.bqd -dir phslrcw -$ cd cgcqpjpn -$ ls -dir mwfwrd -$ cd mwfwrd -$ ls -26481 sngtgc -dir zfzddl -$ cd zfzddl -$ ls -47854 fzfdrmbb.ngm -$ cd .. -$ cd .. -$ cd .. -$ cd phslrcw -$ ls -251021 fwfpd.vrt -230149 fwjznjtz -140480 gbsmhj -112221 lzrgqrgc.gcr -139564 npjd.glz -dir pvmvm -dir tpzr -$ cd pvmvm -$ ls -73785 tnbgmgt.wqg -$ cd .. -$ cd tpzr -$ ls -16759 tmcmp -$ cd .. -$ cd .. -$ cd .. -$ cd zllf -$ ls -281402 dzrsnzh.smb -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd wjz -$ ls -266826 cgcqpjpn.spr -dir frvbfjj -111126 jdqz.bqd -257951 pbn.gdc -dir vjs -dir zrnvnb -$ cd frvbfjj -$ ls -257181 glfdplrm -$ cd .. -$ cd vjs -$ ls -dir jmpbwhtj -159996 lzrgqrgc.zcb -192135 phw -dir tdfz -dir wtm -$ cd jmpbwhtj -$ ls -dir fln -dir frrjh -dir nrtcmj -$ cd fln -$ ls -284574 frrjh.scb -$ cd .. -$ cd frrjh -$ ls -10020 npjd.glz -295395 vzq.qvv -$ cd .. -$ cd nrtcmj -$ ls -dir htvm -$ cd htvm -$ ls -dir lwh -$ cd lwh -$ ls -162494 npjd.glz -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd tdfz -$ ls -dir gtvlbhhw -dir hvssbj -dir phslrcw -$ cd gtvlbhhw -$ ls -172627 sjvcfz -dir tfnhsrc -76460 vvgcv -$ cd tfnhsrc -$ ls -dir hjrjmrwc -$ cd hjrjmrwc -$ ls -41459 jztrccm.hvd -$ cd .. -$ cd .. -$ cd .. -$ cd hvssbj -$ ls -64052 phslrcw -$ cd .. -$ cd phslrcw -$ ls -dir wtdpf -dir zctdqwbc -$ cd wtdpf -$ ls -75802 jztrccm.hvd -$ cd .. -$ cd zctdqwbc -$ ls -127648 vqzcf.wbl -$ cd .. -$ cd .. -$ cd .. -$ cd wtm -$ ls -265433 jztrccm.hvd -20952 mplbrzlp -123701 nwr.tjg -58492 qsdlvr.qzq -$ cd .. -$ cd .. -$ cd zrnvnb -$ ls -228205 ghllsc.fqn -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd cgcqpjpn -$ ls -dir cmnsbsqp -dir hzsn -221975 jdqz.bqd -177439 jztrccm.hvd -dir mqjrcw -dir tdp -211065 zdm.rpl -$ cd cmnsbsqp -$ ls -282903 qzlc -$ cd .. -$ cd hzsn -$ ls -221345 wtdnp.grd -$ cd .. -$ cd mqjrcw -$ ls -156244 gznmpr.dlr -45213 hdb.fjb -202993 pdt -dir znvdz -$ cd znvdz -$ ls -183973 jztrccm.hvd -$ cd .. -$ cd .. -$ cd tdp -$ ls -68564 nmntwl -259117 vzq.qvv -$ cd .. -$ cd .. -$ cd frrjh -$ ls -276034 lzrgqrgc.fgq -dir psqczq -dir qsdlvr -dir snrw -$ cd psqczq -$ ls -158415 jdqz.bqd -127684 lhctqnnz.hgn -123191 phslrcw.prl -dir wrftp -$ cd wrftp -$ ls -234327 qdbbl.czd -$ cd .. -$ cd .. -$ cd qsdlvr -$ ls -179591 chbns.sqf -88327 jdqz.bqd -dir mrf -$ cd mrf -$ ls -229849 phslrcw.rdr -$ cd .. -$ cd .. -$ cd snrw -$ ls -dir cbvr -dir lbbrtc -134786 lzrgqrgc.vrt -131987 vzq.qvv -$ cd cbvr -$ ls -120330 htmgqj.nbq -162963 lzrgqrgc.rwq -$ cd .. -$ cd lbbrtc -$ ls -dir tnqdj -$ cd tnqdj -$ ls -72261 lhqnwns.nhj -235520 qsdlvr.dtr -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd jjl -$ ls -dir fcfpptw -dir frrjh -dir gmdwgs -221258 jdqz.bqd -dir lzrgqrgc -dir mwnmjjj -297139 smjtpl.zzs -$ cd fcfpptw -$ ls -167264 frrjh -101587 hsmhhc.lvb -$ cd .. -$ cd frrjh -$ ls -268280 jztrccm.hvd -127939 nbqgvd -247875 nmnrsqq -dir phslrcw -dir rmgwbq -288264 znrrdmw -$ cd phslrcw -$ ls -dir cgcqpjpn -dir nbwjw -$ cd cgcqpjpn -$ ls -249503 phslrcw.dmf -$ cd .. -$ cd nbwjw -$ ls -dir phslrcw -$ cd phslrcw -$ ls -193336 sqpgwtgp.fpb -$ cd .. -$ cd .. -$ cd .. -$ cd rmgwbq -$ ls -90116 jztrccm.hvd -303005 phslrcw -$ cd .. -$ cd .. -$ cd gmdwgs -$ ls -dir lzrgqrgc -dir mwrj -dir mzqn -104570 qsqqbfg.njt -dir zmj -$ cd lzrgqrgc -$ ls -dir cmn -dir qsdlvr -dir rtz -$ cd cmn -$ ls -20043 bgm.tvn -41301 hqdl.rnr -32026 tsmmr.bfl -$ cd .. -$ cd qsdlvr -$ ls -dir dcsdmqt -$ cd dcsdmqt -$ ls -107938 zdm.rpl -$ cd .. -$ cd .. -$ cd rtz -$ ls -308963 jbwvpjvj.fgn -31573 jdqz.bqd -97775 phslrcw -dir qsdlvr -225929 wwznl.bpd -$ cd qsdlvr -$ ls -52056 bddqnlmg.hjm -236614 qsdlvr.vcz -$ cd .. -$ cd .. -$ cd .. -$ cd mwrj -$ ls -dir dfsm -dir mtfqs -$ cd dfsm -$ ls -32797 jztrccm.hvd -dir mthjq -241875 vzq.qvv -$ cd mthjq -$ ls -147247 zdm.rpl -$ cd .. -$ cd .. -$ cd mtfqs -$ ls -dir crpfs -dir phslrcw -$ cd crpfs -$ ls -24073 jdqz.bqd -269270 jztrccm.hvd -89807 lzrgqrgc.ddj -$ cd .. -$ cd phslrcw -$ ls -124727 cgcqpjpn.zfz -dir gttptlwj -dir phslrcw -dir qsdlvr -$ cd gttptlwj -$ ls -295546 frrjh.tmq -$ cd .. -$ cd phslrcw -$ ls -234122 zdm.rpl -$ cd .. -$ cd qsdlvr -$ ls -131491 zdm.rpl -$ cd .. -$ cd .. -$ cd .. -$ cd .. -$ cd mzqn -$ ls -16352 qjllmbh.jfm -36853 zdm.rpl -$ cd .. -$ cd zmj -$ ls -dir dvrwbrbt -dir frrjh -217060 mftczjfs.zch -dir znhsrsfb -$ cd dvrwbrbt -$ ls -dir lzssrrq -$ cd lzssrrq -$ ls -dir qsdlvr -$ cd qsdlvr -$ ls -108975 npjd.glz -$ cd .. -$ cd .. -$ cd .. -$ cd frrjh -$ ls -dir phslrcw -dir zjstpvl -$ cd phslrcw -$ ls -244682 pgn.jqm -$ cd .. -$ cd zjstpvl -$ ls -300736 bsw.wzn -102742 jdqz.bqd -$ cd .. -$ cd .. -$ cd znhsrsfb -$ ls -121093 qsdlvr -$ cd .. -$ cd .. -$ cd .. -$ cd lzrgqrgc -$ ls -50942 jdqz.bqd -26201 ljqgqqrr -71462 lrrfvs.ghl -274208 tqhcl.hcl -$ cd .. -$ cd mwnmjjj -$ ls -184865 mzwmp.jbw -68016 thbh.nbg -$ cd .. -$ cd .. -$ cd mqvn -$ ls -287623 spfzctll diff --git a/seven.hs b/seven.hs deleted file mode 100644 index 800f493..0000000 --- a/seven.hs +++ /dev/null @@ -1,84 +0,0 @@ --- everything stolen from http://learnyouahaskell.com/zippers#a-very-simple-file-system - -import Control.Monad - -data FS = FS [Inode] -data Inode = Dir Name [Inode] | File Name Size deriving(Show) -type Name = String -type Size = Int -data Command = Ls | Cd Name | CdUp | CdRoot deriving(Show) -data Line = LineC Command | LineI Inode deriving(Show) - -parseCommand :: String -> Command -parseCommand "ls" =Ls -parseCommand "cd .." =CdUp -parseCommand ('c':'d':' ':name) =(Cd name) - -parseInode :: String -> Inode -parseInode ('d':'i':'r':' ': name) = Dir name [] -parseInode input = File (drop 1 $ dropWhile (/= ' ') input) (read $ takeWhile (/= ' ') input) - - -parseEither :: String -> Line -parseEither ('$':' ':command) =LineC $ parseCommand command -parseEither input= LineI $ parseInode input - -foldFunction :: FSZipper -> Line -> FSZipper -foldFunction zipper (LineC Ls) = zipper -foldFunction zipper (LineC (Cd name)) = fsTo name zipper -foldFunction zipper (LineC CdUp) = fsUp zipper -foldFunction zipper (LineI inode) = fsNewInode inode zipper - -data FSCrumb = FSCrumb Name [Inode] [Inode] deriving (Show) - -type FSZipper = (Inode,[FSCrumb]) - -fsUp :: FSZipper -> FSZipper -fsUp (item, FSCrumb name ls rs:bs) = (Dir name (ls ++ [item] ++ rs), bs) - - -fsUpToRoot :: FSZipper -> FSZipper -fsUpToRoot ((Dir "/" content),bc) = ((Dir "/" content),bc) -fsUpToRoot zipper = fsUp zipper - -fsTo :: Name -> FSZipper -> FSZipper -fsTo name (Dir folderName items, bs) = - let (ls, item:rs) = break (nameIs name) items - in (item, FSCrumb folderName ls rs:bs) - -nameIs :: Name -> Inode -> Bool -nameIs name (Dir folderName _) = name == folderName -nameIs name (File fileName _) = name == fileName - - -fsNewInode :: Inode -> FSZipper -> FSZipper -fsNewInode newInode ((Dir name content),bc) = (Dir name (newInode:content),bc) - -initZipper :: FSZipper -initZipper = (Dir "/" [],[]) - - -data InodeSize = DirS Size | FileS Size deriving(Show) - -getSize (DirS s)= s -getSize (FileS s)=s - -flattenToSmallDirs :: Inode -> [InodeSize] -flattenToSmallDirs (Dir _ children) = - let childSizes =join $ map flattenToSmallDirs children - currentSize=(sum $ map getSize $ childSizes) in - if (10 < 100000) then (DirS currentSize):childSizes else childSizes -flattenToSmallDirs (File _ size) = [FileS size] - -filterSmallDirs :: [InodeSize] -> [Size] -filterSmallDirs ((DirS s):rest) = if (s<100000) then s:(filterSmallDirs rest) else filterSmallDirs rest -filterSmallDirs ((FileS s):rest) = filterSmallDirs rest -filterSmallDirs [] = [] - - - -main = do - content <- readFile "seven-input.txt" - let statements = map parseEither $ drop 1 $ lines content - let a = foldl foldFunction initZipper statements - print $sum$ filterSmallDirs $ flattenToSmallDirs $ fst $ fsUpToRoot a diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..747406f --- /dev/null +++ b/stack.yaml @@ -0,0 +1,66 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# https://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# +# The location of a snapshot can be provided as a file or url. Stack assumes +# a snapshot provided as a file might change, whereas a url resource does not. +# +# resolver: ./custom-snapshot.yaml +# resolver: https://example.com/snapshots/2018-01-01.yaml +resolver: ghc-9.4.2 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# subdirs: +# - auto-update +# - wai +packages: + - . +# Dependency packages to be pulled from upstream that are not in the resolver. +# These entries can reference officially published versions as well as +# forks / in-progress versions pinned to a git hash. For example: +# +# extra-deps: +# - acme-missiles-0.3 +# - git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# +# extra-deps: [] + +# Override default flag values for local packages and extra-deps +# flags: {} + +# Extra package databases containing global packages +# extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=2.7" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor diff --git a/stack.yaml.lock b/stack.yaml.lock new file mode 100644 index 0000000..74c2087 --- /dev/null +++ b/stack.yaml.lock @@ -0,0 +1,7 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: [] +snapshots: [] diff --git a/three-input.txt b/three-input.txt new file mode 100644 index 0000000..0467fc3 --- /dev/null +++ b/three-input.txt @@ -0,0 +1,300 @@ +gtZDjBcmpcDgpZcmmbgtdtqmCGVCGGsvhCFCCqvmCMMM +JrhfzfLTNfJhPnhQnfzHfCFFQFSGvMFCGQFsQSMSVs +TllTRrfNNlfzwhtZBZgtRDBp +vMdwjZdjwjvjdTZZvCcQMGnQMQcbcgLLCL +rsVhfmssPWzDVGCLJSbCgPLSQG +lfWNDHDgfszFRTFtwwNjdv +GLPqVqdVGCLCdczjMjzMfzld +JnWQvJDmvWBtlMzhrzfHQgcz +tDtJDDDDtWRRmBwJwWtpPRsGCGScLPGSqspNCS +ChVzZzfNDzNJmBQfjjJfmH +MrTMPMncGMJvPPvPWTbrMWvgmBgQwgdpwmdpdpjwpHQcdw +SPvvvbqrFvMvZzJzsFVzVJNV +mvBbvMFqbMMVVmtCBHpDdDPTDspdNWPDVP +zjSfftcQtwtSfQSpNDppsNsjPNdRPP +fgfStJShrgvvCLLv +GmFnNNwbFFbhQQGQnGwwwfBgnMMqVDBZVVBMfMVzVz +vWzRRHzTHcgfZDVfBgfH +SSTvrvRcPpcvjFGwNGbNpbwQwz +FFgbZZFZgFmpstLgmbtzqNrwVPlMPlSWWrMPNp +QQhTvjhcvjjvTcTcTfCcSRwwWzwzPMrzWNNWVVhwrwWq +GRQBfCRnGGTcDvBfGvffCCjnFZtFFgStJLbLHbFLJZdgmd +pppdjcrMMRDJLJdRcwRDrwssqHGGDHsZHHsvBVtvmVHV +nlCFWzGzzQFlSlhGWnPzFbSsBZmsssmVVmsBvnHqvNVqqm +lFTTTCSQSTrdGJJLJG +jpsGMgsmghQwQsMmhlQshjtTNTRTnFqRWnnqRfFnnt +SLBCHrcvZHbSvSZrSvSWnfvVNvftVlFRTqnRTq +JrzdZbBcHBCrrlHrrSsMgmGpJPDPQmpgQgPG +cmcZHgwgMgHSLmtjLfWPNNrWBNfffp +JTqGTsClHslVVRVCVGVJGnBrjdnnrdBNvjPNBNBrWvnW +VVlQlqTFJlzzlsVGsRCZMthHDbwbFhgcbwHchg +qgZjgjjbssqgsjlNqjhTtdrfQdTdWLLnDVfHtHWd +zcGMBDDzcLnztfQQQz +JSppJcBScMmMFFBRCpRCMmGlggvjhbhlNlglwbslCZjhDZ +hvhmqcqwwcTBvvwQnRQnRnTRFzFzQz +jWLPPtPsgMtpdLMLWllpgLLQFQhFJjnVrzFrVFhnRzJJrJ +WPWffgtSdspdhSMdlSdtfBbHmSvqbNBCCmcBmcvcCH +frVcrVcggfSZJfbbJvBd +hwWQnwhWQmQmThTSsdvvSMBTBzcb +wGnFFCGlQwntGtCtwntwDmFwRgLrHqNRqqcNNgRrHHLggCjp +wRSwwHDMsRGHvNBNjTgvjgJD +mcLcFCclWQWQpPQWVQcQcvvNJjrNBTrvgJgBvTRvCg +VFPbQLchQLSRfbMtdHGH +lfVrhnlRRqrJZVDJdHSWCvJCJSbj +BFsgcgMNNQgSvbfCff +ffNPcMtzqPlnmRGh +ZJplFmRJmWRJRWmTJCvtTtnLCtndCqtqnr +SQsVPQHBQZNSNSLCfSLrcLcrrr +VMjPjbNMDsVHmRllmZpZWmjh +LcTLRbJhhdhLJbbclfVvfWQVWFRWFFfq +rZNttSNvtgsPPFsqBFPWQF +HGCSmHrrwNnHGMLpDhbzzpmJJv +VlSWzRtWSJqWdfhdqBdF +mTDHsmmmcHpgrCgCrTsMMtqfsFNsZqfdMZMNbd +TDcpvrpHCprCpHrmcQvTHgTQzSnLJnPPJlLzwJtRVJwLjJ +vZSWZJZJFvhZldZHdvvlphZSNGNnmzwCPNHNHGNrrRHGCPmP +bjfgcbjTQTFQBnGRRBCBNwBnCz +csqscsbssQLsgQcLgLQLQTQpFdlhdvdZdpZWhJplShWWtq +QgQvHnfflfBwQCfwlfglnQQccNcRqGGcjmcsGjddwdzsJc +DhZbTLZTDMVTsRzsqsRjszTz +FSZVtMLMMWbSgqSvPQlnpH +MMPllnnBmfSHvBgCLf +whZjGRJdjcNjjhRjCvgCfbSvCZLHfpZs +RRWGWwNRWwhwclmrgFmngFPMWm +VVHQGDGDGsdRrmZBQZRCVHZCNcSTTPMwwvTTwSSNqBqvgMvN +nfhdLfjFnJpblLbJjWhtnjWPScNnwSTPTPqTvgngNNvSvS +fpWljtpLjflfLfzlhZGQHZQVddHrrQRDRz +VCHCjwCwMSZSqQzhhQqcWZJD +GGGrFFgNRNNgmfnTdgmWQpczvPvQPWQJGDpzzc +lgTttRTgmfNRntrTTngrCbjCwJCHjLBBHlMVMsbB +szgPPlCblggVszhLmzvcvNrqpjNqmrqqpGvG +wBQDtBfQDtFvLjjctLqTMr +ZFWWdDLQFwSfDSBSQQBWnnnQVdbhgRVbsHzsshbClzzCVggb +VpVsHVcqcMVMMNHpsspstbMqzBztJZTBBfJfzTvZfvWJWSTv +mDDQgCQQQHdrwgSvZSmJJZvWfJJf +drCjggDlPdgrlbjNcnhcHsbpsj +cNNDRRpDcNcTpppsqHLQGLfRLvHzLH +lFntJjtbFFlsmsjvnGqHWLfhfqzzQh +sgPbjBJtPgbPJblblJgbgbwdBTwDCwpwrdZZVcCcDppc +GGclMjLnnjCMchcChLMLcnnzRFJDZJSRSzzzzDSShszPRS +VHgFQgwVwfNNpQVfHzQsPPPJDbmZbJDJbS +HfNVWdHVvgHgVWVNppNWVHwTlvBFcClBCjcTLTlBnnLrTL +GTLdlJhffQwDRvWLrp +HVZVNjjsPqzNjNNmNgDWMrRQpWvWRHrDHBWp +VCqVzjPjCpVqCVPCsbctcnblcGlTbGnlbFJf +flHdfdBNdZcflBMjqMjBNfZQhvJbGvqvsshJQsJCJDWvvD +gFTzRRpzRTwbgbLmtCvsJhWsChrWCrtWCC +VzzzFbVRLPznmRBffPNBHNMdlZfl +FFFMwCqJFFmrRwgnbLrL +GpjGpQHQpfjdjDRnLrbrRQmJzzgg +BphfhDcNcHNvPBvSqJMWJS +NndbWpDBNbjvWLZqWsWQ +JPFFTSPfgcMgftQQGjvTmsGqzssG +gPgcfcVFgcHqSqVhbBCHlpbbpDlhDD +FSdfWFTTBnjsDCjsmrrT +pQzLRVLppLGcQjqbmVDJsChCvCbVsm +qHLRGqqZzGjLqBNMFdnHlNlBFN +DjqbfBTchDjqqCjjCTWNTbdzSVzGZQGBwZnQnVwpSSnQ +ssJlPrtvMsRLrrJQGNZJSpZpGzSG +rlFssHsvPRPMvFmtHvtqjhTgjbqhWqNmNqgDNh +vcpnRqwwLLbvvcGpDQWDFSCgMrWWQWRR +gtNfBfllrFlHrlrl +ZPzftBmsNBNBPJBZPmZPNtmPdGLsqbwqpqcndVLLGpVGvqgV +vRBfQqqBQPfbrFvPBvPbhLDVDVDQZVVtZtlWLLLt +jcJmFFwnhJVZLWVl +sHTcmNNHzncmcjmdsBCrBCPCrBBqCFrqzb +bbZRnGmNnBGGMNRTgCmWWGGSrvSvFHvzFvFQDF +LjwphpdPdLpLJVqfJrQzDzfrvQHSvDcQrQ +DJphdwDsnmbZsTZM +rdNrZNBSzSztnNzWCcNpHlMwlwHWlM +QqLGLJvLjtvQWhgHgchHwHJw +GtjTGtDRqvfLRGnrzsmZmfrVFBrV +TdMhZrTTNvwphcLL +WnnmffmDWnWPsPCJNpNcpNVNQp +fsjbWfFFfnmmDsFDnnflSSdczlMdTHTzTTRRBdtT +cMcPcMcwgWJMjWWhFWCCQCmqCFdh +bSLVLblnNnLbVfnsbSbCChSQdChptpdqZrmCmZ +DLGNfnGVDNDHbfzjRcRgqHMRBJPc +HVFVlVHjzjjlCJjHjCjnvDrggrgLdqzddMqrzz +SSfBTmtNdLqngvrm +TwnNfPWWpBSBNtTHZCGlPHCQJHZHPV +prvccpFQpMcQBwsvssshdwSTPD +qbGHVbNJGqwdPgDrTsDJ +fGbGqqlGGHflqLlzZBBrRcrtrZlp +fCSPhltMBmPmbdgd +DjvJJscvTsHHDbWzBWsWbdwgLB +VVHDZvTppRcJVFFppvvRJDJqMSGqCtZdthttrnthSZMGCr +ZcSrSdrhDjBDDCmZdZmZjhwVHwqVVsMwgswVVwMfhw +PNvzTPNbnzcPbGQNJTvqwsWgVgVMMWpQqwgHpp +JTPGPTzNttnbRTPlPtNNRlFrFmBcmDljjmBFSCmLZZBr +mNvRRCVMtNRdFNtMtBHHprpHgJgJWwpBnprg +LZDDlSLlTslDfbcpJJWndwcscnwr +qdZZGSDhMVRCGtmC +VGFjjgBShGdGzQczcGRG +MppqCDfCMwfLDfvNmrtWstRcMPzRMRsRsPQS +NwDCffLppbqqrqvTBngSbnBHglZllH +vdllJVDzmVDVqvvWvdqJlcWrCsfCsfSSsSJfCSfQQCCbCQ +jnTHZPZHMjZhMjTpHgMpgnbNqBstnfrtSSrBSNssCrfN +LHLTFLjTMTTTwjHhpHTcwmDcWVDlvRDmvqwWlW +rqQsSStdmsdLqlNNPGlGlV +FpFpzJNTcHzRHRHlGwFVLFBLFGVvlw +WCCjWRNJTJWhQhbhrbnd +jsQjfrRTRwzSsRTgNchlnlhqcnlQmQ +dFDtdFBDddHLJpVpHHtVbtHFCWlWlGlNlmGggNqgglmcchqb +dLDHMVdLtBBDBFVJBFthtJHRTvsMSvsTrTSRvPPjPzSwRP +CSPpSrLlrlPrPchLnSlbDbbRttDVhbGRDDJRtD +fzfvmzTMmfsFszsHZsHMHVfwtbjBDDGjtRBjQQGGJb +HmvmTFmqmTsHqzzzzdTsMMScndccdLppnLCSPcCLrVgr +pfMflRnfrnjrpjnFzDpfDMmMLRTLZVTgLsvdZgLLZHSVWZRd +tBGNhwPGcNBBWwZddsSTTPgVLPdT +JwthtwbbhNBQhwhbBCrzpnprnWnprlzWlClD +PPnZZjnFNDjlJJhtMddfTTdD +QGLHFWvQJtzfpvCt +swqSmmQWLQwFWLwwRcqNNBnnbgPqbPNbglVZ +GCLSjjZGZhpvGtBgjJlnJDhhJMVDPnJlJP +mNtQQwNzQRHWdJHnPTsddlln +zQrfmbtNbcQcrzmrRBZqBcvpjSGLZGLZBB +zGNzgsjDssvNbPlWJfJq +RLMVSRMLhCLZSMZHDSJWvpcqfbfhvpJqcWPv +dMVHLFHLZMLRLLFRHHHVZMgDTntgstGwznzGGnzjDFwG +wCLCHLBwzBtQRLHLbNFFfdqdDqVrVfBN +JGvljmgGZvMlfDRRnnnZnfND +GppRlgJlSllSgjMsmllpTjcCLczWztPWPwwwzWThtcQh +WvHbvvWnFHszDRSltcCctCFD +gCmJmCCPTPqpgrZtjdRtDRplcSjS +rJJrQPPJQmrmrhGTznCfLMMbfvWfbCWQ +TqBWtTbFBNNRRtwQpJJvvvZPpTSQ +fRMfsMssrGhSmMwSQvvZJm +VggcVlsCgHnVFnndbbnR +NdrSSWBNPPSWWHPPlwlLZHLZLMhjlLLH +pVptMTgVTzLwZTzlbF +qsRmRJtsMvMqgqgRvCdcSrWSPcWrDmmdBN +nbJnfqWcmCMnSBSHwzWBsHHz +dVpdvdppdptppDlvlHcczSgNcgww +VGTdTVtGtRLFPTDbcfCmmcCQJQjcrT +VTjrjrjTlTjQMdpGrWMSHvSG +wnNJbDmttnwnhNwcJmNGdvWvMSfvMfhSSppSdp +JznFnNsGnzzGFDJsFNmLgVVQZBlLZjQTLTjTls +hpngHwcpWHgjjfhzTJBfBB +RFFbFlQlSdRsbRQQMGPRGdSGjBvvNTvzZMBvjzBBTJTvMBBT +GPSSPDDDFzGlGGRzLzGGPRWqnprcgCHwCHpwHWVcncLV +LLlLGffQLPRThRwP +MpZjbmznWqmqZznmzmpZqZnMRgPBCTPfgRTTwTjhwBPPghjP +VnZpMsMMJnWsmnJpJmzrtFlGQFrHGvSvfHStNV +MQqHMQPnqmpDdTLLRnDjsj +NGFzwgtLBtFFGrrCtzgfgCNgSsdTDSSTsdssjDdSlZRjTSBs +zCwNLthfrbCgzzhqhmccJPhQHVmV +SndBVcgdqcRBRcdPBBcVcQTSSMLMlTssMNMWsHMsLQ +GmJvZvhqpvZtNwwWLTTLwMMm +JFJpzFGZqjvhGZcjBPcCBBPnnVBc +rJWbqTvwvJNbPDPPvLcZvPDp +QMnfBsjmFPLcHRDfPp +lQlMlmtFsMMBstljlnGhtMhmGNqJqTcWNNbWdGwdNNJCrTrq +LcjcNCQNQWDpRDjRTj +vWvszVVSsBGWsTJRFHRJTTSTRJ +vvGbtqbGVVBqtzbqvBdzVLWNLClwnwMLWlQNMfdPQP +TWBZsWrjzZzWBrBsrrsTLNNJvFnJVmlSFFQnGpmnSJJS +qdCggdqqqhhqwhRbCwbCPqhlJFPPGJQVvvvnpVVmPnnFvS +ffgCfghDqDdCsGWZjTsLrsfW +QzQSSQmzSsLQcLmrcsLzccgqCnwqCtZDnDnrZwgnqTTT +hFRHHRPRPMtWPGVPRlMljRPCgWBBDTgJBgnwqTZDBZDWDB +jPjPHRMjjvdjVFhdNfbsbbQfbcddmNtL +jJlTqMqJtdztJqzcSJSlTdSlprLsRRHwcRRrsrHbrnnRHsHL +VVVMWNNWmNmLnPLRHrLp +NGhfvvVWBNfNNCNCQTMqjzgTQBSSSqll +SSSRMRSRpnMRHLqWLfPlDGlGWldD +hbNtlmvrNrsVDWsGPfPfqG +jvbBNmvlJjRcCzHFppCJ +hhWWPjnBGBGnjqBWSnhhsNLllLNcLczJcqcTlLTlfl +FHvFFMHwdmvrDbwCbbvHwdHnZTMLzTNTczflJTZclzNLlLcJ +HdFFvdDvpCDdrnwrGhBQhWRRpsjQWWQW +sBsvtJtdRdjNbWWrTllqlNgg +nSZSnPPZzMSnSlScWWWgrVWCrqgrWMWr +lzSncQcLZLzlwDvtdDdFdFJJhHvJ +lpsTLDlTtFtlWHPDvvgPfgMrQQJM +zmNbzcNjzldjwmbdbhhjcjRgfwrgvMwMMSRJSvQQvrRf +ZhjqcjzNhmzNqBqNznmcWHplCFGnpCtFsGWHHWsH +ZPGQBFHFbhSrHqtfSrSr +nMdznzzMDTnjMQrMWtrMptplqpqS +wzjczJmccTJCmcVghZBJbPBQBbVh +wLLMJbqSBBnnJhbvbFSSRRlztTrHzrrrrd +QNNGVPjWPGVqltTHWCqCdH +sjNGmmGVGgQNGDVmsVpgqQVpMDhvbLwMffZfhZbLnfLLLZwb +gQLcQrMtBPdwSBsSlmBm +TfCpTJnTbfqgsgwgppsSzp +jVbvTnvWfJnJjjbfCjWWjrFPrLMtcDPgLMQQRtgZVF +gwpHvpgwngGHcnvNvgnmsqCzmMzlfqmmqzHHCm +JrdSLdBVPRDtRtPfPPzCJhjqmljzmmqszzsM +SWLDDtVdrZWtSBRZfRcwgFGnpNFpnTnWnTvT +rpcnHrwrhWccNZDDBBgBVCSW +nmzFRRjFmmJQNDJC +qznMlqGnzRtRGvqGFRPrdMhwTpTLfLcppLHp +wthvbmhmChWMRJLJzngZpzLLNC +SsdBVjSTjBdffBFfcSdVHfTrnDZGpQgNZHNnLZGpJngJGLng +sSdTcdVScdcrccjcrBPrBSjcvmRRwlWPhwmqtgWhMPtmMMqR +CJJBdBCrHdBhtRHctBQhRMrBwZpwZWNZNSNTwSNpQWpZsSSW +LVFnvnbDjLsDPsPqFFvPvDnTzSTwNwPZpSmpSpgmgZWNTW +LjlflbFjsvVlrHcrHtrfcChH +tVLJGNRtfBBNGBrfrbzmfhPsrsPC +DWWDQHQgllSFqFzcsJmzzSSzmrrs +MJFQDgMqnHlDvFdGNBNNZGNVVvjV +wnNwGCBBFNWBqjFBnLLGVDHhHmDPHvZTjTvTrPvD +bMbttVScMJQtdgSgstbJRSPmrTHmHmrmmSDZlrPrPDhv +cMbgpsbVbzbdRMRFWLqzBfLGwwwwfW +JpSnGSGpbGgsWWPHJrdfsT +MNsRqNNvMQDTLWHlffNHLN +qqmtRzRvCRRQDqjqjDmsmRpZwSZbcwbnCcCSBBnSSnnC +TWqlqpRqRptqlRhrmtGGzhbSrSdz +VgsBVMvgVZfZvPsMVNvfZfvVbSPdhFPFhbzLhJdGFJmLhhhL +QZgvZgvHwbwHbMsMRllRjDRDnQRqlRjl +fsPQwnHnHLLfnBBnwwGtjTGRWTWTWwhV +jblbdjZFDMbGllqTGTtVlq +gmdMgZMbjpZDcrrDgdmszsPLpQfpBPPnNQNLLz +HRsPPGMhLPMrnPchPSwStjbSttSvtHSqQw +dfsCfpCJVJCvdFBFwStwjj +gTNWmWfTNVZVJzZWpWJgTpfhnDrMnDclgDlDrDRnRcMLDs +ZQZQJMqdwmZvqfPmwRjpBBjHjnshnjtt +zcTPTLDTFWLGTrTSWPcDSSHjRlhRsDhHslslssBRljjj +TrNFLbTWrGNZvmvVQPQV +htfLgmtSLcTWNLcT +slbHlBBGbqRsblBHvdNJJcjFFNBTVWWWcn +bbQsHMMblHrMsGRqvQhwCTQCwtQCzSpfmS +zmqdphmFmSpTzhdqhFmwjjGbtcvDbcGGjllGQjSP +HJFrMCsVLrHRRMCNrVMVnctvstlGcQlPtGGjQtGlvP +RFLHLVWrNgVJzwzwfgffwdfp +vdMjSmMMpmMWhRpndRmZnhvHqLpGHcJGGGDLHHLGcfcLfc +lPBwwrsCgLFggcqqLW +TWszsWNBTNdmSRvjbZZT +zFlBGpzzzLLNjBwPcwwmcNPfWNQn +VHSHRJTJDSVVnmcVVPpWmpnf +DMZHHrDHHrJrrZrShZsHGbMBbFgGjGCgjpFlBzzb +FVMpsvTqvqMssVsWZSrqWFvwlGDGwQzwfwQQNLzDlwlZwf +hPbgBHhJJcJPwCwDpNllCCHC +pnjbBmjgbgmqtSmsTtsF +DHZHmfTmCfjDZHMZmzffHHnQwwTBdQwbSdBGBQwhBQTQww +cqstRFWNtLrNFwdVShlBSlhBRl +StJWpLptNWLtJcpqPrFHDjZzzvnDDHPCZjPvvz +hzffhGVGGhzRqTBLTqHL +sFFFsMQlwJMsmrBFSNHTHNqrTS +pbdsJMdJMJbwbmJJtbTtgnffGgVVChvD +FvJnFnCpQTddSSmFdFpPPsVhppDjBzjDVhDV +RgZMZbsgzlDPlhjb +cHHHRgRZgfHHZGZfHZcLLHrrCrmJCmddrsvdJsmvFFQG +dpJDdZwLnvdvFmFMmHjslMLH +CGCztgPhWCWhzzzNNPGfrrWfmbbsmmHjFHDMsbHMsjFPjbHm +rNQDGzzhCCfNrzrDzChTcZZvQcTRJpTwdvQpVc +VpvNGhGHGNhHbPsbVbvfFtLCzSCFSBsCFSFCLB +MlqJwTnrRRrRnMlQMHfHzHzWFWtmTzLWFC +ljZDDHqqjqRbpNhjNNgcgc +qrQtDzcQzbrcfdbqrQrthtscSsvpvnsSHpTpLpspmsSs +CVwNNVRNBSHsLSFBTv +CVVVNZjlVlGwlGlljNlWJVrrfqbPQQqHqJhhftbfDJqf +lpmrPDPDjPlmWrVzPztZwFjtFbBnRtZbbcRL +dnqJCCgQdNqbqRbRbBLt +QGhGddGCTdMHNTGgshgJhzvSmWWPSsnprpPzWzsWlr +hCJHTdJJNvTdSSNssjvfwgntwDgtgwDGCtZwtRRB +mbllFmFMFbMVWWLpbpZwwBZTZnnVwnTggtDB +MmzLQpFPTmPzHvfJNNzhNs +dzgBwzlgrrBrVLLlwLBgBlgRScDMMDDswMsHZRGDsZGZmM +HPfPbjCFJjCvfnnsjsDDcccmZsRSMc +hCvHfWPPnvJhPWpqNNhqLqzLqLLd diff --git a/three.hs b/three.hs deleted file mode 100644 index c26d86b..0000000 --- a/three.hs +++ /dev/null @@ -1,22 +0,0 @@ -import Data.Char - -splitlist :: [a] -> ([a],[a]) -splitlist list = (take n list,drop n list) - where n = (length list) `div` 2 - -inBoth :: (Eq a) => ([a],[a]) -> [a] -inBoth (first,second) = do - inFirst <- first - if (inFirst `elem` second) then return inFirst else [] - -toPriority :: Char -> Int -toPriority char = ordNum - (substract ordNum) - where - ordNum = (ord char) - substract n - | n < 97 = 38 - | otherwise = 96 - -main = do - input <- readFile "three-input.txt" - print $sum $ map (toPriority . head . inBoth . splitlist ) $ lines input diff --git a/three2.hs b/three2.hs deleted file mode 100644 index a3d7b0a..0000000 --- a/three2.hs +++ /dev/null @@ -1,22 +0,0 @@ -import Data.Char -import Data.List.Split - - -inAll :: [String] -> [Char] -inAll [first,second,third] = do - eachChar <- first - if (eachChar `elem` second && eachChar `elem` third) then return eachChar else [] - - -toPriority :: Char -> Int -toPriority char = ordNum - (substract ordNum) - where - ordNum = (ord char) - substract n - | n < 97 = 38 - | otherwise = 96 - -main = do - input <- readFile "three-input.txt" - print $sum $ map (toPriority . head . inAll ) $ chunksOf 3 $ lines input - --print $map ( inAll ) $ chunksOf 3 $ lines input diff --git a/two.hs b/two.hs deleted file mode 100644 index 146a826..0000000 --- a/two.hs +++ /dev/null @@ -1,41 +0,0 @@ - - -data Rock -data Paper -data Scissors - -type X = Rock -type Y = Paper -type Z = Scissors - -type A = Rock -type B = Paper -type C = Scissors - -data Action = X | Y | Z deriving (Show,Read, Eq) -data Enemy = A | B | C deriving (Show,Read, Eq) - -data Game = Game Enemy Action deriving (Show,Read) - -selectedScore :: Action -> Int -selectedScore X = 1 -selectedScore Y = 2 -selectedScore Z = 3 - -resultScore :: Game -> Int -resultScore (Game A X) = 3 -resultScore (Game A Y) = 6 -resultScore (Game A Z) = 0 -resultScore (Game B X) = 0 -resultScore (Game B Y) = 3 -resultScore (Game B Z) = 6 -resultScore (Game C X) = 6 -resultScore (Game C Y) = 0 -resultScore (Game C Z) = 3 - -gameScore :: Game -> Int -gameScore (Game enemy action) = (resultScore (Game enemy action)) + selectedScore action - -main = do - input <- readFile "input.txt" - putStrLn $ show$ sum $ map (gameScore . read . ("Game "<> )) $ lines input diff --git a/two2.hs b/two2.hs deleted file mode 100644 index 6d1991d..0000000 --- a/two2.hs +++ /dev/null @@ -1,44 +0,0 @@ - - -data Rock -data Paper -data Scissors - -type X = Rock -type Y = Paper -type Z = Scissors - -type A = Rock -type B = Paper -type C = Scissors - -data Action = X | Y | Z deriving (Show,Read, Eq) -data Enemy = A | B | C deriving (Show,Read, Eq) - -data Game = Game Enemy Action deriving (Show,Read) - -selectedScore :: Action -> Int ---selectedScore X = 1 ---selectedScore Y = 2 ---selectedScore Z = 3 -selectedScore X = 0 -selectedScore Y = 3 -selectedScore Z = 6 - -resultScore :: Game -> Int -resultScore (Game A X) = 3 -resultScore (Game A Y) = 1 -resultScore (Game A Z) = 2 -resultScore (Game B X) = 1 -resultScore (Game B Y) = 2 -resultScore (Game B Z) = 3 -resultScore (Game C X) = 2 -resultScore (Game C Y) = 3 -resultScore (Game C Z) = 1 - -gameScore :: Game -> Int -gameScore (Game enemy action) = (resultScore (Game enemy action)) + selectedScore action - -main = do - input <- readFile "input.txt" - putStrLn $ show$ sum $ map (gameScore . read . ("Game "<> )) $ lines input