From 9ba573284ccde687b4c190c0f44032eef846410a Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Thu, 20 Nov 2025 16:20:11 +0100
Subject: [PATCH] Bugfix
---
textbased-programms/luhn.js | 47 +++++++++++++++++++++++++++--------------------
1 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/textbased-programms/luhn.js b/textbased-programms/luhn.js
index 0e5fa80..f5bbe83 100644
--- a/textbased-programms/luhn.js
+++ b/textbased-programms/luhn.js
@@ -5,25 +5,32 @@
import {terminal} from "./dfhi.js";
-window.main = (...argv) => {
- let sumEvent = 0n;
- let sumOdd = 0n;
- let credit = argv[0];
+const checkLuhnNumber = (n) => {
+ let sumEvent = 0n;
+ let sumOdd = 0n;
+ while(n > 0) {
+ sumOdd += (n % 10n); // modulo division base 10 to get the last digit
+ n = n/10n; // integer division base 10 to shift credit number one digit to right
+ let rest = n % 10n; // get the second-last digit
+ let p = rest*2n;
+ sumEvent += (p > 9n) ? (p - 9n) : p;
+ n = n/10n;
+ }
+ return (sumEvent + sumOdd) % 10n;
+}
- let n = BigInt(credit.replace(/[-_\s+]/g, ''));
- while(n > 0) {
- sumOdd += (n % 10n); // modulo division base 10 to get the last digit
- n = n/10n; // integer division base 10 to shift credit number one digit to right
- let rest = n % 10n; // get the second-last digit
- let p = rest*2n;
- sumEvent += (p > 9n) ? (p - 9n) : p;
- n = n/10n;
- }
- console.log({sumOdd, sumEvent});
- const sum =(sumEvent + sumOdd) % 10n;
- if (sum === 0n) {
- terminal.printl(`${credit} may be a valid credit number`);
- } else {
- terminal.printl(`${credit} is not a valid credit number`);
- }
+window.main = (...argv) => {
+ try {
+ let credit = argv[0];
+ let n = BigInt(credit.replace(/[-_\s+]/g, ''));
+ const sum = checkLuhnNumber(n);
+ if (sum === 0n) {
+ terminal.printl(`${credit} may be a valid credit number`);
+ } else {
+ terminal.printl(`${credit} is not a valid credit number`);
+ }
+ }catch (e) {
+ terminal.printl("Die eingegebene Zeichenkette ist keine Credit Nummer");
+ terminal.printl("Erlaubten Zeichen sind Ziffer, Leerzeichen und Bindenstrich");
+ }
};
--
Gitblit v1.10.0