Skip to content

Commit de7b573

Browse files
authored
Merge pull request #6 from pro-js/number_conversion
Number conversion
2 parents e2867f2 + d8e47ce commit de7b573

4 files changed

Lines changed: 95 additions & 20 deletions

File tree

lib/basic.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,23 @@ export function average(...array) {
6060
export function getRemainder(firstNumber, secondNumber) {
6161
return ((firstNumber % secondNumber) + secondNumber) % secondNumber;
6262
}
63+
64+
/**
65+
* pass arguments or array and get the minimum number
66+
* getMinimum([1,3,5,4,9]) // 1
67+
* getMinimum(2,45,2,76,0,4) // 0
68+
* @param {...any} array
69+
*/
70+
export function getMinimum(...array) {
71+
if (array[0][0] !== undefined) array = array[0];
72+
return Math.min(...array);
73+
}
74+
75+
/**
76+
* pass arguments or array and get the maximum number
77+
* @param {...any} array
78+
*/
79+
export function getMaximum(...array) {
80+
if (array[0][0] !== undefined) array = array[0];
81+
return Math.max(...array);
82+
}

lib/conversion.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,25 @@ export function radsToDegs(rad) {
4242
export function stringToNumber(str) {
4343
return parseFloat(str);
4444
}
45+
46+
/**
47+
* Pass the number in string format and then give fromBase and toBase
48+
* means from which base to which base you want to convert the number.
49+
* convertNumber('100111', 2, 16) // "27"
50+
* convertNumber('23432', 8, 16) // "271a"
51+
* convertNumber('23432', 10, 16) // "5b88"
52+
* convertNumber('23432', 10, 8) //"55610"
53+
* convertNumber('23432', 16, 2) // "100011010000110010"
54+
* @param {*} n
55+
* @param {*} fromBase
56+
* @param {*} toBase
57+
*/
58+
function convertNumber(n, fromBase, toBase) {
59+
if (fromBase === void 0) {
60+
fromBase = 10;
61+
}
62+
if (toBase === void 0) {
63+
toBase = 10;
64+
}
65+
return parseInt(n.toString(), fromBase).toString(toBase);
66+
}

lib/isMethod.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,15 @@ export function isPrime(num) {
4444
* palindromeNumber(4567654); // true
4545
*/
4646

47-
exports.isPalindrome = (number) => {
48-
var final = 0, temp = number;
49-
while(number>0) { var rem = number % 10; number = parseInt(number / 10);
50-
final = (final * 10) + rem; } return final == temp;
47+
export function isPalindrome(number) {
48+
var final = 0,
49+
temp = number;
50+
while (number > 0) {
51+
var rem = number % 10;
52+
number = parseInt(number / 10);
53+
final = final * 10 + rem;
54+
}
55+
return final == temp;
5156
}
5257

5358
/**
@@ -56,7 +61,7 @@ exports.isPalindrome = (number) => {
5661
* isPositive(45674); // true
5762
* isPositive(-4567654); // false
5863
*/
59-
exports.isPositive = (number) => {
64+
export function isPositive(number) {
6065
if (number === 0) return false;
6166
return ((number >> 31) & 1) === 0;
6267
}
@@ -67,7 +72,7 @@ exports.isPositive = (number) => {
6772
* isNegative(45674); // false
6873
* isNegative(-4567654); // true
6974
*/
70-
exports.isNegative = (number) => {
75+
export function isNegative(number) {
7176
if (number === 0) return false;
7277
return ((number >> 31) & 1) === 1;
7378
}
@@ -78,7 +83,7 @@ exports.isNegative = (number) => {
7883
* isPowerOfTwo(35); // false
7984
* isPowerOfTwo(32); // true
8085
*/
81-
exports.isPowerOfTwo = (number) => {
86+
export function isPowerOfTwo(number) {
8287
if (number < 1) return false;
8388
return (number & (number - 1)) === 0;
84-
}
89+
}

lib/number.js

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ let factorialCalculate = (number) => {
5555
* Pass a base number, power number and calculate the power of the number
5656
* @param {*} number
5757
*/
58-
exports.bigPower = (base, power) => {
58+
export function bigPower(base, power) {
5959
if (power === 0) return 1;
6060
if (power % 2 === 0) {
6161
const multiplier = bigPower(base, power / 2);
@@ -71,8 +71,10 @@ exports.bigPower = (base, power) => {
7171
* @return {number[]}
7272
* console.log(fibSequence(10)) // [ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ]
7373
*/
74-
exports.fibSequence = (number) => {
75-
let fibSeq = [1], currentValue = 1, previousValue = 0;
74+
export function fibSequence(number) {
75+
let fibSeq = [1],
76+
currentValue = 1,
77+
previousValue = 0;
7678
if (number === 1) return fibSeq;
7779
let iterationsCounter = number - 1;
7880
while (iterationsCounter) {
@@ -90,8 +92,9 @@ exports.fibSequence = (number) => {
9092
* @return {number}
9193
* console.log(fibonacciNth(10)) // 55
9294
*/
93-
exports.fibNth = (number) => {
94-
let currentValue = 1, previousValue = 0;
95+
export function fibNth(number) {
96+
let currentValue = 1,
97+
previousValue = 0;
9598
if (number === 1) return 1;
9699
let iterationsCounter = number - 1;
97100
while (iterationsCounter) {
@@ -106,13 +109,15 @@ exports.fibNth = (number) => {
106109
* Get pascal Triangle
107110
* @param {number} lineNumber - zero based.
108111
* @return {number[]}
109-
* console.log(pascalTriangle(10))
112+
* console.log(pascalTriangle(10))
110113
* [ 1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1 ]
111114
*/
112-
exports.pascalTriangle = (lineNumber) => {
113-
let currentLine = [1], currentLineSize = lineNumber + 1;
115+
export function pascalTriangle(lineNumber) {
116+
let currentLine = [1],
117+
currentLineSize = lineNumber + 1;
114118
for (let numIndex = 1; numIndex < currentLineSize; numIndex += 1) {
115-
currentLine[numIndex] = currentLine[numIndex - 1] * (lineNumber - numIndex + 1) / numIndex;
119+
currentLine[numIndex] =
120+
(currentLine[numIndex - 1] * (lineNumber - numIndex + 1)) / numIndex;
116121
}
117122
return currentLine;
118123
}
@@ -123,13 +128,14 @@ exports.pascalTriangle = (lineNumber) => {
123128
* @return {primes[]}
124129
* console.log(getPrimeList(20)) // [ 2, 3, 5, 7, 11, 13, 17, 19 ]
125130
*/
126-
exports.getPrimeList = (number) => {
127-
let isPrime = new Array(number + 1).fill(true), primes = [];
131+
export function getPrimeList(number) {
132+
let isPrime = new Array(number + 1).fill(true),
133+
primes = [];
128134
isPrime[0] = false;
129135
isPrime[1] = false;
130136
for (let num = 2; num <= number; num += 1) {
131137
if (isPrime[num] === true) {
132-
primes.push(num);
138+
primes.push(num);
133139
let nextnum = num * num;
134140
while (nextnum <= number) {
135141
isPrime[nextnum] = false;
@@ -139,3 +145,25 @@ exports.getPrimeList = (number) => {
139145
}
140146
return primes;
141147
}
148+
149+
/**
150+
* Pass minimum and maximum number to generate the random number between them
151+
* randomNumber(3, 10) // 10
152+
* randomNumber(3, 10) // 8
153+
* @param {*} min
154+
* @param {*} max
155+
*/
156+
export function randomNumber(min, max) {
157+
return Math.floor(Math.random() * (max - min + 1)) + min;
158+
}
159+
160+
/**
161+
* Pass a number and get the reverse of that number with actual sign
162+
* reverseNumber(32) // 23
163+
* reverseNumber(-32) // -23
164+
* @param {*} number
165+
*/
166+
export function reverseNumber(number) {
167+
let reversed = number.toString().split("").reverse().join("");
168+
return parseInt(reversed) * Math.sign(number);
169+
}

0 commit comments

Comments
 (0)