Sha256: 2d4e3c696fd176972a9c5c1901104c993363036896759461247ecc967d7041e5

Contents?: true

Size: 794 Bytes

Versions: 240

Compression:

Stored size: 794 Bytes

Contents

module LargestSeriesProduct
  ( largestProduct
  ) where

import Prelude
import Data.Array (drop, length, take, (:))
import Data.Foldable (maximum, product)
import Data.Int (fromString)
import Data.Maybe (Maybe(..))
import Data.String (singleton, toCharArray)
import Data.Traversable (sequence)

spans :: forall a. Int -> Array a -> Array (Array a)
spans n a
  | length a < n = []
  | otherwise    = take n a : spans n (drop 1 a)

toIntArray :: String -> Maybe (Array Int)
toIntArray = toCharArray
             >>> map (singleton >>> fromString) 
             >>> sequence

largestProduct :: String -> Int -> Maybe Int
largestProduct digits span
  | span == 0 = Just 1
  | span < 0  = Nothing
  | otherwise = do
    is <- toIntArray digits
    spans span is
      # map product
      # maximum

Version data entries

240 entries across 240 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.179 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.178 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.177 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.176 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.175 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.174 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.173 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.172 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.171 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.170 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.169 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.167 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.166 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.165 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.164 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.163 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.162 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.161 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs
trackler-2.2.1.160 tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs