From b7309f0018722801232f9de6219666e6ef69fd32 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Fri, 7 Oct 2022 20:36:47 +0530
Subject: [PATCH 01/11] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20Added=20solution=20?=
 =?UTF-8?q?for=20ProjectEuler-007?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/Problem007.js           | 27 +++++++++++++++++++++++++++
 Project-Euler/test/Problem007.test.js | 17 +++++++++++++++++
 2 files changed, 44 insertions(+)
 create mode 100644 Project-Euler/Problem007.js
 create mode 100644 Project-Euler/test/Problem007.test.js

diff --git a/Project-Euler/Problem007.js b/Project-Euler/Problem007.js
new file mode 100644
index 0000000000..48f27d56c1
--- /dev/null
+++ b/Project-Euler/Problem007.js
@@ -0,0 +1,27 @@
+import { PrimeCheck } from '../Maths/PrimeCheck.js'
+
+/**
+ * Find nth Prime Number
+ *
+ * P.S.(Project Euler - 007):
+ * By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
+ * What is the 10001st prime number?
+ *
+ * @param {Number} n
+ * @returns {Number} returns the nth prime number
+ */
+export const nthPrime = (n) => {
+  if (n < 1) {
+    return 'Invalid Input'
+  }
+
+  let count = 0
+  let inc = 2
+  while (count < n) {
+    if (PrimeCheck(inc)) {
+      count++
+    }
+    inc++
+  }
+  return inc - 1
+}
diff --git a/Project-Euler/test/Problem007.test.js b/Project-Euler/test/Problem007.test.js
new file mode 100644
index 0000000000..e979e45728
--- /dev/null
+++ b/Project-Euler/test/Problem007.test.js
@@ -0,0 +1,17 @@
+import { nthPrime } from '../Problem007.js'
+
+describe('checking nth prime number', () => {
+  it('should be invalid input if number is negative', () => {
+    expect(nthPrime(-3)).toBe('Invalid Input')
+  })
+  it('should be invalid input if number is 0', () => {
+    expect(nthPrime(0)).toBe('Invalid Input')
+  })
+  test('if the number is greather than 0', () => {
+    expect(nthPrime(10)).toBe(29)
+  })
+  // Project Euler Condition Check
+  test('if the number is 10001', () => {
+    expect(nthPrime(10001)).toBe(104743)
+  })
+})

From d3a3b331c7d964262f524c37afb767c87994b6c3 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Fri, 7 Oct 2022 20:45:06 +0530
Subject: [PATCH 02/11] =?UTF-8?q?=F0=9F=90=9B=20FIX:=20Spelling=20mistake?=
 =?UTF-8?q?=20fixes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/test/Problem007.test.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Project-Euler/test/Problem007.test.js b/Project-Euler/test/Problem007.test.js
