Content-Length: 2695 | pFad | http://github.com/TheAlgorithms/JavaScript/pull/1661.patch
thub.com
From 3ac14a04564b554d085d8b25060fb4d7de9a1d8a Mon Sep 17 00:00:00 2001
From: Piotr Idzik
Date: Mon, 13 May 2024 19:45:38 +0000
Subject: [PATCH] test: add tests for `NumberOfSubsetEqualToGivenSum`
---
.../NumberOfSubsetEqualToGivenSum.js | 15 +++++------
.../NumberOfSubsetEqualToGivenSum.test.js | 25 +++++++++++++++++++
2 files changed, 33 insertions(+), 7 deletions(-)
create mode 100644 Dynamic-Programming/tests/NumberOfSubsetEqualToGivenSum.test.js
diff --git a/Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js b/Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js
index 48905c39e2..fd8e70c4d6 100644
--- a/Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js
+++ b/Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js
@@ -1,5 +1,5 @@
/*
-Given an array of non-negative integers and a value sum,
+Given an array of positive integers and a value sum,
determine the total number of the subset with sum
equal to the given sum.
*/
@@ -7,6 +7,13 @@ equal to the given sum.
Given solution is O(n*sum) Time complexity and O(sum) Space complexity
*/
function NumberOfSubsetSum(array, sum) {
+ if (sum < 0) {
+ throw new Error('The sum must be non-negative.')
+ }
+
+ if (!array.every((num) => num > 0)) {
+ throw new Error('All of the inputs of the array must be positive.')
+ }
const dp = [] // create an dp array where dp[i] denote number of subset with sum equal to i
for (let i = 1; i <= sum; i++) {
dp[i] = 0
@@ -23,10 +30,4 @@ function NumberOfSubsetSum(array, sum) {
return dp[sum]
}
-// example
-
-// const array = [1, 1, 2, 2, 3, 1, 1]
-// const sum = 4
-// const result = NumberOfSubsetSum(array, sum)
-
export { NumberOfSubsetSum }
diff --git a/Dynamic-Programming/tests/NumberOfSubsetEqualToGivenSum.test.js b/Dynamic-Programming/tests/NumberOfSubsetEqualToGivenSum.test.js
new file mode 100644
index 0000000000..23eed33ebe
--- /dev/null
+++ b/Dynamic-Programming/tests/NumberOfSubsetEqualToGivenSum.test.js
@@ -0,0 +1,25 @@
+import { NumberOfSubsetSum } from '../NumberOfSubsetEqualToGivenSum'
+
+describe('Testing NumberOfSubsetSum', () => {
+ it.each([
+ [[], 0, 1],
+ [[], 1, 0],
+ [[1], 2, 0],
+ [[1, 2, 3, 4, 5], 0, 1],
+ [[1, 1, 1, 1, 1], 5, 1],
+ [[1, 1, 1, 1, 1], 4, 5],
+ [[1, 2, 3, 3], 6, 3],
+ [[10, 20, 30, 1], 31, 2],
+ [[1, 1, 2, 2, 3, 1, 1], 4, 18]
+ ])('check with %j and %i', (arr, sum, expected) => {
+ expect(NumberOfSubsetSum(arr, sum)).toBe(expected)
+ })
+
+ it.each([
+ [[1, 2], -1],
+ [[0, 2], 2],
+ [[1, -1], 0]
+ ])('throws for %j and %i', (arr, sum) => {
+ expect(() => NumberOfSubsetSum(arr, sum)).toThrowError()
+ })
+})
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/TheAlgorithms/JavaScript/pull/1661.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy