โจทย์
กำหนดให้มีกลุ่มของตัวเลขของบัตรเครดิตออกเป็น 3 กลุ่ม ตัวเลขทุกกลุ่มถูกเก็บอยู่ในรูปของ array
- valid = กลุ่มหมายเลขบัตรเครดิตที่ถูกต้อง
- invalid = กลุ่มหมายเลขบัครเครดิตที่ไม่ถูกต้อง
- mystery = กลุ่มที่ไม่รู้ว่าถูกต้องหรือไม่
batch เป็น array ที่เก็บ array ของตัวเลขบัตรเครดิตทั้งหมด

กำหนดให้บริษัทที่ออกบัตรใช้ตัวเลขตัวแรกบนบัตรเครดิตต่างกัน
ตัวเลขตัวแรกบนบัตร | บริษัทผู้ออกบัตร |
3 | Amex (American Express) |
4 | Visa |
5 | MasterCard |
6 | Discover |
Algorithm ที่ใช้
ใช้ Luhn Algorithm ในการตรวจสอบความถูกต้องของตัวเลขบนบัตร
- เริ่มจากตัวเลขขวามือสุด
- คูณตัวเลขด้วย 2 แบบตัวเว้นตัว จากขวามือมาซ้ายมือ (ตัวเลขขวาสุดไม่ต้องคูณ เริ่มคูณที่ตัวถัดมา)
- ผลคูณมีค่ามากกว่า 9 ให้เอา 9 ลบออก
- เอาตัวเลขที่ได้ทุกตัวมาบวกกัน
- เอาผลบวกมาหารด้วย 10 ถ้าไม่เหลือเศษ ตัวนี้เป็นกลุ่มตัวเลขบัตรเครดิตถูกต้อง
เป้าหมายของโปรแกรม
เพื่อแสดงชื่อบริษัทที่ออกบัตรที่มีหมายเลขบัตรที่ไม่ถูกต้อง แสดงชื่อบริษัทเพียง 1 ครั้งเท่านั้น แม้ว่าบริษัทนั้นจะออกบัตรหมายเลขไม่ถูกต้องมากกว่า 1 ใบก็ตาม
สร้าง function สำหรับ Luhn Algorithm

- กำหนด function ให้มี parameter 1 อัน รับข้อมูล array ของหมายเลขบัตรแต่ละกลุ่ม
- กำหนดตัวแปร sum เพื่อบวกค่าตัวเลขที่ได้จากการคำนวณ
- ใช้ for loop เพื่อเช็คตำแหน่ง index ของสมาชิกใน array แต่ละตัวจากขวาไปซ้าย
- กำหนดตัวแปร arrValue เพื่อเก็บค่าสมาชิกของ index แต่ละตัว
- ใช้ if conditional statement เพื่อหาตำแหน่ง index ที่เป็นเลขคี่ จากนั้นคูณเลขคี่ด้วย 2
- ใช้ if statement เพื่อลบผลคูณออกด้วย 9 หากผลคูณมีค่ามากกว่า 9
- บวกค่าที่ได้ในค่าของตัวแปร sum
- return ค่าของตัวแปร sum โดยหารค่าของตัวแปร sum ด้วย 10 กำหนดให้เศษที่ได้เป็น 0
- แสดงผลเป็น true (ผลหารเป็น 0) หรือ false (ผลหารไม่เป็น 0)
สร้าง function หาหมายเลขบัตรที่ไม่ถูกต้อง

- กำหนด function ให้มี parameter 1 อัน รับข้อมูล array ของหมายเลขบัตรแต่ละกลุ่ม
- กำหนด array ว่าง
- ใช้ for loop เช็ค array ใน parameter ทีละ array
- ใช้ function แรกใน if conditional statement เพื่อหาค่า boolean ของ array
- หากค่า boolean เป็น false ใส่ array นั้นลงใน array ว่างที่สร้างไว้
- return array ว่าง
- แสดงผลกลุ่มของตัวเลขบัตรเครดิตที่ไม่ถูกต้องทีละกลุ่ม
สร้าง function หาชื่อบริษัทที่ออกบัตรที่มีหมายเลขไม่ถูกต้อง

- กำหนด function ให้มี parameter 1 อัน รับข้อมูล array ของหมายเลขบัตรที่มีหมายเลขที่ไม่ถูกต้อง
- สร้าง array ว่าง เพื่อเก็บรายการชื่อบริษัทที่ได้จากการคำนวณ
- ใช้ for loop วนเช็ค array ใน parameter ทีละ array
- ใช้ switch statement เช็คตำแหน่ง index ของแต่ละ array ใน bracket notation [ ] แรก และ เช็คตำแหน่งแรกของสมาชิกใน array ด้วย bracket notation อันทีสอง ให้ค่า index เป็น 0
- กำหนด case เป็นหมายเลขบัตรตัวแรก
- ใช้ if conditional statement เพื่อเช็คว่าใน array ที่สร้างไว้เก็บชื่อบริษัทไม่มีชื่อบริษัทที่ต้องการบันทึกครั้งนี้อยู่ (ตามเป้าหมายของโปรแกรมที่ต้องการแสดงชื่อบริษัทเพียงครั้งเดียวเท่านั้น)
- เพิ่มชื่อบริษัทโดยใช้ .push( ) method หากตัวเลขตัวแรกตรงกับ case ที่กำหนด
- return array ของชื่อบริษัทที่บันทึกได้