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/.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/*" 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')); + }); });