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