diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f5219f8c..e8aa31e1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,13 +11,15 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} + - run: npm install - run: npm test diff --git a/package.json b/package.json index f782ac5a..2d41a5d2 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,12 @@ { "name": "split-integer", "version": "1.0.0", - "description": "Create tests for splitInteger function", + "description": "", + "main": "splitInteger.js", "scripts": { - "init": "mate-scripts init", - "start": "mate-scripts start", - "lint": "mate-scripts lint", - "test:only": "mate-scripts test", - "update": "mate-scripts update", - "postinstall": "npm run update", - "test": "npm run lint && npm run test:only" + "test": "jest" }, - "author": "Mate academy", - "license": "GPL-3.0", "devDependencies": { - "@mate-academy/eslint-config": "*", - "@mate-academy/scripts": "^0.9.7", - "eslint": "^5.16.0", - "eslint-plugin-jest": "^22.4.1", - "eslint-plugin-node": "^8.0.1", - "jest": "^24.5.0" - }, - "mateAcademy": { - "projectType": "javascript" + "jest": "^29.0.0" } } diff --git a/splitInteger.js b/splitInteger.js new file mode 100644 index 00000000..54d30e6e --- /dev/null +++ b/splitInteger.js @@ -0,0 +1,13 @@ +function splitInteger(value, numberOfParts) { + const base = Math.floor(value / numberOfParts); + const remainder = value % numberOfParts; + + const result = Array(numberOfParts).fill(base); + for (let i = 0; i < remainder; i++) { + result[i]++; + } + + return result.sort((a, b) => a - b); +} + +module.exports = splitInteger; diff --git a/splitInteger.test.js b/splitInteger.test.js new file mode 100644 index 00000000..5b445f49 --- /dev/null +++ b/splitInteger.test.js @@ -0,0 +1,8 @@ +const splitInteger = require('./splitInteger'); + +test('splitInteger basic tests', () => { + expect(splitInteger(8, 1)).toEqual([8]); + expect(splitInteger(6, 2)).toEqual([3, 3]); + expect(splitInteger(17, 4)).toEqual([4, 4, 4, 5]); + expect(splitInteger(32, 6)).toEqual([5, 5, 5, 5, 6, 6]); +});