Numbers with prime digits whose sum is 13: Difference between revisions

m
→‎{{header|Haskell}}: Slightly reduced one expression.
(→‎{{header|Haskell}}: As an unfold, in the pattern of Nigel Galloway's recursion.)
m (→‎{{header|Haskell}}: Slightly reduced one expression.)
Line 188:
where
primeDigits = [2, 3, 5, 7]
step xs =
let nvs =
fmap ((,) <*> sum) ((<$> xs) . flip (<>) . return =<< primeDigits)
in ( nvs >>=
(\nv ->
[ unDigits $ fst nv
| 13 == snd nv ])
, nvs >>=
(\nv ->
[ fst nv
| 12 > snd nv ]))
go xs
| null xs = Nothing
| otherwise = Just (step xs)
step xs =
let nvsf nv =
[ unDigits $ fst nv
| 13 == snd nv ])
in ( nvs >> g nv =
(\nv ->[ fst nv
, nvs | 12 >>= snd nv ]
in ((,) . (>>= f) <*> (>>= g))
fmap (((,) <*> sum) <$> ((<$> xs) . flip (<>) . return =<< primeDigits))
 
unDigits :: [Int] -> Int
9,659

edits