ðŸŽ‰ Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io ðŸŽ‰

# PranaliSatalgaonkar's solution

## to Difference Of Squares in the TypeScript Track

Published at Jul 19 2020 · 0 comments
Instructions
Test suite
Solution

Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.

The square of the sum of the first ten natural numbers is (1 + 2 + ... + 10)Â² = 55Â² = 3025.

The sum of the squares of the first ten natural numbers is 1Â² + 2Â² + ... + 10Â² = 385.

Hence the difference between the square of the sum of the first ten natural numbers and the sum of the squares of the first ten natural numbers is 3025 - 385 = 2640.

You are not expected to discover an efficient solution to this yourself from first principles; research is allowed, indeed, encouraged. Finding the best algorithm for the problem is a key skill in software engineering.

## Setup

Go through the setup instructions for TypeScript to install the necessary dependencies:

https://exercism.io/tracks/typescript/installation

## Requirements

Install assignment dependencies:

``````\$ yarn install
``````

## Making the test suite pass

Execute the tests with:

``````\$ yarn test
``````

In the test suites all tests but the first have been skipped.

Once you get a test passing, you can enable the next one by changing `xit` to `it`.

## Source

Problem 6 at Project Euler http://projecteuler.net/problem=6

## Submitting Incomplete Solutions

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

### difference-of-squares.test.ts

``````import Squares from './difference-of-squares'

describe('Squares', () => {

describe('up to 5', () => {
const squares = new Squares(5)

it('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(225)
})

xit('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(55)
})

xit('gets the difference', () => {
expect(squares.difference).toBe(170)
})

})

describe('up to 10', () => {
const squares = new Squares(10)

xit('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(3025)
})

xit('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(385)
})

xit('gets the difference', () => {
expect(squares.difference).toBe(2640)
})

})

describe('up to 100', () => {
const squares = new Squares(100)

xit('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(25502500)
})

xit('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(338350)
})

xit('gets the difference', () => {
expect(squares.difference).toBe(25164150)
})

})

})``````
``````import Squares from './difference-of-squares'

describe('Squares', () => {

describe('up to 5', () => {
const squares = new Squares(5)

it('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(225)
})

it('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(55)
})

it('gets the difference', () => {
expect(squares.difference).toBe(170)
})

})

describe('up to 10', () => {
const squares = new Squares(10)

it('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(3025)
})

it('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(385)
})

it('gets the difference', () => {
expect(squares.difference).toBe(2640)
})

})

describe('up to 100', () => {
const squares = new Squares(100)

it('gets the square of sum', () => {
expect(squares.squareOfSum).toBe(25502500)
})

it('gets the sum of squares', () => {
expect(squares.sumOfSquares).toBe(338350)
})

it('gets the difference', () => {
expect(squares.difference).toBe(25164150)
})

})

})``````