jlcrochet's solution

to Pascal's Triangle in the CoffeeScript Track

Published at Jan 09 2020 · 0 comments
Instructions
Test suite
Solution

Note:

This exercise has changed since this solution was written.

Compute Pascal's triangle up to a given number of rows.

In Pascal's Triangle each number is computed by adding the numbers to the right and left of the current position in the previous row.

``````    1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
# ... etc
``````

Refer to the Exercism CoffeScript page for getting started with CoffeeScript.

In order to run the test, you can run the test file from the exercise directory:

``````jasmine-node --coffee .
``````

Source

Pascal's Triangle at Wolfram Math World http://mathworld.wolfram.com/PascalsTriangle.html

Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

pascal-triangle-spec.coffee

``````Pascal = require './example.coffee'

describe 'Pascal', ->
it 'with one row', ->
arr = new Pascal(1)
expect(arr.array).toEqual [[1]]

xit 'with two rows', ->
arr = new Pascal(2)
expect(arr.array).toEqual [[1], [1,1]]

xit 'with three rows', ->
arr = new Pascal(3)
expect(arr.array).toEqual [[1], [1,1], [1,2,1]]

xit 'with four rows', ->
arr = new Pascal(4)
expect(arr.array).toEqual [[1], [1,1], [1,2,1], [1,3,3,1]]

xit 'with five rows', ->
arr = new Pascal(5)
expect(arr.array).toEqual [[1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]

xit 'should equal 20th row', ->
arr = new Pascal(20)
expect(arr.array[19]).toEqual [1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1]``````
``````class Pascal
constructor: (n) ->
@array = [[1]]

for _ in [1...n]
last = @array[@array.length - 1]
@array.push((last[j - 1] ? 0) + (last[j] ? 0) for j in [0..last.length])

module.exports = Pascal``````