From d4ea89f6812a88b5b3e99f28303fb352831c2a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A3oSejaComunista?= Date: Wed, 30 Oct 2019 21:17:31 -0300 Subject: [PATCH] =?UTF-8?q?solu=C3=A7=C3=A3o=20do=20desafio=201=20em=20Nod?= =?UTF-8?q?e.JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-reverse-number/vinibeloni/.gitignore | 1 + 1-reverse-number/vinibeloni/ComoRodar.md | 12 ++++++++++ 1-reverse-number/vinibeloni/package-lock.json | 13 ++++++++++ 1-reverse-number/vinibeloni/package.json | 15 ++++++++++++ 1-reverse-number/vinibeloni/reverse.js | 24 +++++++++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 1-reverse-number/vinibeloni/.gitignore create mode 100644 1-reverse-number/vinibeloni/ComoRodar.md create mode 100644 1-reverse-number/vinibeloni/package-lock.json create mode 100644 1-reverse-number/vinibeloni/package.json create mode 100644 1-reverse-number/vinibeloni/reverse.js diff --git a/1-reverse-number/vinibeloni/.gitignore b/1-reverse-number/vinibeloni/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/1-reverse-number/vinibeloni/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/1-reverse-number/vinibeloni/ComoRodar.md b/1-reverse-number/vinibeloni/ComoRodar.md new file mode 100644 index 0000000..56e2e86 --- /dev/null +++ b/1-reverse-number/vinibeloni/ComoRodar.md @@ -0,0 +1,12 @@ +## Requirements +[Node.js](https://github.com/nodejs/node) installed + +## Running + +```bash +# Install dependencies +npm i + +# Run +npm start +``` \ No newline at end of file diff --git a/1-reverse-number/vinibeloni/package-lock.json b/1-reverse-number/vinibeloni/package-lock.json new file mode 100644 index 0000000..07c0d4c --- /dev/null +++ b/1-reverse-number/vinibeloni/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "vinibeloni", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + } + } +} diff --git a/1-reverse-number/vinibeloni/package.json b/1-reverse-number/vinibeloni/package.json new file mode 100644 index 0000000..92ee5ca --- /dev/null +++ b/1-reverse-number/vinibeloni/package.json @@ -0,0 +1,15 @@ +{ + "name": "vinibeloni", + "version": "1.0.0", + "description": "", + "main": "reverse.js", + "dependencies": { + "bignumber.js": "^9.0.0" + }, + "devDependencies": {}, + "scripts": { + "start": "node reverse.js" + }, + "author": "vinibeloni", + "license": "ISC" +} diff --git a/1-reverse-number/vinibeloni/reverse.js b/1-reverse-number/vinibeloni/reverse.js new file mode 100644 index 0000000..c887b27 --- /dev/null +++ b/1-reverse-number/vinibeloni/reverse.js @@ -0,0 +1,24 @@ +/********* BIG NUMBERS *********/ +const bigNumber = require('bignumber.js'); + +Number.__proto__.toLong = n => bigNumber(n.toString(32), 32).toString(10) + +Number.__proto__.isLong = n => n.toString(32).length > 16 +/*******************************/ + +//while (list.length > 0) { result.push(list.pop()) } +const reverseValue = n => n.toString().split('').reverse().join('') + +const reverseAction = (validate, transform, n) => validate(n) ? reverseValue(transform(n)) : null + +const reverse = n => + reverseAction(Number.isLong, Number.toLong, n) || + reverseAction(Number.isInteger, n => n, n) || + 'erro' + +const formatInput = value => Number.isLong(value) ? Number.toLong(value) : value + +const inputs = [1234, 12, 0, 6641112222223333333345678901118, 'lalala'] +inputs.forEach((n, i) => { + console.log(`Input: '${formatInput(n)}'\nOutput: '${reverse(n)}'\n`) +})