aboutsummaryrefslogtreecommitdiff
path: root/challenge-076
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2021-01-14 00:51:43 -0500
committerchirvasitua <stuart-little@users.noreply.github.com>2021-01-14 00:51:43 -0500
commit10ed97b35a250b490c858f0c618fe6436d934fa1 (patch)
treea2fd60dff6fae6d47a0e5e7e4af266789d75dc8a /challenge-076
parentb7eaedf3966c6e55b67a90af662a396ca524b5c0 (diff)
downloadperlweeklychallenge-club-10ed97b35a250b490c858f0c618fe6436d934fa1.tar.gz
perlweeklychallenge-club-10ed97b35a250b490c858f0c618fe6436d934fa1.tar.bz2
perlweeklychallenge-club-10ed97b35a250b490c858f0c618fe6436d934fa1.zip
1st commit on 076_haskell
Diffstat (limited to 'challenge-076')
-rw-r--r--challenge-076/stuart-little/README2
-rwxr-xr-xchallenge-076/stuart-little/haskell/ch-1.hs23
-rwxr-xr-xchallenge-076/stuart-little/haskell/ch-2.hs17
3 files changed, 41 insertions, 1 deletions
diff --git a/challenge-076/stuart-little/README b/challenge-076/stuart-little/README
index 76119cbbb8..78439907de 100644
--- a/challenge-076/stuart-little/README
+++ b/challenge-076/stuart-little/README
@@ -1 +1 @@
-Solutions by Stuart Little.
+Solutions by Stuart Little
diff --git a/challenge-076/stuart-little/haskell/ch-1.hs b/challenge-076/stuart-little/haskell/ch-1.hs
new file mode 100755
index 0000000000..088270c3d6
--- /dev/null
+++ b/challenge-076/stuart-little/haskell/ch-1.hs
@@ -0,0 +1,23 @@
+#!/usr/bin/env runghc
+
+{-
+run <script> <number>
+
+returns a list of primes that sums to the target
+-}
+
+import System.Environment (getArgs,)
+import Data.Numbers.Primes (primes,isPrime,)
+
+primeSummands :: Int -> [Int]
+primeSummands nr
+ |nr<=1 =[]
+ |isPrime nr =[nr]
+ |isPrime (nr - 2) =[2,nr-2]
+ |odd nr = 3:(primeSummands (nr-3))
+ |otherwise = [p,nr-p] where
+ (p:_) = filter (isPrime.(nr-)) primes
+
+main = do
+ nr <- getArgs >>= return.(read::String->Int).head
+ print $ primeSummands nr
diff --git a/challenge-076/stuart-little/haskell/ch-2.hs b/challenge-076/stuart-little/haskell/ch-2.hs
new file mode 100755
index 0000000000..400b49fcc0
--- /dev/null
+++ b/challenge-076/stuart-little/haskell/ch-2.hs
@@ -0,0 +1,17 @@
+#!/usr/bin/env runghc
+
+-- run <script> <path-to-dict>
+
+import System.Environment (getArgs,)
+import Data.List (isInfixOf,transpose,)
+import Data.Tuple.Extra ((&&&),)
+import Data.Universe.Helpers (diagonals,)
+import Data.Char (toUpper,)
+
+allDirections :: [[a]] -> [[a]]
+allDirections mat = concat $ take 4 $ map ((uncurry (++)).(id &&& diagonals)) $ iterate (reverse.transpose) mat
+
+main = do
+ wrds <- getArgs >>= (readFile.head) >>= (return.words)
+ let whereToLook = allDirections ["BIDEMIATSUCCORST","LDEGGIWQHODEEHDP","USEIRUBUTEASLAGU","NGNIZILAICOSCNUD","TGMIDSTSARAREIFG","SRENMDCHASIVEELI","SCSHAEUEBROADMTE","HWOVLPEDDLAIULSS","RYONLASFCSTAOGOT","IGUSSRRUGOVARYOC","NRGPATNANGILAMOO","EIHACEIVIRUSESED","SETSUDTTGARLICNH","HVRMXLWIUMSNSOTB","AEAOFILCHTODCAEU","ZSCDFECAAIIRLNRF","ARIIANYUTOOOUTPF","RSECISNABOSCNERA","DRSMPCUUNELTESIL"]
+ mapM_ putStrLn $ filter ((\w -> any (isInfixOf w) whereToLook).(map toUpper)) $ filter ((>=5).length) wrds