From 03891e162a6e891e74cd634633f09d57725c0f1e Mon Sep 17 00:00:00 2001 From: Anastasiia Chuchvara Date: Sat, 10 Nov 2018 09:37:52 +0200 Subject: [PATCH 1/2] homework2 done --- .babelrc | 3 +++ package.json | 4 ++++ src/dragon-curve/index.js | 8 +++++--- src/dragon-curve/index.spec.js | 9 +++++++-- src/rotate-matrix/index.js | 4 +++- src/rotate-matrix/index.spec.js | 14 ++++++++++++-- 6 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 .babelrc diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..002b4aa --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["env"] +} diff --git a/package.json b/package.json index 5961ab2..395e93f 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,10 @@ }, "homepage": "https://github.com/front-camp-2018/project-scaffoldings#readme", "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-jest": "^23.6.0", + "babel-preset-env": "^1.7.0", "css-loader": "^1.0.0", "eslint": "^5.6.1", "eslint-plugin-jest": "^21.25.1", diff --git a/src/dragon-curve/index.js b/src/dragon-curve/index.js index e652f2e..14f9ae8 100644 --- a/src/dragon-curve/index.js +++ b/src/dragon-curve/index.js @@ -1,3 +1,5 @@ -export const dragonCurve = n => { - // logic... -}; +const invert = st => [...st].map(i => i === '0' ? 1 : 0).reverse().join(''); + +export const dragonCurve = n => n > 1 + ? dragonCurve(n - 1) + '1' + invert(dragonCurve(n - 1)) + : '1'; diff --git a/src/dragon-curve/index.spec.js b/src/dragon-curve/index.spec.js index 84c6e42..8a8c6da 100644 --- a/src/dragon-curve/index.spec.js +++ b/src/dragon-curve/index.spec.js @@ -1,5 +1,10 @@ -import {dragonCurve} from './index' +import {dragonCurve} from './index'; describe('dragonCurve::', () => { - // need to implement + it('should return a dragonCurve number', () => { + expect(dragonCurve(1)).toEqual('1'); + expect(dragonCurve(2)).toEqual('110'); + expect(dragonCurve(3)).toEqual('1101100'); + expect(dragonCurve(4)).toEqual('110110011100100'); + }); }); diff --git a/src/rotate-matrix/index.js b/src/rotate-matrix/index.js index d1ef07d..e34a28b 100644 --- a/src/rotate-matrix/index.js +++ b/src/rotate-matrix/index.js @@ -1,4 +1,6 @@ export const rotateMatrix = arr => { - // logic... + return arr.length !== 0 && arr.length === arr[0].length + ? arr[0].map((elem, i) => arr.map( elem => elem[i])) + : new Error('this is not a square matrix'); }; diff --git a/src/rotate-matrix/index.spec.js b/src/rotate-matrix/index.spec.js index 1485bc9..a839516 100644 --- a/src/rotate-matrix/index.spec.js +++ b/src/rotate-matrix/index.spec.js @@ -1,5 +1,15 @@ -import {rotateMatrix} from './index' +import {rotateMatrix} from './index'; describe('rotateMatrix::', () => { - // need to implement + it('should return a rotated matrix', () => { + expect(rotateMatrix([[1, 2], [3, 4]])).toEqual([[1, 3], [2, 4]]); + expect( + rotateMatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) + ).toEqual([[1, 4, 7], [2, 5, 8], [3, 6, 9]]); + }); + + it('should throw error if passed not a square or empty matrix', () => { + expect(rotateMatrix([[],[]])).toEqual(new Error('this is not a square matrix')); + expect(rotateMatrix([[1, 2, 3],[1, 2, 3]])).toEqual(new Error('this is not a square matrix')); + }); }); From 6fbf472ecd0404d6278ef899f3bdb562a84fd1d0 Mon Sep 17 00:00:00 2001 From: Anastasiia Chuchvara Date: Sat, 10 Nov 2018 09:57:05 +0200 Subject: [PATCH 2/2] Add travis config --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9ef0fde --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "lts/*"