#147
Pascal's Trapezoid
Difficulty: | Easy |
Topics: | seqs |
Write a function that, for any given input vector of numbers, returns
an infinite lazy sequence of vectors, where each next one is constructed from the
previous following the rules used in Pascal's Triangle. For example, for [3 1 2], the
next row is [3 4 3 2].
Beware of arithmetic overflow! In clojure (since version 1.3 in 2011), if you use an
arithmetic operator like + and the result is too large to fit into a 64-bit integer,
an exception is thrown. You can use +' to indicate that you would rather overflow into
Clojure's slower, arbitrary-precision bigint.
(= (second (__ [2 3 2])) [2 5 5 2]) | |
(= (take 5 (__ [1])) [[1] [1 1] [1 2 1] [1 3 3 1] [1 4 6 4 1]]) | |
(= (take 2 (__ [3 1 2])) [[3 1 2] [3 4 3 2]]) | |
(= (take 100 (__ [2 4 2])) (rest (take 101 (__ [2 2])))) |