diff --git a/Makefile b/Makefile index 84c1aa5d..702fc7c3 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,15 @@ DOCKER_COMPOSE=docker compose .PHONY: all clean dependencies help list test outdated .EXPORT_ALL_VARIABLES: # (2) +define crono + @start=$$(date +%s); \ + $(1); \ + end=$$(date +%s); \ + diff=$$((end - start)); \ + printf "Total time: %02d:%02d:%02d\n" $$((diff/3600)) $$((diff%3600/60)) $$((diff%60)) +endef + + help: list list: @@ -135,7 +144,8 @@ compose/test: compose/build compose/run: compose/build ${DOCKER_COMPOSE} --profile production run --rm algorithm-exercises-js make run -all: env dependencies test +all: + $(call crono, make clean && make dependencies && make build && make test && make lint && make coverage/html) run: ls -alh diff --git a/src/hackerrank/implementation/countingValleys.js b/src/hackerrank/implementation/countingValleys.js index d327553b..a77c45f6 100644 --- a/src/hackerrank/implementation/countingValleys.js +++ b/src/hackerrank/implementation/countingValleys.js @@ -11,7 +11,7 @@ function countingValleys(steps, path) { console.debug(stepList); - stepList.forEach((step) => { + for (const step of stepList) { if (step === 'D') { if (altitude === 0) { valleys += 1; @@ -21,7 +21,7 @@ function countingValleys(steps, path) { if (step === 'U') { altitude += 1; } - }); + } return valleys; } diff --git a/src/hackerrank/implementation/migratoryBirds.js b/src/hackerrank/implementation/migratoryBirds.js index 0e4be156..3ebd558a 100644 --- a/src/hackerrank/implementation/migratoryBirds.js +++ b/src/hackerrank/implementation/migratoryBirds.js @@ -2,7 +2,7 @@ * @link Problem definition [[docs/hackerrank/implementation/migratoryBirds.md]] */ -import util from 'util'; +import util from 'node:util'; import { logger as console } from '../../logger.js'; function migratoryBirds(arr) { @@ -16,10 +16,10 @@ function migratoryBirds(arr) { for (const bird of arr) { console.debug(`bird ${bird}`); - if (!map[bird]) { - map[bird] = 1; - } else { + if (map[bird]) { map[bird] += 1; + } else { + map[bird] = 1; } console.debug(`bird = ${bird} ~> map[bird] = ${map[bird]}`); diff --git a/src/hackerrank/implementation/repeatedString.js b/src/hackerrank/implementation/repeatedString.js index 71e92e81..2761c50e 100644 --- a/src/hackerrank/implementation/repeatedString.js +++ b/src/hackerrank/implementation/repeatedString.js @@ -9,11 +9,11 @@ function countAs(word) { const chars = word.split(''); - chars.forEach((char) => { + for (const char of chars) { if (char === 'a') { result += 1; } - }); + } return result; } diff --git a/src/hackerrank/implementation/sockMerchant.js b/src/hackerrank/implementation/sockMerchant.js index 9fd4fe5f..a3d8bea8 100644 --- a/src/hackerrank/implementation/sockMerchant.js +++ b/src/hackerrank/implementation/sockMerchant.js @@ -9,9 +9,9 @@ function sockMerchant(n, ar) { const matches = {}; - ar.forEach((v) => { + for (const v of ar) { matches[v] = matches?.[v] ? matches[v] + 1 : 1; - }); + } console.debug(matches); diff --git a/src/hackerrank/interview_preparation_kit/arrays/2d_array.test.js b/src/hackerrank/interview_preparation_kit/arrays/2d_array.test.js index 86b5859e..dca892c8 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/2d_array.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/2d_array.test.js @@ -8,7 +8,7 @@ describe('arrays: 2d Array hourglassSum', () => { it('hourglassSum Test Cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = hourglassSum(test.input); console.debug( @@ -16,7 +16,7 @@ describe('arrays: 2d Array hourglassSum', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.js b/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.js index de72d674..b4847869 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.js +++ b/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.js @@ -11,7 +11,7 @@ function arrayManipulation(n, queries) { const result = Array(LENGTH).fill(SURROGATE_VALUE); let maximum = 0; - queries.forEach((query) => { + for (const query of queries) { const [aStart, bEnd, kValue] = query; console.debug(`start -> ${result}`); @@ -19,11 +19,11 @@ function arrayManipulation(n, queries) { result[i] += kValue; console.debug(`result -> ${result}`); } - }); + } - result.forEach((value) => { + for (const value of result) { maximum = Math.max(value, maximum); - }); + } return maximum; } diff --git a/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.test.js b/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.test.js index be5e7449..df7e3f7c 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/cruch_bruteforce.test.js @@ -9,7 +9,7 @@ describe('arrays: crush (bruteforce) small cases', () => { it('arrayManipulation Test Cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = arrayManipulation(test.n, test.queries); console.debug( @@ -17,7 +17,7 @@ describe('arrays: crush (bruteforce) small cases', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.js b/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.js index dcb32065..4f75c10e 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.js +++ b/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.js @@ -11,19 +11,19 @@ function arrayManipulation(n, queries) { const result = Array(LENGTH).fill(INITIAL_VALUE); let maximum = 0; - queries.forEach((query) => { + for (const query of queries) { const [aStart, bEnd, kValue] = query; result[aStart] += kValue; result[bEnd + 1] -= kValue; - }); + } let accumSum = 0; - result.forEach((value) => { + for (const value of result) { accumSum += value; maximum = Math.max(maximum, accumSum); - }); + } return maximum; } diff --git a/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.test.js b/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.test.js index 8ae07d61..fbad37c9 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/cruch_optimized.test.js @@ -9,7 +9,7 @@ describe('arrays: crush (optimized)', () => { it('arrayManipulation Test Cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = arrayManipulation(test.n, test.queries); console.debug( @@ -17,7 +17,7 @@ describe('arrays: crush (optimized)', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.test.js b/src/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.test.js index 774eddca..0eb1d1c3 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.test.js @@ -9,13 +9,13 @@ describe('ctci_array_left_rotation', () => { it('rotLeft Test cases', () => { expect.assertions(9); - ROT_LEFT_TEST_CASES.forEach((test) => { + for (const test of ROT_LEFT_TEST_CASES) { const answer = rotLeft(test.input, test.d_rotations); console.debug(`rotLeft(${test.numbers}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(ROT_LEFT_TEST_CASES).toHaveLength(8); }); diff --git a/src/hackerrank/interview_preparation_kit/arrays/minimum_swaps_2.test.js b/src/hackerrank/interview_preparation_kit/arrays/minimum_swaps_2.test.js index d3754953..cb2c778a 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/minimum_swaps_2.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/minimum_swaps_2.test.js @@ -9,13 +9,13 @@ describe('minimum swaps 2', () => { it('minimumSwaps', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = minimumSwaps(test.input); console.debug(`minimumSwaps(${test.input}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.js b/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.js index e1328a7a..56dfba3e 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.js +++ b/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.js @@ -9,7 +9,7 @@ function minimumBribesCalculate(q) { let bribes = 0; let i = 0; - q.forEach((value) => { + for (const value of q) { const position = i + 1; if (value - position > NEW_YEAR_CHAOS_TOLERANCE) { throw new Error(TOO_CHAOTIC_ERROR); @@ -20,13 +20,13 @@ function minimumBribesCalculate(q) { i ); - fragment.forEach((k) => { + for (const k of fragment) { if (k > value) { bribes += 1; } - }); + } i += 1; - }); + } return bribes; } diff --git a/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.test.js b/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.test.js index 1804bf11..5f6ebc0f 100644 --- a/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.test.js +++ b/src/hackerrank/interview_preparation_kit/arrays/new_year_chaos.test.js @@ -9,7 +9,7 @@ describe('new_year_chaos', () => { it('minimumBribes Test Cases', () => { expect.assertions(6); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = minimumBribesText(test.input); minimumBribes(test.input); @@ -18,7 +18,7 @@ describe('new_year_chaos', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(5); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_bruteforce.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_bruteforce.test.js index 9d595fa6..592b7b17 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_bruteforce.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_bruteforce.test.js @@ -9,7 +9,7 @@ describe('count_triplets_1', () => { it('countTriplets test cases', () => { expect.assertions(5); - SMALL_TEST_CASES.forEach((test) => { + for (const test of SMALL_TEST_CASES) { const answer = countTriplets(test.input, test.r); console.debug( @@ -17,7 +17,7 @@ describe('count_triplets_1', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(SMALL_TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optimized.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optimized.test.js index 78732368..85654f9f 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optimized.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optimized.test.js @@ -9,7 +9,7 @@ describe('count_triplets_1 (optimized)', () => { it('countTriplets small test cases', () => { expect.assertions(5); - SMALL_TEST_CASES.forEach((test) => { + for (const test of SMALL_TEST_CASES) { const answer = countTriplets(test.input, test.r); console.debug( @@ -17,7 +17,7 @@ describe('count_triplets_1 (optimized)', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(SMALL_TEST_CASES).toHaveLength(4); }); @@ -25,7 +25,7 @@ describe('count_triplets_1 (optimized)', () => { it('countTriplets big test cases', () => { expect.assertions(2); - BIG_TEST_CASES.forEach((test) => { + for (const test of BIG_TEST_CASES) { const answer = countTriplets(test.input, test.r); console.debug( @@ -33,7 +33,7 @@ describe('count_triplets_1 (optimized)', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(BIG_TEST_CASES).toHaveLength(1); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optmized.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optmized.js index 28a08ecb..b72b342c 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optmized.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1_optmized.js @@ -17,7 +17,7 @@ function countTriplets(arr, ratio) { const bCounter = {}; - arr.forEach((x) => { + for (const x of arr) { const j = Math.floor(x / ratio); const k = x * ratio; aCounter[x] -= 1; @@ -30,7 +30,7 @@ function countTriplets(arr, ratio) { } else { bCounter[x] = 1; } - }); + } return triplets; } diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/ctci-ransom-note.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/ctci-ransom-note.test.js index 8300a01b..3565b993 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/ctci-ransom-note.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/ctci-ransom-note.test.js @@ -8,7 +8,7 @@ describe('ctci_ransom_note', () => { it('checkMagazine test cases', () => { expect.assertions(4); - TEST_CASES.forEach((value) => { + for (const value of TEST_CASES) { const answer = checkMagazineText(value.magazine, value.note); checkMagazine(value.magazine, value.note); @@ -17,7 +17,7 @@ describe('ctci_ransom_note', () => { ); expect(answer).toStrictEqual(value.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.js index f9ec89a7..2d410a22 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.js @@ -15,7 +15,7 @@ function freqQuery(queries) { const __NOT_FOUND__ = 0; const __FOUND__ = 1; - queries.forEach((query) => { + for (const query of queries) { const [operation, data] = query; const current = dataMap?.[data] ?? __INITIAL__; @@ -39,7 +39,7 @@ function freqQuery(queries) { default: throw new Error('Invalid operation'); } - }); + } return result; } diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.test.js index 2a6f65de..60017598 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_bruteforce.test.js @@ -8,13 +8,13 @@ describe('frequency_queries', () => { it('freqQuery test cases', () => { expect.assertions(5); - SMALL_TEST_CASES.forEach((value) => { + for (const value of SMALL_TEST_CASES) { const answer = freqQuery(value.input); console.debug(`freqQuery(${value.input}) solution found: ${answer}`); expect(answer).toStrictEqual(value.expected); - }); + } expect(SMALL_TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.js index f052db31..13871375 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.js @@ -38,7 +38,7 @@ function freqQuery(queries) { const __NOT_FOUND__ = 0; const __FOUND__ = 1; - queries.forEach((query) => { + for (const query of queries) { const [operation, data] = query; const currentFreq = dataMap?.[data] ?? __INITIAL__; @@ -75,7 +75,7 @@ function freqQuery(queries) { if (operation === __INSERT__ || operation === __DELETE__) { updateFrequency(freqMap, data, currentFreq, newFreq); } - }); + } return result; } diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.test.js index fa720425..260f3551 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries_optimized.test.js @@ -8,13 +8,13 @@ describe('frequency_queries', () => { it('freqQuery test cases', () => { expect.assertions(5); - TEST_CASES.forEach((value) => { + for (const value of TEST_CASES) { const answer = freqQuery(value.input); console.debug(`freqQuery(${value.input}) solution found: ${answer}`); expect(answer).toStrictEqual(value.expected); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock_and_anagrams.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock_and_anagrams.test.js index 2563995a..88bd7e34 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock_and_anagrams.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/sherlock_and_anagrams.test.js @@ -10,8 +10,8 @@ describe('sherlock_and_anagrams', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = sherlockAndAnagrams(test.input); console.debug( @@ -21,8 +21,8 @@ describe('sherlock_and_anagrams', () => { expect(answer).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(4); expect(totalTestsCount).toBe(15); diff --git a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/two_strings.test.js b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/two_strings.test.js index 08bb4e6f..38413dc0 100644 --- a/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/two_strings.test.js +++ b/src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/two_strings.test.js @@ -10,8 +10,8 @@ describe('two_strings', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testCase) => { - testCase.tests.forEach((test) => { + for (const testCase of TEST_CASES) { + for (const test of testCase.tests) { const answer = twoStrings(test.s1, test.s2); console.debug( @@ -21,8 +21,8 @@ describe('two_strings', () => { expect(answer).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(8); diff --git a/src/hackerrank/interview_preparation_kit/dynamic_programming/max_array_sum.test.js b/src/hackerrank/interview_preparation_kit/dynamic_programming/max_array_sum.test.js index 409b8583..ecaae640 100644 --- a/src/hackerrank/interview_preparation_kit/dynamic_programming/max_array_sum.test.js +++ b/src/hackerrank/interview_preparation_kit/dynamic_programming/max_array_sum.test.js @@ -14,13 +14,13 @@ describe('max_array_sum', () => { it('maxSubsetSum test cases', () => { expect.assertions(5); - ALL_TEST_CASES.forEach((test) => { + for (const test of ALL_TEST_CASES) { const answer = maxSubsetSum(test.input).toString(DECIMAL_RADIX); console.debug(`maxSubsetSum(${test.input}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(ALL_TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/angry_children.test.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/angry_children.test.js index 996845bb..bb3d2284 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/angry_children.test.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/angry_children.test.js @@ -9,13 +9,13 @@ describe('angry_children', () => { it('maxMin test cases', () => { expect.assertions(5); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = maxMin(test.k, test.arr); console.debug(`maxMin(${test.k}, ${test.arr}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.js index ff3d8473..b3124e8c 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.js @@ -9,12 +9,12 @@ function getMinimumCost(k, c) { let total = 0; let i = 0; - flowers.forEach((flowerCost) => { + for (const flowerCost of flowers) { const position = Math.floor(i / k); total += (position + 1) * flowerCost; i += 1; - }); + } return total; } diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.test.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.test.js index c6625956..2c605501 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.test.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/greedy_florist.test.js @@ -9,7 +9,7 @@ describe('greedy_florist', () => { it('getMinimumCost test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = getMinimumCost(test.k, test.contests); console.debug( @@ -17,7 +17,7 @@ describe('greedy_florist', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.js index 200fe06f..32b1bcec 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.js @@ -43,7 +43,7 @@ function luckBalance(k, contests) { let importantContests = []; const nonimportantContests = []; - contests.forEach((contestData) => { + for (const contestData of contests) { const [luck, important] = [...contestData]; const contest = new Contest(luck, important); if (contest.isImportant()) { @@ -51,7 +51,7 @@ function luckBalance(k, contests) { } else { nonimportantContests.push(contest); } - }); + } importantContests = dynamicSort(importantContests, [ { property: 'important', order: 'desc' }, @@ -70,9 +70,9 @@ function luckBalance(k, contests) { total -= importantContests[i].getLuck(); } - nonimportantContests.forEach((contest) => { + for (const contest of nonimportantContests) { total += contest.luck; - }); + } return total; } diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.test.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.test.js index eb4fcdeb..3b1d458b 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.test.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/luck-balance.test.js @@ -9,7 +9,7 @@ describe('luck-balance', () => { it('luckBalance test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = luckBalance(test.k, test.contests); console.debug( @@ -17,7 +17,7 @@ describe('luck-balance', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.test.js b/src/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.test.js index ae5b53bc..0798460c 100644 --- a/src/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.test.js +++ b/src/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.test.js @@ -9,7 +9,7 @@ describe('minimum_absolute_difference_in_an_array', () => { it('minimumAbsoluteDifference test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = minimumAbsoluteDifference(test.input); console.debug( @@ -17,7 +17,7 @@ describe('minimum_absolute_difference_in_an_array', () => { ); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits-alt.test.js b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits-alt.test.js index 1e6e2868..a70e9110 100644 --- a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits-alt.test.js +++ b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits-alt.test.js @@ -11,8 +11,8 @@ describe('flipping bits', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = flippingBitsAlt(test.input); console.debug( @@ -22,8 +22,8 @@ describe('flipping bits', () => { expect(answer).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(8); diff --git a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.js b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.js index bc5d4fbc..dadba671 100644 --- a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.js +++ b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.js @@ -11,15 +11,15 @@ function flippingBits(n) { let resultBinStr = ''; - nBinaryStr.split('').forEach((binDigit) => { + for (const binDigit of nBinaryStr.split('')) { if (binDigit === '1') { resultBinStr += '0'; } else { resultBinStr += '1'; } - }); + } - return parseInt(resultBinStr, __BINARY_BASE__); + return Number.parseInt(resultBinStr, __BINARY_BASE__); } export default { flippingBits }; diff --git a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.test.js b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.test.js index e138c64a..a403cc49 100644 --- a/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.test.js +++ b/src/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.test.js @@ -10,8 +10,8 @@ describe('flipping bits', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = flippingBits(test.input); console.debug(`flippingBits(${test.input}) solution found: ${answer}`); @@ -19,8 +19,8 @@ describe('flipping bits', () => { expect(answer).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(8); diff --git a/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.js b/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.js index 921dd035..4128cb20 100644 --- a/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.js +++ b/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.js @@ -60,13 +60,13 @@ function maxCircle(queries) { const result = []; const friends = new GropingFriends(); - queries.forEach((query) => { + for (const query of queries) { // Computing friendship friends.unite(query[0], query[1]); // Counting friends groups result.push(friends.count_groups()); - }); + } return result; } diff --git a/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.test.js b/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.test.js index e9314805..59bcbace 100644 --- a/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.test.js +++ b/src/hackerrank/interview_preparation_kit/miscellaneous/friend_circle_queries.test.js @@ -8,13 +8,13 @@ describe('friend_circle_queries', () => { it('maxCircle test cases', () => { expect.assertions(5); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = maxCircle(test.arr); console.debug(`maxCircle(${test.arr}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_fibonacci_numbers.test.js b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_fibonacci_numbers.test.js index 88d65f8c..0b7e5634 100644 --- a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_fibonacci_numbers.test.js +++ b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_fibonacci_numbers.test.js @@ -8,13 +8,13 @@ describe('ctci_fibonacci_numbers', () => { it('fibonacci test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = fibonacci(test.input); console.debug(`fibonacci(${test.input}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_recursive_staircase.test.js b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_recursive_staircase.test.js index fc6fa335..0fbdd2c8 100644 --- a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_recursive_staircase.test.js +++ b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/ctci_recursive_staircase.test.js @@ -9,15 +9,15 @@ describe('ctci_recursive_staircase', () => { it('stepPerms test cases', () => { expect.assertions(9); - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = stepPerms(test.n_steps); console.debug(`stepPerms(${test.n_steps}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); }); @@ -27,8 +27,8 @@ describe('ctci_recursive_staircase', () => { const TOP_LIMIT = 10 ** 10 + 7; - TEST_CASES_GENERALIZED.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES_GENERALIZED) { + for (const test of testSet.tests) { const stairs = new StepPerms(TOP_LIMIT, test.steps_limit); const answer = stairs.stepPermsComputWithCache(test.n_steps); @@ -38,8 +38,8 @@ describe('ctci_recursive_staircase', () => { ); expect(answer).toStrictEqual(test.expected); - }); - }); + } + } expect(TEST_CASES_GENERALIZED).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.bruteforce-test.js b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.bruteforce-test.js index 8efe1f0e..a3475e9d 100644 --- a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.bruteforce-test.js +++ b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.bruteforce-test.js @@ -8,13 +8,13 @@ describe('recursive_digit_sum bruteforce', () => { it('superDigit test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = superDigit(test.n, test.k); console.debug(`superDigit(${test.n}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.js b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.js index 68e0cd16..470b1ac1 100644 --- a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.js +++ b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.js @@ -6,12 +6,12 @@ const RADIX = 10; function superDigitCompute(n) { if (n.length === 1) { - return parseInt(n, RADIX); + return Number.parseInt(n, RADIX); } let partial = 0; for (const digit of n) { - partial += parseInt(digit, RADIX); + partial += Number.parseInt(digit, RADIX); } return superDigitCompute(`${partial}`); diff --git a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.test.js b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.test.js index 200714d9..a5ba931c 100644 --- a/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.test.js +++ b/src/hackerrank/interview_preparation_kit/recursion_and_backtracking/recursive_digit_sum.test.js @@ -8,13 +8,13 @@ describe('recursive_digit_sum', () => { it('superDigit test cases', () => { expect.assertions(5); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const answer = superDigit(test.n, test.k); console.debug(`superDigit(${test.n}) solution found: ${answer}`); expect(answer).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.js index 9c9603c8..8ee05758 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.js @@ -7,7 +7,7 @@ function whatFlavorsCompute(cost, money) { const RADIX = 10; for (const [key, price] of Object.entries(cost)) { - const i = parseInt(key, RADIX); + const i = Number.parseInt(key, RADIX); const diff = money - price; if (Number.isInteger(cache?.[diff])) { diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.test.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.test.js index 3407c13c..06216569 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.test.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor.test.js @@ -10,8 +10,8 @@ describe('ctci_ice_cream_parlor', () => { expect.assertions(12); let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = whatFlavorsCompute(test.costs, test.money); console.debug( @@ -22,8 +22,8 @@ describe('ctci_ice_cream_parlor', () => { expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(5); @@ -34,16 +34,16 @@ describe('ctci_ice_cream_parlor', () => { let totalTestsCount = 0; - TEST_CASES_BORDER_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES_BORDER_CASES) { + for (const test of testSet.tests) { expect(whatFlavorsCompute(test.costs, test.money)).toStrictEqual( test.expected ); expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES_BORDER_CASES).toHaveLength(1); expect(totalTestsCount).toBe(1); diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.js index 631c99be..2e618920 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.js @@ -6,7 +6,7 @@ function whatFlavorsBruteforceCompute(cost, money) { const RADIX = 10; for (const key of Object.keys(cost)) { - const i = parseInt(key, RADIX); + const i = Number.parseInt(key, RADIX); const x = cost[i]; const budget = money - x; diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.test.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.test.js index 1d6da492..275f849c 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.test.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_bruteforce.test.js @@ -14,8 +14,8 @@ describe('ctci_ice_cream_parlor_bruteforce', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = whatFlavorsBruteforceCompute(test.costs, test.money); console.debug( @@ -26,8 +26,8 @@ describe('ctci_ice_cream_parlor_bruteforce', () => { expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(5); @@ -38,16 +38,16 @@ describe('ctci_ice_cream_parlor_bruteforce', () => { let totalTestsCount = 0; - TEST_CASES_BORDER_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES_BORDER_CASES) { + for (const test of testSet.tests) { expect( whatFlavorsBruteforceCompute(test.costs, test.money) ).toStrictEqual(test.expected); expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES_BORDER_CASES).toHaveLength(1); expect(totalTestsCount).toBe(1); diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.js index 8378c84a..3480d859 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.js @@ -14,7 +14,7 @@ function whatFlavorsCompute(cost, money) { } for (const key of Object.keys(cost)) { - const i = parseInt(key, RADIX); + const i = Number.parseInt(key, RADIX); const v1 = cost[i]; const v2 = money - v1; @@ -34,7 +34,7 @@ function whatFlavorsCompute(cost, money) { const result = new Set(); for (const key of Object.keys(cost)) { - const x = parseInt(key, RADIX); + const x = Number.parseInt(key, RADIX); if (cost[x] === ans1 || cost[x] === ans2) { result.add(x + 1); diff --git a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.test.js b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.test.js index f9307b65..d2b6008d 100644 --- a/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.test.js +++ b/src/hackerrank/interview_preparation_kit/search/ctci_ice_cream_parlor_optimized.test.js @@ -14,8 +14,8 @@ describe('ctci_ice_cream_parlor_optimized', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const answer = whatFlavorsCompute(test.costs, test.money); console.debug( @@ -26,8 +26,8 @@ describe('ctci_ice_cream_parlor_optimized', () => { expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(5); @@ -38,16 +38,16 @@ describe('ctci_ice_cream_parlor_optimized', () => { let totalTestsCount = 0; - TEST_CASES_BORDER_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES_BORDER_CASES) { + for (const test of testSet.tests) { expect(whatFlavorsCompute(test.costs, test.money)).toStrictEqual( test.expected ); expect(whatFlavors(test.costs, test.money)).toBeUndefined(); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES_BORDER_CASES).toHaveLength(1); expect(totalTestsCount).toBe(1); diff --git a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.big.test.js b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.big.test.js index eacf69e6..3620834e 100644 --- a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.big.test.js +++ b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.big.test.js @@ -7,12 +7,12 @@ describe('swap_nodes_algo', () => { it('build_tree and plain test cases', () => { expect.assertions(2); - BIG_TEST_CASES.forEach((test) => { + for (const test of BIG_TEST_CASES) { const tree = new Tree(test.nodes); const tresult = tree.flatTree(); expect(tresult).toStrictEqual(test.flattened); - }); + } expect(BIG_TEST_CASES).toHaveLength(1); }); @@ -20,11 +20,11 @@ describe('swap_nodes_algo', () => { it('swapNodes test cases', () => { expect.assertions(2); - BIG_TEST_CASES.forEach((test) => { + for (const test of BIG_TEST_CASES) { const tResult = swapNodes(test.nodes, test.queries); expect(tResult).toStrictEqual(test.expected); - }); + } expect(BIG_TEST_CASES).toHaveLength(1); }); diff --git a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js index 386cf355..3edc6185 100644 --- a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js +++ b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js @@ -89,9 +89,9 @@ class Tree { traverseInOrderFlat(this.root); const output = []; - flatTreeCollector.forEach((node) => { + for (const node of flatTreeCollector) { output.push(node.data); - }); + } return output; } @@ -104,13 +104,14 @@ function swapNodes(indexes, queries) { nodeCollector = Object.fromEntries( Object.entries(nodeCollector).sort( - ([a], [b]) => parseInt(a, __RADIX__) - parseInt(b, __RADIX__) + ([a], [b]) => + Number.parseInt(a, __RADIX__) - Number.parseInt(b, __RADIX__) ) ); for (const query of queries) { for (const [level, nodeList] of Object.entries(nodeCollector)) { - const tLevel = parseInt(level, __RADIX__); + const tLevel = Number.parseInt(level, __RADIX__); if (tLevel % query === 0) { for (const node of nodeList) { diff --git a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.test.js b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.test.js index 2c8eb7fe..e4e7417b 100644 --- a/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.test.js +++ b/src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.test.js @@ -35,12 +35,12 @@ describe('swap_nodes_algo', () => { it('build tree and flattened tree test cases', () => { expect.assertions(5); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const tree = new Tree(test.nodes); const tresult = tree.flatTree(); expect(tresult).toStrictEqual(test.flattened); - }); + } expect(TEST_CASES).toHaveLength(4); }); @@ -48,11 +48,11 @@ describe('swap_nodes_algo', () => { it('swapNodes test cases', () => { expect.assertions(5); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const tresult = swapNodes(test.nodes, test.queries); expect(tresult).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/sort/ctci_bubble_sort.test.js b/src/hackerrank/interview_preparation_kit/sort/ctci_bubble_sort.test.js index 9829d50e..1ba652bd 100644 --- a/src/hackerrank/interview_preparation_kit/sort/ctci_bubble_sort.test.js +++ b/src/hackerrank/interview_preparation_kit/sort/ctci_bubble_sort.test.js @@ -7,14 +7,14 @@ describe('countSwaps', () => { it('build tree and flattened tree test cases', () => { expect.assertions(7); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const sortable = new SortableGroup(test.input); const resultSort = sortable.bubble_sort().group; const resultPrint = countSwaps(test.input); expect(resultPrint).toBeUndefined(); expect(resultSort).toStrictEqual(test.sorted); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/sort/ctci_comparator_sorting.test.js b/src/hackerrank/interview_preparation_kit/sort/ctci_comparator_sorting.test.js index 4ba1b33d..f8dd6193 100644 --- a/src/hackerrank/interview_preparation_kit/sort/ctci_comparator_sorting.test.js +++ b/src/hackerrank/interview_preparation_kit/sort/ctci_comparator_sorting.test.js @@ -26,7 +26,7 @@ describe('comparatorSorting', () => { it('test_comparator_sorting', () => { expect.assertions(9); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const players = []; for (const player of test.input) { @@ -35,7 +35,7 @@ describe('comparatorSorting', () => { expect(comparatorSorting(players)).toStrictEqual(test.sorted); expect(comparatorSortingPrint(players)).toBeUndefined(); - }); + } expect(TEST_CASES).toHaveLength(4); }); diff --git a/src/hackerrank/interview_preparation_kit/sort/mark_and_toys.test.js b/src/hackerrank/interview_preparation_kit/sort/mark_and_toys.test.js index c41cc8b3..4e735f70 100644 --- a/src/hackerrank/interview_preparation_kit/sort/mark_and_toys.test.js +++ b/src/hackerrank/interview_preparation_kit/sort/mark_and_toys.test.js @@ -7,11 +7,11 @@ describe('maximumToys', () => { it('maximumToys test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const result = maximumToys(test.prices, test.budget); expect(result).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/stacks_and_queues/balanced_brackets.test.js b/src/hackerrank/interview_preparation_kit/stacks_and_queues/balanced_brackets.test.js index 97c7d8b7..4b244ddf 100644 --- a/src/hackerrank/interview_preparation_kit/stacks_and_queues/balanced_brackets.test.js +++ b/src/hackerrank/interview_preparation_kit/stacks_and_queues/balanced_brackets.test.js @@ -11,15 +11,15 @@ describe('isBalanced', () => { let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const result = isBalanced(test.input) === __YES__; expect(result).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(8); diff --git a/src/hackerrank/interview_preparation_kit/string_manipulation/alternating_characters.test.js b/src/hackerrank/interview_preparation_kit/string_manipulation/alternating_characters.test.js index 379e09dd..7de38613 100644 --- a/src/hackerrank/interview_preparation_kit/string_manipulation/alternating_characters.test.js +++ b/src/hackerrank/interview_preparation_kit/string_manipulation/alternating_characters.test.js @@ -8,15 +8,16 @@ describe('alternatingCharacters', () => { expect.assertions(11); let totalTestsCount = 0; - TEST_CASES.forEach((testSet) => { - testSet?.tests.forEach((test) => { + + for (const testSet of TEST_CASES) { + for (const test of testSet.tests) { const result = alternatingCharacters(test.input); expect(result).toStrictEqual(test.expected); totalTestsCount += 1; - }); - }); + } + } expect(TEST_CASES).toHaveLength(3); expect(totalTestsCount).toBe(9); diff --git a/src/hackerrank/interview_preparation_kit/string_manipulation/ctci_making_anagrams.test.js b/src/hackerrank/interview_preparation_kit/string_manipulation/ctci_making_anagrams.test.js index bf48505f..00f06adb 100644 --- a/src/hackerrank/interview_preparation_kit/string_manipulation/ctci_making_anagrams.test.js +++ b/src/hackerrank/interview_preparation_kit/string_manipulation/ctci_making_anagrams.test.js @@ -7,11 +7,11 @@ describe('makeAnagram', () => { it('makeAnagram test cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const result = makeAnagram(test.a, test.b); expect(result).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.js b/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.js index 7e68561a..ce87c268 100644 --- a/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.js +++ b/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.js @@ -34,8 +34,8 @@ function isValidCompute(s) { ); const __RADIX__ = 10; const __TOLERANCE__ = 1; - const minorFreq = parseInt(frequenciesList[0][0], __RADIX__); - const majorFreq = parseInt(frequenciesList[1][0], __RADIX__); + const minorFreq = Number.parseInt(frequenciesList[0][0], __RADIX__); + const majorFreq = Number.parseInt(frequenciesList[1][0], __RADIX__); if ( frequencies[minorFreq] === __TOLERANCE__ && diff --git a/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.test.js b/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.test.js index 3e2a6b24..3021186e 100644 --- a/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.test.js +++ b/src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.test.js @@ -9,11 +9,11 @@ describe('isValid', () => { const __YES__ = 'YES'; - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const result = isValid(test.input) === __YES__; expect(result).toStrictEqual(test.expected); - }); + } expect(TEST_CASES).toHaveLength(9); }); diff --git a/src/hackerrank/projecteuler/euler001.test.js b/src/hackerrank/projecteuler/euler001.test.js index fc14b230..a7fb786c 100755 --- a/src/hackerrank/projecteuler/euler001.test.js +++ b/src/hackerrank/projecteuler/euler001.test.js @@ -9,14 +9,14 @@ describe('euler001', () => { it('euler001 JSON Test Cases', () => { expect.assertions(4); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const calculated = euler001(test.a, test.b, test.n); console.log( `euler001(${test.a}, ${test.b}, ${test.n}) solution found: ${test.answer}` ); expect(calculated).toStrictEqual(test.answer); - }); + } expect(TEST_CASES).toHaveLength(3); }); diff --git a/src/hackerrank/projecteuler/euler002.test.js b/src/hackerrank/projecteuler/euler002.test.js index 59da9afe..21a85040 100755 --- a/src/hackerrank/projecteuler/euler002.test.js +++ b/src/hackerrank/projecteuler/euler002.test.js @@ -9,12 +9,12 @@ describe('euler002', () => { it('euler002 JSON Test cases', () => { expect.assertions(3); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const calculated = euler002(test.n); console.log(`euler002(${test.n}) solution found: ${test.expected}`); expect(`${calculated}`).toBe(`${test.expected}`); - }); + } expect(TEST_CASES).toHaveLength(2); }); diff --git a/src/hackerrank/projecteuler/euler003.test.js b/src/hackerrank/projecteuler/euler003.test.js index 1aefc213..74367103 100755 --- a/src/hackerrank/projecteuler/euler003.test.js +++ b/src/hackerrank/projecteuler/euler003.test.js @@ -9,12 +9,12 @@ describe('euler003', () => { it('euler003 JSON Test cases', () => { expect.assertions(3); - TEST_CASES.forEach((test) => { + for (const test of TEST_CASES) { const calculated = euler003(test.n); console.log(`euler003(${test.n}) solution found: ${test.expected}`); expect(`${calculated}`).toBe(`${test.expected}`); - }); + } expect(TEST_CASES).toHaveLength(2); }); diff --git a/src/hackerrank/warmup/solveMeFirst.js b/src/hackerrank/warmup/solveMeFirst.js index 649f2921..cadcfc4e 100644 --- a/src/hackerrank/warmup/solveMeFirst.js +++ b/src/hackerrank/warmup/solveMeFirst.js @@ -6,9 +6,9 @@ function solveMeFirst(inputLines) { let result = 0; const radix = 10; - inputLines.forEach((v) => { - result += parseInt(v, radix); - }); + for (const v of inputLines) { + result += Number.parseInt(v, radix); + } return result; } diff --git a/src/hackerrank/warmup/timeConversion.js b/src/hackerrank/warmup/timeConversion.js index bf85e3cb..f8ee796b 100644 --- a/src/hackerrank/warmup/timeConversion.js +++ b/src/hackerrank/warmup/timeConversion.js @@ -8,7 +8,7 @@ function timeConversion(s) { const timeStr = s.substring(0, s.length - 2); const time = timeStr.split(':'); - let hour = parseInt(time[0], 10); + let hour = Number.parseInt(time[0], 10); if (hour >= 12) { hour = 0; diff --git a/src/projecteuler/helpers/bigNumbers.js b/src/projecteuler/helpers/bigNumbers.js index b54b6162..e1ac906b 100644 --- a/src/projecteuler/helpers/bigNumbers.js +++ b/src/projecteuler/helpers/bigNumbers.js @@ -3,7 +3,7 @@ export const bigNum = (strNumber, base = 10) => { let i; for (i = 0; i < strNumber.length; i++) { - result.push(parseInt(strNumber.charAt(i), base)); + result.push(Number.parseInt(strNumber.charAt(i), base)); } return result; diff --git a/src/projecteuler/problem0005.js b/src/projecteuler/problem0005.js index e37604fe..a722dd9a 100644 --- a/src/projecteuler/problem0005.js +++ b/src/projecteuler/problem0005.js @@ -36,9 +36,9 @@ function _replaceMaximum(_element, count, _group) { function _primeFactorsCollection(_factors) { let collection = {}; - _factors.forEach((factor) => { + for (const factor of _factors) { collection = _increase(factor, collection); - }); + } return collection; } diff --git a/src/projecteuler/problem0013-alt.js b/src/projecteuler/problem0013-alt.js index c024d2d2..afc9c239 100644 --- a/src/projecteuler/problem0013-alt.js +++ b/src/projecteuler/problem0013-alt.js @@ -9,13 +9,13 @@ function problem0013alt(arrayOfNumbers, numberOfFirstDigits) { let sum = BigInt(0); - arrayOfNumbers.forEach((num) => { + for (const num of arrayOfNumbers) { sum += BigInt(num); - }); + } console.debug(`Sum: ${sum}`); - const firstDigits = parseInt( + const firstDigits = Number.parseInt( sum.toString().slice(0, numberOfFirstDigits), radix ); diff --git a/src/projecteuler/problem0013.js b/src/projecteuler/problem0013.js index 9540337e..3b418038 100644 --- a/src/projecteuler/problem0013.js +++ b/src/projecteuler/problem0013.js @@ -12,7 +12,7 @@ function problem0013(arrayOfNumbers, _firtsDigits) { console.debug(`Sum: ${sum}`); - const first = parseInt(sum.slice(0, _firtsDigits), radix); + const first = Number.parseInt(sum.slice(0, _firtsDigits), radix); console.log(`First ${_firtsDigits} digits of huge sume are ${first}`); diff --git a/src/projecteuler/problem0016-alt.js b/src/projecteuler/problem0016-alt.js index adf50001..1c8b98ac 100644 --- a/src/projecteuler/problem0016-alt.js +++ b/src/projecteuler/problem0016-alt.js @@ -32,9 +32,9 @@ function problem0016alt(base, exponent) { const digits = strPower.split(''); let result = 0; - digits.forEach((num) => { - result += parseInt(num, radix); - }); + for (const num of digits) { + result += Number.parseInt(num, radix); + } console.log(`Sum of Digits: (${result})`); diff --git a/src/projecteuler/problem0021.js b/src/projecteuler/problem0021.js index c6309665..bd2ac2ea 100644 --- a/src/projecteuler/problem0021.js +++ b/src/projecteuler/problem0021.js @@ -28,7 +28,7 @@ function problem0021(_start, _limit) { const amicableNumbers = []; - Object.entries(data).forEach((entry) => { + for (const entry of Object.entries(data)) { const [index, value] = entry; if ( @@ -40,7 +40,7 @@ function problem0021(_start, _limit) { ) { amicableNumbers.push(`${index}`); } - }); + } console.log(`result`, data); console.log(`amicableNumbers`, amicableNumbers);