From 3fb698bbe091cbaa8d5d3f2256ebfb776523448d Mon Sep 17 00:00:00 2001 From: Andinus Date: Wed, 25 Aug 2021 20:10:19 +0530 Subject: JS: Solve hello-world, two-fer, square-root --- javascript/hello-world/.eslintrc | 29 ++++++++++++ javascript/hello-world/.npmrc | 1 + javascript/hello-world/README.md | 64 +++++++++++++++++++++++++ javascript/hello-world/babel.config.js | 15 ++++++ javascript/hello-world/hello-world.js | 3 ++ javascript/hello-world/hello-world.spec.js | 7 +++ javascript/hello-world/package.json | 37 +++++++++++++++ javascript/square-root/.eslintrc | 29 ++++++++++++ javascript/square-root/.npmrc | 1 + javascript/square-root/README.md | 61 ++++++++++++++++++++++++ javascript/square-root/babel.config.js | 15 ++++++ javascript/square-root/package.json | 36 ++++++++++++++ javascript/square-root/square-root.js | 3 ++ javascript/square-root/square-root.spec.js | 22 +++++++++ javascript/two-fer/.eslintrc | 29 ++++++++++++ javascript/two-fer/.npmrc | 1 + javascript/two-fer/README.md | 75 ++++++++++++++++++++++++++++++ javascript/two-fer/babel.config.js | 15 ++++++ javascript/two-fer/package.json | 37 +++++++++++++++ javascript/two-fer/two-fer.js | 3 ++ javascript/two-fer/two-fer.spec.js | 15 ++++++ 21 files changed, 498 insertions(+) create mode 100644 javascript/hello-world/.eslintrc create mode 100644 javascript/hello-world/.npmrc create mode 100644 javascript/hello-world/README.md create mode 100644 javascript/hello-world/babel.config.js create mode 100644 javascript/hello-world/hello-world.js create mode 100644 javascript/hello-world/hello-world.spec.js create mode 100644 javascript/hello-world/package.json create mode 100644 javascript/square-root/.eslintrc create mode 100644 javascript/square-root/.npmrc create mode 100644 javascript/square-root/README.md create mode 100644 javascript/square-root/babel.config.js create mode 100644 javascript/square-root/package.json create mode 100644 javascript/square-root/square-root.js create mode 100644 javascript/square-root/square-root.spec.js create mode 100644 javascript/two-fer/.eslintrc create mode 100644 javascript/two-fer/.npmrc create mode 100644 javascript/two-fer/README.md create mode 100644 javascript/two-fer/babel.config.js create mode 100644 javascript/two-fer/package.json create mode 100644 javascript/two-fer/two-fer.js create mode 100644 javascript/two-fer/two-fer.spec.js (limited to 'javascript') diff --git a/javascript/hello-world/.eslintrc b/javascript/hello-world/.eslintrc new file mode 100644 index 0000000..b8dab20 --- /dev/null +++ b/javascript/hello-world/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module" + }, + "globals": { + "BigInt": true + }, + "env": { + "es6": true, + "node": true, + "jest": true + }, + "extends": [ + "eslint:recommended", + "plugin:import/errors", + "plugin:import/warnings" + ], + "rules": { + "linebreak-style": "off", + + "import/extensions": "off", + "import/no-default-export": "off", + "import/no-unresolved": "off", + "import/prefer-default-export": "off" + } +} diff --git a/javascript/hello-world/.npmrc b/javascript/hello-world/.npmrc new file mode 100644 index 0000000..d26df80 --- /dev/null +++ b/javascript/hello-world/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/javascript/hello-world/README.md b/javascript/hello-world/README.md new file mode 100644 index 0000000..21fe8c9 --- /dev/null +++ b/javascript/hello-world/README.md @@ -0,0 +1,64 @@ +# Hello World + +The classical introductory exercise. Just say "Hello, World!". + +["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is +the traditional first program for beginning programming in a new language +or environment. + +The objectives are simple: + +- Write a function that returns the string "Hello, World!". +- Run the test suite and make sure that it succeeds. +- Submit your solution and check it at the website. + +If everything goes well, you will be ready to fetch your first real exercise. + +## Setup + +Go through the setup instructions for Javascript to install the necessary +dependencies: + +[https://exercism.io/tracks/javascript/installation](https://exercism.io/tracks/javascript/installation) + +## Requirements + +Please `cd` into exercise directory before running all below commands. + +Install assignment dependencies: + +```bash +$ npm install +``` + +## Making the test suite pass + +Execute the tests with: + +```bash +$ npm 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 `xtest` to +`test`. + + +## Submitting Solutions + +Once you have a solution ready, you can submit it using: + +```bash +exercism submit hello-world.js +``` + +## Submitting Incomplete Solutions + +It's possible to submit an incomplete solution so you can see how others have +completed the exercise. + +## Exercise Source Credits + +This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) + diff --git a/javascript/hello-world/babel.config.js b/javascript/hello-world/babel.config.js new file mode 100644 index 0000000..5cec972 --- /dev/null +++ b/javascript/hello-world/babel.config.js @@ -0,0 +1,15 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: 'current', + }, + useBuiltIns: 'entry', + corejs: 3, + }, + ], + ], + plugins: ['@babel/plugin-syntax-bigint'], +}; diff --git a/javascript/hello-world/hello-world.js b/javascript/hello-world/hello-world.js new file mode 100644 index 0000000..7e071c7 --- /dev/null +++ b/javascript/hello-world/hello-world.js @@ -0,0 +1,3 @@ +export const hello = () => { + return "Hello, World!"; +}; diff --git a/javascript/hello-world/hello-world.spec.js b/javascript/hello-world/hello-world.spec.js new file mode 100644 index 0000000..cd0b7ec --- /dev/null +++ b/javascript/hello-world/hello-world.spec.js @@ -0,0 +1,7 @@ +import { hello } from './hello-world'; + +describe('Hello World', () => { + test('Say Hi!', () => { + expect(hello()).toEqual('Hello, World!'); + }); +}); diff --git a/javascript/hello-world/package.json b/javascript/hello-world/package.json new file mode 100644 index 0000000..b642b30 --- /dev/null +++ b/javascript/hello-world/package.json @@ -0,0 +1,37 @@ +{ + "name": "@exercism/javascript", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript" + }, + "devDependencies": { + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/preset-env": "^7.12.11", + "@types/jest": "^26.0.19", + "@types/node": "^14.14.14", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.3", + "core-js": "^3.8.1", + "eslint": "^7.15.0", + "eslint-plugin-import": "^2.22.1", + "jest": "^26.6.3" + }, + "jest": { + "modulePathIgnorePatterns": [ + "package.json" + ] + }, + "scripts": { + "test": "jest --no-cache ./*", + "watch": "jest --no-cache --watch ./*", + "lint": "eslint ." + }, + "license": "MIT", + "dependencies": {}, + "version": "1.1.0" +} diff --git a/javascript/square-root/.eslintrc b/javascript/square-root/.eslintrc new file mode 100644 index 0000000..b8dab20 --- /dev/null +++ b/javascript/square-root/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module" + }, + "globals": { + "BigInt": true + }, + "env": { + "es6": true, + "node": true, + "jest": true + }, + "extends": [ + "eslint:recommended", + "plugin:import/errors", + "plugin:import/warnings" + ], + "rules": { + "linebreak-style": "off", + + "import/extensions": "off", + "import/no-default-export": "off", + "import/no-unresolved": "off", + "import/prefer-default-export": "off" + } +} diff --git a/javascript/square-root/.npmrc b/javascript/square-root/.npmrc new file mode 100644 index 0000000..d26df80 --- /dev/null +++ b/javascript/square-root/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/javascript/square-root/README.md b/javascript/square-root/README.md new file mode 100644 index 0000000..be243d3 --- /dev/null +++ b/javascript/square-root/README.md @@ -0,0 +1,61 @@ +# Square Root + +Given a natural radicand, return its square root. + +Note that the term "radicand" refers to the number for which the root is to be determined. That is, it is the number under the root symbol. + +Check out the Wikipedia pages on [square root](https://en.wikipedia.org/wiki/Square_root) and [methods of computing square roots](https://en.wikipedia.org/wiki/Methods_of_computing_square_roots). + +Recall also that natural numbers are positive real whole numbers (i.e. 1, 2, 3 and up). + +The idea is not to use the built-in javascript functions such as `Math.sqrt(x)`, `x ** 0.5` or `x ** (1/2)`, it's to build your own. + + +## Setup + +Go through the setup instructions for Javascript to install the necessary +dependencies: + +[https://exercism.io/tracks/javascript/installation](https://exercism.io/tracks/javascript/installation) + +## Requirements + +Please `cd` into exercise directory before running all below commands. + +Install assignment dependencies: + +```bash +$ npm install +``` + +## Making the test suite pass + +Execute the tests with: + +```bash +$ npm 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 `xtest` to +`test`. + + +## Submitting Solutions + +Once you have a solution ready, you can submit it using: + +```bash +exercism submit square-root.js +``` + +## Submitting Incomplete Solutions + +It's possible to submit an incomplete solution so you can see how others have +completed the exercise. + +## Exercise Source Credits + +wolf99 [https://github.com/exercism/problem-specifications/pull/1582](https://github.com/exercism/problem-specifications/pull/1582) + diff --git a/javascript/square-root/babel.config.js b/javascript/square-root/babel.config.js new file mode 100644 index 0000000..5cec972 --- /dev/null +++ b/javascript/square-root/babel.config.js @@ -0,0 +1,15 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: 'current', + }, + useBuiltIns: 'entry', + corejs: 3, + }, + ], + ], + plugins: ['@babel/plugin-syntax-bigint'], +}; diff --git a/javascript/square-root/package.json b/javascript/square-root/package.json new file mode 100644 index 0000000..90f82c9 --- /dev/null +++ b/javascript/square-root/package.json @@ -0,0 +1,36 @@ +{ + "name": "@exercism/javascript", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript" + }, + "devDependencies": { + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/preset-env": "^7.12.11", + "@types/jest": "^26.0.19", + "@types/node": "^14.14.14", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.3", + "core-js": "^3.8.1", + "eslint": "^7.15.0", + "eslint-plugin-import": "^2.22.1", + "jest": "^26.6.3" + }, + "jest": { + "modulePathIgnorePatterns": [ + "package.json" + ] + }, + "scripts": { + "test": "jest --no-cache ./*", + "watch": "jest --no-cache --watch ./*", + "lint": "eslint ." + }, + "license": "MIT", + "dependencies": {} +} diff --git a/javascript/square-root/square-root.js b/javascript/square-root/square-root.js new file mode 100644 index 0000000..50c3634 --- /dev/null +++ b/javascript/square-root/square-root.js @@ -0,0 +1,3 @@ +export const squareRoot = (num) => { + return Math.sqrt(num); +}; diff --git a/javascript/square-root/square-root.spec.js b/javascript/square-root/square-root.spec.js new file mode 100644 index 0000000..3db6fcb --- /dev/null +++ b/javascript/square-root/square-root.spec.js @@ -0,0 +1,22 @@ +import { squareRoot } from './square-root'; + +describe('Square root', () => { + test('root of 1', () => { + expect(squareRoot(1)).toEqual(1); + }); + test('root of 4', () => { + expect(squareRoot(4)).toEqual(2); + }); + test('root of 5', () => { + expect(squareRoot(25)).toEqual(5); + }); + test('root of 81', () => { + expect(squareRoot(81)).toEqual(9); + }); + test('root of 196', () => { + expect(squareRoot(196)).toEqual(14); + }); + test('root of 65025', () => { + expect(squareRoot(65025)).toEqual(255); + }); +}); diff --git a/javascript/two-fer/.eslintrc b/javascript/two-fer/.eslintrc new file mode 100644 index 0000000..b8dab20 --- /dev/null +++ b/javascript/two-fer/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module" + }, + "globals": { + "BigInt": true + }, + "env": { + "es6": true, + "node": true, + "jest": true + }, + "extends": [ + "eslint:recommended", + "plugin:import/errors", + "plugin:import/warnings" + ], + "rules": { + "linebreak-style": "off", + + "import/extensions": "off", + "import/no-default-export": "off", + "import/no-unresolved": "off", + "import/prefer-default-export": "off" + } +} diff --git a/javascript/two-fer/.npmrc b/javascript/two-fer/.npmrc new file mode 100644 index 0000000..d26df80 --- /dev/null +++ b/javascript/two-fer/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/javascript/two-fer/README.md b/javascript/two-fer/README.md new file mode 100644 index 0000000..f5e3d28 --- /dev/null +++ b/javascript/two-fer/README.md @@ -0,0 +1,75 @@ +# Two Fer + +`Two-fer` or `2-fer` is short for two for one. One for you and one for me. + +Given a name, return a string with the message: + +```text +One for name, one for me. +``` + +Where "name" is the given name. + +However, if the name is missing, return the string: + +```text +One for you, one for me. +``` + +Here are some examples: + +|Name |String to return +|:-------|:------------------ +|Alice |One for Alice, one for me. +|Bob |One for Bob, one for me. +| |One for you, one for me. +|Zaphod |One for Zaphod, one for me. + +## Setup + +Go through the setup instructions for Javascript to install the necessary +dependencies: + +[https://exercism.io/tracks/javascript/installation](https://exercism.io/tracks/javascript/installation) + +## Requirements + +Please `cd` into exercise directory before running all below commands. + +Install assignment dependencies: + +```bash +$ npm install +``` + +## Making the test suite pass + +Execute the tests with: + +```bash +$ npm 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 `xtest` to +`test`. + + +## Submitting Solutions + +Once you have a solution ready, you can submit it using: + +```bash +exercism submit two-fer.js +``` + +## Submitting Incomplete Solutions + +It's possible to submit an incomplete solution so you can see how others have +completed the exercise. + +## Exercise Source Credits + +[https://github.com/exercism/problem-specifications/issues/757](https://github.com/exercism/problem-specifications/issues/757) + diff --git a/javascript/two-fer/babel.config.js b/javascript/two-fer/babel.config.js new file mode 100644 index 0000000..5cec972 --- /dev/null +++ b/javascript/two-fer/babel.config.js @@ -0,0 +1,15 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: 'current', + }, + useBuiltIns: 'entry', + corejs: 3, + }, + ], + ], + plugins: ['@babel/plugin-syntax-bigint'], +}; diff --git a/javascript/two-fer/package.json b/javascript/two-fer/package.json new file mode 100644 index 0000000..d4dc05e --- /dev/null +++ b/javascript/two-fer/package.json @@ -0,0 +1,37 @@ +{ + "name": "@exercism/javascript", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript" + }, + "devDependencies": { + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/preset-env": "^7.12.11", + "@types/jest": "^26.0.19", + "@types/node": "^14.14.14", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.3", + "core-js": "^3.8.1", + "eslint": "^7.15.0", + "eslint-plugin-import": "^2.22.1", + "jest": "^26.6.3" + }, + "jest": { + "modulePathIgnorePatterns": [ + "package.json" + ] + }, + "scripts": { + "test": "jest --no-cache ./*", + "watch": "jest --no-cache --watch ./*", + "lint": "eslint ." + }, + "license": "MIT", + "dependencies": {}, + "version": "1.2.0" +} diff --git a/javascript/two-fer/two-fer.js b/javascript/two-fer/two-fer.js new file mode 100644 index 0000000..2349ad7 --- /dev/null +++ b/javascript/two-fer/two-fer.js @@ -0,0 +1,3 @@ +export const twoFer = (name = "you") => { + return "One for " + name + ", one for me."; +}; diff --git a/javascript/two-fer/two-fer.spec.js b/javascript/two-fer/two-fer.spec.js new file mode 100644 index 0000000..1c39a36 --- /dev/null +++ b/javascript/two-fer/two-fer.spec.js @@ -0,0 +1,15 @@ +import { twoFer } from './two-fer'; + +describe('twoFer()', () => { + test('no name given', () => { + expect(twoFer()).toEqual('One for you, one for me.'); + }); + + xtest('a name given', () => { + expect(twoFer('Alice')).toEqual('One for Alice, one for me.'); + }); + + xtest('another name given', () => { + expect(twoFer('Bob')).toEqual('One for Bob, one for me.'); + }); +}); -- cgit 1.4.1-2-gfad0