"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اليوم / أيام البرمجة: تحدي التحقق من صحة بطاقة الائتمان

اليوم / أيام البرمجة: تحدي التحقق من صحة بطاقة الائتمان

تم النشر بتاريخ 2024-11-05
تصفح:906

Day /  Days of Code: Credit Card Validator Challenge

الأحد، 15 سبتمبر 2024

كان هذا الأسبوع يدور حول تحديات التعليمات البرمجية، والتي كانت رائعة! كان أحد التحديات المثيرة للاهتمام هو تنفيذ أداة التحقق من صحة بطاقة الائتمان باستخدام خوارزمية Luhn، والتي تمنع أخطاء بطاقة الائتمان المكونة من رقم واحد والتحويلات المجاورة مثل 90 > 09. يعد ترميز خوارزمية Luhn أمرًا ممكنًا تمامًا؛ دعونا نتعرف على عملية التنفيذ.

أولاً، دعونا نتوقف لحظة لفهم ماهية البرمجة الوظيفية (FP). بدلاً من وجود وظيفة حتمية حيث تقوم بوضع أرقام بطاقات الائتمان في قائمة الانتظار للاختبار، يمكن أن يكون التحقق من رقم بطاقة الائتمان طريقة تطبقها مباشرة على متغيرات أرقام بطاقة الائتمان. يزيد هذا النهج المعياري من قيمة التعليمات البرمجية الخاصة بك لأنه يمكن استخدامها بطرق أكثر دون إعادة الكتابة. أحد الآثار الجانبية في FP هو أن البيانات تصبح النجمة - وليس الوظائف، الأمر الذي يبدو مبسطًا للغاية.

للبدء، سنستخدم وظيفة السهم بما يتماشى مع نموذج FP. يعد هذا أكثر أهمية في وظائف السطر الواحد، لكنه لا يزال عمليًا.

  • تعيين الرقم الأخير جانبًا: الخطوة الأولى في خوارزمية Luhn هي وضع الرقم الأخير جانبًا في متغير سنسميه lastDigit. يتبع هذا أسلوبًا قياسيًا للوصول إلى عناصر المصفوفة باستخدام طول المصفوفة - 1 نظرًا لأن المصفوفات تبدأ ترقيم العناصر عند 0. توفر JavaScript هذه الميزة بشكل جيد للمصفوفات أصلاً.

  • عكس المصفوفة: تعمل خوارزمية Luhn على أرقام بطاقات الائتمان من اليمين إلى اليسار. لتبسيط الأمور، سنقوم بعكس المصفوفة. توفر JavaScript طريقتين لتبسيط هذه العملية: الشريحة لتحديد العناصر من الأول إلى العنصر الأخير، والعكس لعكس ترتيب العناصر في المصفوفة. سنقوم بتعيين هذا إلى مصفوفة جديدة تسمى allExceptLastReversed.

  • مضاعفة كل عنصر آخر: تتطلب الخطوة التالية تحكمًا أكثر دقة في تكرار عناصر المصفوفة مما توفره الطرق التكرارية في JavaScript، لذلك سنستخدم حلقة for التقليدية. تتضمن هذه الخطوة مضاعفة كل عنصر آخر من عناصر المصفوفة، وإذا كانت القيمة أعلى من 9، فسيتم طرح 9.

  • جمع العناصر والتحقق من الصحة: ​​لقد أوشكنا الآن على الانتهاء. نريد جمع كل عناصر المصفوفة والتحقق من أنها قابلة للقسمة على 10. تحتوي JavaScript على طريقة تكرارية تسمى تقليل والتي تطبق وظيفة، عادة مجموع أو منتج، على كل عنصر في مصفوفة وتجميع النتيجة. سنقوم هنا بجمع عناصر المصفوفة المعكوسة والمقطعة، وإضافة الرقم الأخير، والتحقق مما إذا كان مجموع المعامل 10 هو 0.

توفر جافا سكريبت أيضًا مقارنات منطقية، لتقييمها على أنها صحيحة أو خاطئة، تسمى القيم المنطقية، وهي قيم إرجاع الدالة. جافا سكريبت تجعل البرمجة أكثر براعة.

كان هذا التحدي طريقة رائعة للتعمق أكثر في نماذج البرمجة الوظيفية والحتمية. وسلط الضوء على أهمية كتابة تعليمات برمجية معيارية وقابلة لإعادة الاستخدام. بينما أواصل رحلتي في 100 يوم من البرمجة، أشعر بالحماس لمواجهة المزيد من التحديات وتوسيع فهمي لمفاهيم البرمجة المختلفة. يجلب كل يوم فرصًا جديدة للتعلم والنمو، ولا أستطيع الانتظار لأرى إلى أين ستأخذني هذه الرحلة بعد ذلك.

ترقبوا المزيد من التحديثات والبرمجة السعيدة! ?

إليك الكود الكامل:

const validateCred = (cardNumber) => {
  const lastDigit = cardNumber[cardNumber.length - 1];
  let allExceptLastReversed = cardNumber.slice(0, -1).reverse();
  for (let i = 0; i  9) {
      allExceptLastReversed[i] -= 9; 
    }
  }
  const sum = allExceptLastReversed.reduce((acc, curr) => acc   curr, 0)   lastDigit; 
  // sum all digits
  return (sum % 10 === 0);
};

تم النشر بشكل متقاطع: Dev https://dev.to/jacobsternx وLinkedIn https://www.linkedin.com/in/jacobsternx

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/jacobsternx/day-77-100-days-of-code-credit-card-validator-challenge-93m?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3