Content-Length: 2226 | pFad | http://github.com/TheAlgorithms/JavaScript/pull/1225.patch
thub.com
From 1247da8abcfeffbae0ae41a0cfb1efcb7302dc76 Mon Sep 17 00:00:00 2001
From: Matheus Muriel
Date: Sun, 23 Oct 2022 19:52:32 -0300
Subject: [PATCH] Project Euler 024
---
Project-Euler/Problem024.js | 32 +++++++++++++++++++++++++++
Project-Euler/test/Problem024.test.js | 8 +++++++
2 files changed, 40 insertions(+)
create mode 100644 Project-Euler/Problem024.js
create mode 100644 Project-Euler/test/Problem024.test.js
diff --git a/Project-Euler/Problem024.js b/Project-Euler/Problem024.js
new file mode 100644
index 0000000000..2cf7f8185e
--- /dev/null
+++ b/Project-Euler/Problem024.js
@@ -0,0 +1,32 @@
+/**
+ * Problem 24 - Lexicographic Permutations
+ *
+ * @see {@link https://projecteuler.net/problem=24}
+ *
+ * A permutation is an ordered arrangement of objects. For example, 3124 is one
+ * possible permutation of the digits 1, 2, 3 and 4. If all of the permutations
+ * are listed numerically or alphabetically, we call it lexicographic order.
+ * The lexicographic permutations of 0, 1 and 2 are:
+ *
+ * 012 021 102 120 201 210
+ *
+ * What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
+*/
+
+export function lexicographicPermutations () {
+ const factorial = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
+ const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ let millionthCounter = 999999
+ let result = ''
+
+ for (let i = digits.length - 1; i >= 0; i--) {
+ const permutation = (millionthCounter / factorial[i]) | 0
+
+ millionthCounter %= factorial[i]
+ result += digits[permutation]
+
+ digits.splice(permutation, 1)
+ }
+
+ return result
+}
diff --git a/Project-Euler/test/Problem024.test.js b/Project-Euler/test/Problem024.test.js
new file mode 100644
index 0000000000..469b2895e4
--- /dev/null
+++ b/Project-Euler/test/Problem024.test.js
@@ -0,0 +1,8 @@
+import { lexicographicPermutations } from '../Problem024.js'
+
+describe('checking Lexicographic Permutations', () => {
+ // Project Euler Lexicographic Permutations
+ test('Test Lexicographic Permutations', () => {
+ expect(lexicographicPermutations()).toBe('2783915460')
+ })
+})
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/TheAlgorithms/JavaScript/pull/1225.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy