بالنظر إلى عدد، حدّد ما إذا كان صحيحًا وفق صيغة Luhn أم لا.
خوارزمية Luhn هي صيغة تحقق بسيطة تُستخدم للتحقق من مجموعة متنوعة من أرقام الهوية، مثل أرقام بطاقات الائتمان وأرقام التأمين الاجتماعي الكندية.
المهمة هي التحقق مما إذا كانت سلسلة نصية معيّنة صحيحة.
السلاسل النصية التي يبلغ طولها 1 أو أقل ليست صحيحة. المسافات مسموح بها في المدخلات، لكن يجب إزالتها قبل التحقق. جميع المحارف الأخرى غير الرقمية غير مسموح بها.
4539 3195 0343 6467
الخطوة الأولى في خوارزمية Luhn هي مضاعفة كل رقم ثانٍ، بدءًا من اليمين. سنضاعف
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
إذا نتج عن مضاعفة الرقم عدد أكبر من 9، فاطرح 9 من الناتج. هذه نتائج المضاعفة:
8569 6195 0383 3437
ثم اجمع جميع الأرقام:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
إذا كان المجموع قابلًا للقسمة على 10 دون باقٍ، فإن العدد صحيح. هذا العدد صحيح!
8273 1232 7352 0569
ضاعف الأرقام في المواضع الثانية، بدءًا من اليمين
7253 2262 5312 0539
اجمع الأرقام
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 لا يقبل القسمة على 10 دون باقٍ، لذا فإن هذا العدد غير صحيح.
سجّل في Exercism لتتعلّم وتتقن Haskell عبر 107 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.
نستكشف 8 نسخ مختلفة من Luhn، بدءًا من تطبيق Ruby أنيق للغاية، ومرورًا ببعض الأساليب الأمرية والوظيفية، وانتهاءً بنسخة SQLite استغرق فكّها بعض الجهد من Erik و Jeremy!