Sha256: 1a1845abdf7540bf7c025fdad1d93296e41a0c056187ad54cc858e88e69991a4

Contents?: true

Size: 540 Bytes

Versions: 236

Compression:

Stored size: 540 Bytes

Contents

module PascalsTriangle
  (rows
  ) where

import Prelude
import Data.Array (drop, zip, (:))
import Data.Maybe (Maybe(..))
import Data.Tuple (uncurry)

type Row = Array Int
type Mat = Array (Array Int)

rows' :: Row -> Int -> Mat
rows' row 1 = [row]
rows' row n = row : rows' next (n - 1)
  where next = pairSum $ [0] <> row <> [0]
        pairSum r = map (uncurry (+)) (zip r (drop 1 r))

rows :: Maybe Int -> Maybe Mat
rows Nothing = Nothing
rows (Just n)
  | n < 0     = Nothing
  | n == 0    = Just []
  | otherwise = Just $ rows' [1] n

Version data entries

236 entries across 236 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.138 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.137 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.136 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.135 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.134 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.133 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.132 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.131 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.130 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.129 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.128 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.127 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.126 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.125 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.124 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.123 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.122 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.121 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs
trackler-2.2.1.120 tracks/purescript/exercises/pascals-triangle/examples/src/PascalsTriangle.purs