From 829e1bcffbd2041f126dd2fa0eda673afe68fb87 Mon Sep 17 00:00:00 2001 From: Rohit Dandnayak Date: Thu, 4 Apr 2019 16:11:52 +0530 Subject: [PATCH 1/3] array data structure added --- src/data-structures/array/array-rotation.js | 18 ++++++++++++++++++ src/data-structures/array/gcd-eucladian.js | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 src/data-structures/array/array-rotation.js create mode 100644 src/data-structures/array/gcd-eucladian.js diff --git a/src/data-structures/array/array-rotation.js b/src/data-structures/array/array-rotation.js new file mode 100644 index 000000000..e42533e3a --- /dev/null +++ b/src/data-structures/array/array-rotation.js @@ -0,0 +1,18 @@ +function rotateArray(arr) { + let temp = arr[0]; + let len = arr.length; + for (var i = 0; i < len - 1; i++) { + arr[i] = arr[i + 1]; + } + arr[i] = temp; + return arr; +} + +function rotateArrayBy(arr, d) { + for (let i = 0; i < d; i++) { + rotateArray(arr); + } + return arr; +} + +console.log(rotateArrayBy([1, 2, 3, 4, 5], 2)); diff --git a/src/data-structures/array/gcd-eucladian.js b/src/data-structures/array/gcd-eucladian.js new file mode 100644 index 000000000..927940fbc --- /dev/null +++ b/src/data-structures/array/gcd-eucladian.js @@ -0,0 +1,7 @@ +function gcd(a, b) { + if (a === 0) return b; + let remainder = b % a; + return gcd(remainder, a); +} + +console.log(gcd(22, 24)); From f245d5f8d0b09044cb1bec50de0fdc015e0871ba Mon Sep 17 00:00:00 2001 From: Rohit Dandnayak Date: Thu, 18 Apr 2019 19:05:04 +0530 Subject: [PATCH 2/3] more alogs added --- src/data-structures/array/armstrong.js | 13 +++++++++++++ src/data-structures/array/array-rotation.js | 2 +- src/data-structures/array/decimal-to-binary.js | 9 +++++++++ src/data-structures/array/factorial.js | 10 ++++++++++ src/data-structures/array/fibonacci.js | 15 +++++++++++++++ src/data-structures/array/matching-socks.js | 15 +++++++++++++++ src/data-structures/array/palindrome.js | 15 +++++++++++++++ src/data-structures/array/prime-no.js | 12 ++++++++++++ src/data-structures/array/reverse-number.js | 14 ++++++++++++++ src/data-structures/array/sum-of-digits.js | 13 +++++++++++++ src/data-structures/array/swap-numbers.js | 8 ++++++++ 11 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 src/data-structures/array/armstrong.js create mode 100644 src/data-structures/array/decimal-to-binary.js create mode 100644 src/data-structures/array/factorial.js create mode 100644 src/data-structures/array/fibonacci.js create mode 100644 src/data-structures/array/matching-socks.js create mode 100644 src/data-structures/array/palindrome.js create mode 100644 src/data-structures/array/prime-no.js create mode 100644 src/data-structures/array/reverse-number.js create mode 100644 src/data-structures/array/sum-of-digits.js create mode 100644 src/data-structures/array/swap-numbers.js diff --git a/src/data-structures/array/armstrong.js b/src/data-structures/array/armstrong.js new file mode 100644 index 000000000..4b71a5a2d --- /dev/null +++ b/src/data-structures/array/armstrong.js @@ -0,0 +1,13 @@ +function armstrong(n) { + let sum = 0, + num = n; + while (num > 0) { + rem = num % 10; + sum = sum + rem * rem * rem; + num = Math.trunc(num / 10); + } + if (sum === n) return 'armstrong'; + else return 'not armstrong'; +} + +console.log(armstrong(153)); diff --git a/src/data-structures/array/array-rotation.js b/src/data-structures/array/array-rotation.js index e42533e3a..2518cfa1c 100644 --- a/src/data-structures/array/array-rotation.js +++ b/src/data-structures/array/array-rotation.js @@ -15,4 +15,4 @@ function rotateArrayBy(arr, d) { return arr; } -console.log(rotateArrayBy([1, 2, 3, 4, 5], 2)); +console.log(rotLeft([1, 2, 3, 4, 5], 3)); diff --git a/src/data-structures/array/decimal-to-binary.js b/src/data-structures/array/decimal-to-binary.js new file mode 100644 index 000000000..563a188a1 --- /dev/null +++ b/src/data-structures/array/decimal-to-binary.js @@ -0,0 +1,9 @@ +function decimalToBinary(n) { + let a = []; + for (let i = 0; n > 0; i++) { + a[i] = n % 2; + n = Math.trunc(n / 2); + } + return a.reverse().join(''); +} +console.log(decimalToBinary(8)); diff --git a/src/data-structures/array/factorial.js b/src/data-structures/array/factorial.js new file mode 100644 index 000000000..7dddbf47f --- /dev/null +++ b/src/data-structures/array/factorial.js @@ -0,0 +1,10 @@ +function factorial(n) { + let fact = n; + while (n > 1) { + fact = fact * (n - 1); + n = n - 1; + } + return fact; +} + +console.log(factorial(5)); diff --git a/src/data-structures/array/fibonacci.js b/src/data-structures/array/fibonacci.js new file mode 100644 index 000000000..6e5dd8e29 --- /dev/null +++ b/src/data-structures/array/fibonacci.js @@ -0,0 +1,15 @@ +function fibonacci(number) { + let n1 = 0, + n2 = 1, + n3; + console.log(n1); + console.log(n2); + for (let i = 2; i < number; ++i) { + n3 = n1 + n2; + console.log(n3); + n1 = n2; + n2 = n3; + } +} + +console.log(fibonacci(9)); diff --git a/src/data-structures/array/matching-socks.js b/src/data-structures/array/matching-socks.js new file mode 100644 index 000000000..07f5f8481 --- /dev/null +++ b/src/data-structures/array/matching-socks.js @@ -0,0 +1,15 @@ +let n = 9, + ar = [10, 20, 20, 10, 10, 30, 50, 10, 20]; +function sockMerchant(n, ar) { + let length = 0; + ar = ar.sort((a, b) => { + return a - b; + }); + for (let i = 0; i < n; i++) { + if (ar.slice(i + 1, n).indexOf(ar[i]) > -1) { + length++, i++; + } + } + return length; +} +console.log(sockMerchant(n, ar)); diff --git a/src/data-structures/array/palindrome.js b/src/data-structures/array/palindrome.js new file mode 100644 index 000000000..47bb35604 --- /dev/null +++ b/src/data-structures/array/palindrome.js @@ -0,0 +1,15 @@ +function isPalindrome(n) { + let revString = 0, + rem, + temp; + temp = n; + while (n > 0) { + rem = n % 10; + revString = revString * 10 + rem; + n = Math.trunc(n / 10); + } + if (temp !== revString) return 'not palindrome'; + else return 'is palindrome'; +} + +console.log(isPalindrome(1231)); diff --git a/src/data-structures/array/prime-no.js b/src/data-structures/array/prime-no.js new file mode 100644 index 000000000..38147f70c --- /dev/null +++ b/src/data-structures/array/prime-no.js @@ -0,0 +1,12 @@ +function ifPrime(n) { + let flag = 0; + for (let i = 2; i < n; i++) { + if (n % i === 0) { + flag = 1; + } + } + if (flag == 0) return 'Is Prime'; + else return 'not prime'; +} + +console.log(ifPrime(9)); diff --git a/src/data-structures/array/reverse-number.js b/src/data-structures/array/reverse-number.js new file mode 100644 index 000000000..f2bf0c054 --- /dev/null +++ b/src/data-structures/array/reverse-number.js @@ -0,0 +1,14 @@ +function reverseNumber(num) { + var reverse = 0, + rem; + while (num !== 0) { + rem = num % 10; + // console.warn(num); + reverse = reverse * 10 + rem; + num = Math.trunc(num / 10); + } + return reverse; +} + +// reverseNumber(123); +console.log(reverseNumber(12345)); diff --git a/src/data-structures/array/sum-of-digits.js b/src/data-structures/array/sum-of-digits.js new file mode 100644 index 000000000..1caffa6cd --- /dev/null +++ b/src/data-structures/array/sum-of-digits.js @@ -0,0 +1,13 @@ +function sumOfDigits(num) { + var sum = 0, + rem; + while (num > 0) { + rem = num % 10; + sum = sum + rem; + num = Math.trunc(num / 10); + } + return sum; +} + +// reverseNumber(123); +console.log(sumOfDigits(126)); diff --git a/src/data-structures/array/swap-numbers.js b/src/data-structures/array/swap-numbers.js new file mode 100644 index 000000000..b50d87dba --- /dev/null +++ b/src/data-structures/array/swap-numbers.js @@ -0,0 +1,8 @@ +function swapNumbers(a, b) { + a = a + b; + b = a - b; + a = a - b; + return `${a}-${b}`; +} + +console.log(swapNumbers(2, 5)); From f5d7715a7bee6d2a506230243727cf3da99ddaab Mon Sep 17 00:00:00 2001 From: Rohit Dandnayak Date: Mon, 22 Apr 2019 14:31:14 +0530 Subject: [PATCH 3/3] array-rotation & nge --- src/data-structures/array/array-rotation.js | 26 ++++++++++++++++++++- src/data-structures/stack/nge.js | 3 +++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/data-structures/stack/nge.js diff --git a/src/data-structures/array/array-rotation.js b/src/data-structures/array/array-rotation.js index 2518cfa1c..9c2afef74 100644 --- a/src/data-structures/array/array-rotation.js +++ b/src/data-structures/array/array-rotation.js @@ -8,6 +8,29 @@ function rotateArray(arr) { return arr; } +function gcd(a, b) { + if (a <= 0) return b; + let x = b - a; + return gcd(x, a); +} + +function rotateJuggling(arr, d) { + let len = arr.length; + for (let i = 0; i < gcd(d, len); i++) { + let temp = arr[i]; + let j = i; + while (1) { + let k = j + d; + if (k >= len) k = k - len; + if (k === i) break; + arr[j] = arr[k]; + j = k; + } + arr[j] = temp; + } + return arr; +} + function rotateArrayBy(arr, d) { for (let i = 0; i < d; i++) { rotateArray(arr); @@ -15,4 +38,5 @@ function rotateArrayBy(arr, d) { return arr; } -console.log(rotLeft([1, 2, 3, 4, 5], 3)); +console.log(rotateArrayBy([1, 2, 3, 4, 5], 3)); +console.log(rotateJuggling([1, 2, 3, 4, 5], 3)); diff --git a/src/data-structures/stack/nge.js b/src/data-structures/stack/nge.js new file mode 100644 index 000000000..0638d6272 --- /dev/null +++ b/src/data-structures/stack/nge.js @@ -0,0 +1,3 @@ +function printNGE(arr) { + for (let i, len = arr.length; i < len; i++) {} +}