index e979e45728..6c48f1e786 100644
--- a/Project-Euler/test/Problem007.test.js
+++ b/Project-Euler/test/Problem007.test.js
@@ -7,7 +7,7 @@ describe('checking nth prime number', () => {
   it('should be invalid input if number is 0', () => {
     expect(nthPrime(0)).toBe('Invalid Input')
   })
-  test('if the number is greather than 0', () => {
+  test('if the number is greater than 0', () => {
     expect(nthPrime(10)).toBe(29)
   })
   // Project Euler Condition Check

From e9b5a6a92174ff87a4d9b27cee8e596ad8fa76a3 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Fri, 7 Oct 2022 23:02:44 +0530
Subject: [PATCH 03/11] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20changed=20varia?=
 =?UTF-8?q?ble=20name=20from=20`inc`=20to=20`candidateValue`=20and=20throw?=
 =?UTF-8?q?n=20error=20in=20case=20of=20invalid=20input?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/Problem007.js           | 10 +++++-----
 Project-Euler/test/Problem007.test.js |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/Project-Euler/Problem007.js b/Project-Euler/Problem007.js
index 48f27d56c1..95e3f10562 100644
--- a/Project-Euler/Problem007.js
+++ b/Project-Euler/Problem007.js
@@ -12,16 +12,16 @@ import { PrimeCheck } from '../Maths/PrimeCheck.js'
  */
 export const nthPrime = (n) => {
   if (n < 1) {
-    return 'Invalid Input'
+    throw new Error('Invalid Input')
   }
 
   let count = 0
-  let inc = 2
+  let candidateValue = 2
   while (count < n) {
-    if (PrimeCheck(inc)) {
+    if (PrimeCheck(candidateValue)) {
       count++
     }
-    inc++
+    candidateValue++
   }
-  return inc - 1
+  return candidateValue - 1
 }
diff --git a/Project-Euler/test/Problem007.test.js b/Project-Euler/test/Problem007.test.js
index 6c48f1e786..191d1e06af 100644
--- a/Project-Euler/test/Problem007.test.js
+++ b/Project-Euler/test/Problem007.test.js
@@ -2,10 +2,10 @@ import { nthPrime } from '../Problem007.js'
 
 describe('checking nth prime number', () => {
   it('should be invalid input if number is negative', () => {
-    expect(nthPrime(-3)).toBe('Invalid Input')
+    expect(() => nthPrime(-3)).toThrowError('Invalid Input')
   })
   it('should be invalid input if number is 0', () => {
-    expect(nthPrime(0)).toBe('Invalid Input')
+    expect(() => nthPrime(0)).toThrowError('Invalid Input')
   })
   test('if the number is greater than 0', () => {
     expect(nthPrime(10)).toBe(29)

From e99c7225579aa6da265352daa5140c037281c311 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Fri, 7 Oct 2022 23:23:09 +0530
Subject: [PATCH 04/11] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20Modified=20the?=
 =?UTF-8?q?=20code?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/Problem007.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Project-Euler/Problem007.js b/Project-Euler/Problem007.js
index 95e3f10562..009c1a896e 100644
--- a/Project-Euler/Problem007.js
+++ b/Project-Euler/Problem007.js
@@ -16,12 +16,12 @@ export const nthPrime = (n) => {
   }
 
   let count = 0
-  let candidateValue = 2
+  let candidateValue = 1
   while (count < n) {
+    candidateValue++
     if (PrimeCheck(candidateValue)) {
       count++
     }
-    candidateValue++
   }
-  return candidateValue - 1
+  return candidateValue
 }

From 0f9f1bab7decbea8a2fbfc06b4b8531a39d0d6e1 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Mon, 10 Oct 2022 19:50:16 +0530
Subject: [PATCH 05/11] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20Added=20test=20?=
 =?UTF-8?q?case=20for=20ProjectEuler=20Problem001?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/Problem001.js           |  4 +++-
 Project-Euler/test/Problem001.test.js | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 Project-Euler/test/Problem001.test.js

diff --git a/Project-Euler/Problem001.js b/Project-Euler/Problem001.js
index 65a35e32a1..c47c10bd1c 100644
--- a/Project-Euler/Problem001.js
+++ b/Project-Euler/Problem001.js
@@ -5,9 +5,11 @@ Find the sum of all the multiples of 3 or 5 below the provided parameter value n
 */
 
 const multiplesThreeAndFive = (num) => {
+  if (num < 1) throw new Error('No natural numbers exist below 1')
+
   let total = 0
   // total for calculating the sum
-  for (let i = 0; i < num; i++) {
+  for (let i = 1; i < num; i++) {
     if (i % 3 === 0 || i % 5 === 0) {
       total += i
     }
diff --git a/Project-Euler/test/Problem001.test.js b/Project-Euler/test/Problem001.test.js
new file mode 100644
index 0000000000..e6b5549a57
--- /dev/null
+++ b/Project-Euler/test/Problem001.test.js
@@ -0,0 +1,17 @@
+import { multiplesThreeAndFive } from '../Problem001.js'
+
+describe('Sum of multiples of 3 or 5', () => {
+  it('should throw error when number is negative number', () => {
+    expect(() => multiplesThreeAndFive(-24)).toThrowError('No natural numbers exist below 1')
+  })
+  it('should throw error when number is 0', () => {
+    expect(() => multiplesThreeAndFive(0)).toThrowError('No natural numbers exist below 1')
+  })
+  test('if the number is greater than 0', () => {
+    expect(multiplesThreeAndFive(10)).toBe(23)
+  })
+  // Project Euler Condition Check
+  test('if the number is 1000', () => {
+    expect(multiplesThreeAndFive(1000)).toBe(233168)
+  })
+})

From 53e3938b0a29f0ee101b06c559d4f358cd7a0cd6 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Mon, 23 Oct 2023 00:32:56 +0530
Subject: [PATCH 06/11] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20Added=20test=20?=
 =?UTF-8?q?cases=20for=20Project=20Euler=20Problem=204?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/test/Problem004.test.js | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 Project-Euler/test/Problem004.test.js

diff --git a/Project-Euler/test/Problem004.test.js b/Project-Euler/test/Problem004.test.js
new file mode 100644
index 0000000000..cd6a55ac98
--- /dev/null
+++ b/Project-Euler/test/Problem004.test.js
@@ -0,0 +1,11 @@
+import { largestPalindromic } from '../Problem004.js'
+
+describe('Largest Palindromic Number', () => {
+  test('if digit is 2', () => {
+    expect(largestPalindromic(2)).toBe(9009)
+  })
+  // Project Euler Condition Check
+  test('if digit is 3', () => {
+    expect(largestPalindromic(3)).toBe(906609)
+  })
+})

From 96224e7950ab7bde4799d8103523b779e523e58c Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Mon, 23 Oct 2023 00:34:58 +0530
Subject: [PATCH 07/11] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20auto=20prettier?=
 =?UTF-8?q?=20fixes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Bit-Manipulation/BinaryCountSetBits.js  |  2 +-
 Maths/AutomorphicNumber.js              |  2 +-
 Maths/test/AutomorphicNumber.test.js    | 16 ++++-----
 Project-Euler/Problem006.js             |  6 ++--
 Recursive/test/BinaryEquivalent.test.js | 48 ++++++++++++-------------
 Search/InterpolationSearch.js           |  2 +-
 6 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/Bit-Manipulation/BinaryCountSetBits.js b/Bit-Manipulation/BinaryCountSetBits.js
index b879f3bd67..b959caf062 100644
--- a/Bit-Manipulation/BinaryCountSetBits.js
+++ b/Bit-Manipulation/BinaryCountSetBits.js
@@ -16,7 +16,7 @@ function BinaryCountSetBits(a) {
 
   let count = 0
   while (a) {
-    a &= (a - 1)
+    a &= a - 1
     count++
   }
 
diff --git a/Maths/AutomorphicNumber.js b/Maths/AutomorphicNumber.js
index d1b6608316..ba008271fc 100644
--- a/Maths/AutomorphicNumber.js
+++ b/Maths/AutomorphicNumber.js
@@ -35,6 +35,6 @@ export const isAutomorphic = (n) => {
     n = Math.floor(n / 10)
     n_sq = Math.floor(n_sq / 10)
   }
-  
+
   return true
 }
diff --git a/Maths/test/AutomorphicNumber.test.js b/Maths/test/AutomorphicNumber.test.js
index 19b963388c..57f40d27ee 100644
--- a/Maths/test/AutomorphicNumber.test.js
+++ b/Maths/test/AutomorphicNumber.test.js
@@ -9,19 +9,19 @@ describe('AutomorphicNumber', () => {
   })
 
   test.each([
-    { n: -3 , expected: false },
-    { n: -25 , expected: false },
+    { n: -3, expected: false },
+    { n: -25, expected: false }
   ])('should return false when n is negetive', ({ n, expected }) => {
     expect(isAutomorphic(n)).toBe(false)
   })
 
   test.each([
-    { n: 7 , expected: false },
-    { n: 83 , expected: false },
-    { n: 0 , expected: true },
-    { n: 1 , expected: true },
-    { n: 376 , expected: true },
-    { n: 90625 , expected: true },
+    { n: 7, expected: false },
+    { n: 83, expected: false },
+    { n: 0, expected: true },
+    { n: 1, expected: true },
+    { n: 376, expected: true },
+    { n: 90625, expected: true }
   ])('should return $expected when n is $n', ({ n, expected }) => {
     expect(isAutomorphic(n)).toBe(expected)
   })
diff --git a/Project-Euler/Problem006.js b/Project-Euler/Problem006.js
index 474de2ae96..804b165558 100644
--- a/Project-Euler/Problem006.js
+++ b/Project-Euler/Problem006.js
@@ -1,8 +1,8 @@
 // https://projecteuler.net/problem=6
 
 export const squareDifference = (num = 100) => {
-  let sumOfSquares = (num)*(num+1)*(2*num+1)/6
-  let sums = (num*(num+1))/2
-  
+  let sumOfSquares = (num * (num + 1) * (2 * num + 1)) / 6
+  let sums = (num * (num + 1)) / 2
+
   return sums ** 2 - sumOfSquares // difference of square of the total sum and sum of squares
 }
diff --git a/Recursive/test/BinaryEquivalent.test.js b/Recursive/test/BinaryEquivalent.test.js
index b79a455eed..ddabb7d477 100644
--- a/Recursive/test/BinaryEquivalent.test.js
+++ b/Recursive/test/BinaryEquivalent.test.js
@@ -1,29 +1,29 @@
-import { binaryEquivalent } from "../BinaryEquivalent";
+import { binaryEquivalent } from '../BinaryEquivalent'
 
 const tests = [
-    {
-        test: 2,
-        expectedValue: "10"
-    },
-    {       
-        test: 0,
-        expectedValue: "0"
-    },
-    {
-        test: 543,
-        expectedValue: "1000011111"
-    },
-    {
-        test: 4697621023,
-        expectedValue: "100011000000000000000001000011111"
-    }
+  {
+    test: 2,
+    expectedValue: '10'
+  },
+  {
+    test: 0,
+    expectedValue: '0'
+  },
+  {
+    test: 543,
+    expectedValue: '1000011111'
+  },
+  {
+    test: 4697621023,
+    expectedValue: '100011000000000000000001000011111'
+  }
 ]
 
-describe("Binary Equivalent", () => {
-    test.each(tests)(
-        "of $test should be $expectedValue",
-        ({test, expectedValue}) => {
-            expect(binaryEquivalent(test)).toBe(expectedValue);
-        }
-    )
+describe('Binary Equivalent', () => {
+  test.each(tests)(
+    'of $test should be $expectedValue',
+    ({ test, expectedValue }) => {
+      expect(binaryEquivalent(test)).toBe(expectedValue)
+    }
+  )
 })
diff --git a/Search/InterpolationSearch.js b/Search/InterpolationSearch.js
index e6deae496f..93f3b78b0e 100644
--- a/Search/InterpolationSearch.js
+++ b/Search/InterpolationSearch.js
@@ -36,4 +36,4 @@ export function interpolationSearch(arr, key) {
   }
 
   return -1
-}
\ No newline at end of file
+}

From 096e624b9568a78fd260ae3033c56017ebf15e54 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Tue, 8 Oct 2024 18:51:52 +0530
Subject: [PATCH 08/11] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20Added=20test=20case?=
 =?UTF-8?q?s=20for=20Project=20Euler=20Problem=2015=20and=20a=20minor=20bu?=
 =?UTF-8?q?g=20fix=20to=20the=20solution?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/Problem015.js           |  4 ++--
 Project-Euler/test/Problem015.test.js | 13 +++++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)
 create mode 100644 Project-Euler/test/Problem015.test.js

diff --git a/Project-Euler/Problem015.js b/Project-Euler/Problem015.js
index 9e63c75705..67df9a438b 100644
--- a/Project-Euler/Problem015.js
+++ b/Project-Euler/Problem015.js
@@ -7,8 +7,8 @@ How many such routes are there through a 20×20 grid?
 // A lattice path is composed of horizontal and vertical lines that pass through lattice points.
 
 export const latticePath = (gridSize) => {
-  let paths
-  for (let i = 1, paths = 1; i <= gridSize; i++) {
+  let paths = 1
+  for (let i = 1; i <= gridSize; i++) {
     paths = (paths * (gridSize + i)) / i
   }
   // The total number of paths can be found using the binomial coefficient (b+a)/a.
diff --git a/Project-Euler/test/Problem015.test.js b/Project-Euler/test/Problem015.test.js
new file mode 100644
index 0000000000..7accb9d61a
--- /dev/null
+++ b/Project-Euler/test/Problem015.test.js
@@ -0,0 +1,13 @@
+import { expect } from 'vitest'
+import { latticePath } from '../Problem015'
+
+describe('Finding total numbers of Latice Paths', () => {
+  test.each([
+    [2, 6],
+    [4, 70],
+    [10, 184756],
+    [20, 137846528820]
+  ])('If Grid Size: %i, then Latice Paths count: %i', (a, expected) => {
+    expect(latticePath(a)).toBe(expected)
+  })
+})

From 716c7d1e169bc55157ef491da433595796afbae8 Mon Sep 17 00:00:00 2001
From: pomkarnath98 <pomkarnath98@users.noreply.github.com>
Date: Tue, 8 Oct 2024 13:22:32 +0000
Subject: [PATCH 09/11] Updated Documentation in README.md

---
 DIRECTORY.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/DIRECTORY.md b/DIRECTORY.md
index 6c1fa7aeb8..7f6484cae5 100644
--- a/DIRECTORY.md
+++ b/DIRECTORY.md
@@ -35,6 +35,8 @@
   * [ROT13](Ciphers/ROT13.js)
   * [VigenereCipher](Ciphers/VigenereCipher.js)
   * [XORCipher](Ciphers/XORCipher.js)
+* **Compression**
+  * [RLE](Compression/RLE.js)
 * **Conversions**
   * [ArbitraryBase](Conversions/ArbitraryBase.js)
   * [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js)
@@ -285,6 +287,7 @@
   * [Problem016](Project-Euler/Problem016.js)
   * [Problem017](Project-Euler/Problem017.js)
   * [Problem018](Project-Euler/Problem018.js)
+  * [Problem019](Project-Euler/Problem019.js)
   * [Problem020](Project-Euler/Problem020.js)
   * [Problem021](Project-Euler/Problem021.js)
   * [Problem023](Project-Euler/Problem023.js)

From 2e34e5d4ca00fab2f5793df594a7a4e2bacb7c07 Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Tue, 8 Oct 2024 18:55:04 +0530
Subject: [PATCH 10/11] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20added=20a=20new=20c?=
 =?UTF-8?q?ase=20for=20Project=20Euler=20Problem=2015?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/test/Problem015.test.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Project-Euler/test/Problem015.test.js b/Project-Euler/test/Problem015.test.js
index 7accb9d61a..33d31b1fa4 100644
--- a/Project-Euler/test/Problem015.test.js
+++ b/Project-Euler/test/Problem015.test.js
@@ -5,6 +5,7 @@ describe('Finding total numbers of Latice Paths', () => {
   test.each([
     [2, 6],
     [4, 70],
+    [5, 252],
     [10, 184756],
     [20, 137846528820]
   ])('If Grid Size: %i, then Latice Paths count: %i', (a, expected) => {

From 601dd438a6db40f6fafc7c9548d8651c7985eacf Mon Sep 17 00:00:00 2001
From: Omkarnath Parida <omkarnath.parida@yocket.in>
Date: Tue, 8 Oct 2024 18:57:30 +0530
Subject: [PATCH 11/11] =?UTF-8?q?=F0=9F=90=9B=20FIX:=20Project=20Euler=20-?=
 =?UTF-8?q?=2015=20|=20fixed=20spelling=20error?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Project-Euler/test/Problem015.test.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Project-Euler/test/Problem015.test.js b/Project-Euler/test/Problem015.test.js
index 33d31b1fa4..c5e7484df8 100644
--- a/Project-Euler/test/Problem015.test.js
+++ b/Project-Euler/test/Problem015.test.js
@@ -1,14 +1,14 @@
 import { expect } from 'vitest'
 import { latticePath } from '../Problem015'
 
-describe('Finding total numbers of Latice Paths', () => {
+describe('Finding total numbers of Lattice Paths', () => {
   test.each([
     [2, 6],
     [4, 70],
     [5, 252],
     [10, 184756],
     [20, 137846528820]
-  ])('If Grid Size: %i, then Latice Paths count: %i', (a, expected) => {
+  ])('If Grid Size: %i, then Lattice Paths count: %i', (a, expected) => {
     expect(latticePath(a)).toBe(expected)
   })
 })