From 13b7c244790a2da99fbd91f01bfe321d84bd02fb Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月25日 11:39:32 +0800 Subject: [PATCH 1/8] Added Composite Number --- Maths/IsCompositeNumber.js | 30 ++++++++++++++++++++++++++++ Maths/test/IsCompositeNumber.test.js | 15 ++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Maths/IsCompositeNumber.js create mode 100644 Maths/test/IsCompositeNumber.test.js diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js new file mode 100644 index 0000000000..ee420d66e3 --- /dev/null +++ b/Maths/IsCompositeNumber.js @@ -0,0 +1,30 @@ +/* + * Composite number: https://en.wikipedia.org/wiki/Composite_number + * function isCompositeNumber + * Check if a given number is a composite number or not? + * isCompositeNumber(6) // returns true + * isCompositeNumber(577) // returns false + * isCompositeNumber(2024) // returns true + * A composite number is a positive integer that is not prime. In other words, it has a positive divisor other than one or itself. + * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ......... + * Every integer greater than one is either a prime number or a composite number. + * The number one is a unit – it is neither prime nor composite. + */ + +function isCompositeNumber (number) { + let i = 1 + let count = 0 + while (number>= i) { + if (number % i === 0) { + count++ + } + i++ + } + if (count> 2) { + return true + } else { + return false + } +} + +export { isCompositeNumber } diff --git a/Maths/test/IsCompositeNumber.test.js b/Maths/test/IsCompositeNumber.test.js new file mode 100644 index 0000000000..1122d44651 --- /dev/null +++ b/Maths/test/IsCompositeNumber.test.js @@ -0,0 +1,15 @@ +import { isCompositeNumber } from '../IsCompositeNumber' + +describe('Testing isCompositeNumber function', () => { + it('should return true if the number is composite number', () => { + expect(isCompositeNumber(6)).toBe(true) + }) + + it('should return false if the number is not composite number', () => { + expect(isCompositeNumber(577)).toBe(false) + }) + + it('should return true if the number is composite number', () => { + expect(isCompositeNumber(2024)).toBe(true) + }) +}) From 4d12b5161a49ab16bb79a54cace25618cd679924 Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月26日 20:50:57 +0800 Subject: [PATCH 2/8] Updated isCompositeNumber Updated isCompositeNumber with a different approach --- Maths/IsCompositeNumber.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index ee420d66e3..82110f2109 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -9,22 +9,22 @@ * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ......... * Every integer greater than one is either a prime number or a composite number. * The number one is a unit – it is neither prime nor composite. + * Reference: https://www.geeksforgeeks.org/composite-number/ */ function isCompositeNumber (number) { - let i = 1 - let count = 0 - while (number>= i) { - if (number % i === 0) { - count++ - } - i++ - } - if (count> 2) { - return true - } else { - return false + // Condition that can immediate skip: + // Corner cases + if (number <= 1) return false + if (number <= 3) return false + // middle five numbers in below loop + if (number % 2 === 0 || number % 3 === 0) return true + + for (let i = 5; i * i <= number; i = i + 6) { + if (number % i === 0 || number % (i + 2) === 0) { return true } } + + return false } export { isCompositeNumber } From ccc7ff70016f80424c0a00aa018259d07755be74 Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月26日 20:59:59 +0800 Subject: [PATCH 3/8] Updated IsCompositeNumber 2 Update some comment --- Maths/IsCompositeNumber.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index 82110f2109..19328006ee 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -13,11 +13,11 @@ */ function isCompositeNumber (number) { - // Condition that can immediate skip: + // Conditions that can immediate skip: // Corner cases if (number <= 1) return false if (number <= 3) return false - // middle five numbers in below loop + // Middle five numbers in below loop if (number % 2 === 0 || number % 3 === 0) return true for (let i = 5; i * i <= number; i = i + 6) { From 9672cb58cb4e7216edb31b818e9c9d0d42db22ec Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月26日 21:02:02 +0800 Subject: [PATCH 4/8] Updated IsCompositeNumber.js Updated comments again --- Maths/IsCompositeNumber.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index 19328006ee..df9da75e5d 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -13,7 +13,7 @@ */ function isCompositeNumber (number) { - // Conditions that can immediate skip: + // Conditions that can immediate gain result: // Corner cases if (number <= 1) return false if (number <= 3) return false From 205246e1cd9d97d2ab38e0d5857707fbab111b35 Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月28日 18:06:54 +0800 Subject: [PATCH 5/8] Update IsCompositeNumber.js --- Maths/IsCompositeNumber.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index df9da75e5d..3981c201f0 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -9,22 +9,12 @@ * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ......... * Every integer greater than one is either a prime number or a composite number. * The number one is a unit – it is neither prime nor composite. - * Reference: https://www.geeksforgeeks.org/composite-number/ */ -function isCompositeNumber (number) { - // Conditions that can immediate gain result: - // Corner cases - if (number <= 1) return false - if (number <= 3) return false - // Middle five numbers in below loop - if (number % 2 === 0 || number % 3 === 0) return true - - for (let i = 5; i * i <= number; i = i + 6) { - if (number % i === 0 || number % (i + 2) === 0) { return true } - } +import { PrimeCheck } from './PrimeCheck' - return false +function isCompositeNumber (number) { + return number> 1 && !PrimeCheck(number) } export { isCompositeNumber } From 5d6862253c831c8bd55c2e1b778ca84aafc2d39b Mon Sep 17 00:00:00 2001 From: riddlestar <110538244+riddlestar@users.noreply.github.com> Date: Wed, 3 Aug 2022 19:29:51 +0800 Subject: [PATCH 6/8] Create xd --- xd | 1 + 1 file changed, 1 insertion(+) create mode 100644 xd diff --git a/xd b/xd new file mode 100644 index 0000000000..722ed8ce09 --- /dev/null +++ b/xd @@ -0,0 +1 @@ +xd From 0740b2cb5a5534eda7ea0dffb8c6b9476744b49a Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年8月19日 08:04:19 +0800 Subject: [PATCH 7/8] Update 2 --- .gitattributes | 2 ++ Maths/JugglerSequence.js | 23 +++++++++++++++++++++++ Maths/test/JugglerSequence.test.js | 21 +++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 .gitattributes create mode 100644 Maths/JugglerSequence.js create mode 100644 Maths/test/JugglerSequence.test.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..dfe0770424 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/Maths/JugglerSequence.js b/Maths/JugglerSequence.js new file mode 100644 index 0000000000..89529ffeb1 --- /dev/null +++ b/Maths/JugglerSequence.js @@ -0,0 +1,23 @@ +/* Juggler Sequence: https://en.wikipedia.org/wiki/Juggler_sequence + * function jugglerSequence + * Juggler Sequence is a series of integer number in which the first term starts with a positive integer number n + * and the remaining terms are generated from the immediate previous term using the recurrence relation + * Produce Juggler Sequence using number n as the first term of the sequence and store in an array + * Reference: https://www.geeksforgeeks.org/juggler-sequence/ + * jugglerSequence(3) // returns [3, 5, 11, 36, 6, 2, 1 ] + * jugglerSequence(9) // returns [9, 27, 140, 11, 36, 6, 2, 1] + * jugglerSequence(15) // returns [15, 58, 7, 18, 4, 2, 1] + */ + +function jugglerSequence (n) { + const sequence = [] + sequence.push(n) + // Calculate terms until last term is not 1 + while (n !== 1) { + n = Math.floor(n ** ((n % 2) + 0.5)) + sequence.push(n) + } + return sequence +} + +export { jugglerSequence } diff --git a/Maths/test/JugglerSequence.test.js b/Maths/test/JugglerSequence.test.js new file mode 100644 index 0000000000..392047a95b --- /dev/null +++ b/Maths/test/JugglerSequence.test.js @@ -0,0 +1,21 @@ +import { jugglerSequence } from '../JugglerSequence' + +describe('Testing jugglerSequence function', () => { + it('should return [3, 5, 11, 36, 6, 2, 1 ] if the number is 3', () => { + expect(jugglerSequence(3)).toEqual( + expect.arrayContaining([3, 5, 11, 36, 6, 2, 1]) + ) + }) + + it('should return [9, 27, 140, 11, 36, 6, 2, 1] if the number is 9', () => { + expect(jugglerSequence(9)).toEqual( + expect.arrayContaining([9, 27, 140, 11, 36, 6, 2, 1]) + ) + }) + + it('should return [15, 58, 7, 18, 4, 2, 1] if the number is 15', () => { + expect(jugglerSequence(15)).toEqual( + expect.arrayContaining([15, 58, 7, 18, 4, 2, 1]) + ) + }) +}) From df18ba235163013fe553f8251eadc7f4d7b265c2 Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年8月19日 09:18:55 +0800 Subject: [PATCH 8/8] Create Codecov --- .github/workflows/Codecov | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/Codecov diff --git a/.github/workflows/Codecov b/.github/workflows/Codecov new file mode 100644 index 0000000000..da0117f931 --- /dev/null +++ b/.github/workflows/Codecov @@ -0,0 +1,21 @@ +name: API workflow + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + name: Test python API + steps: + - uses: actions/checkout@v1 + - name: Install requirements + run: pip install -r requirements.txt + - name: Run tests and collect coverage + run: pytest --cov . + - name: Upload coverage reports to Codecov + run: | + # Replace `linux` below with the appropriate OS + # Options are `alpine`, `linux`, `macos`, `windows` + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -t ${CODECOV_TOKEN}

AltStyle によって変換されたページ (->オリジナル) /