Luhn

Luhn

متوسط

التعليمات

بمعطى عدد، حدّد ما إذا كان صحيحًا وفق صيغة Luhn أم لا.

خوارزمية Luhn هي صيغة تحقق بسيطة تُستخدم للتحقق من صحة أنواع مختلفة من أرقام التعريف، مثل أرقام بطاقات الائتمان وأرقام التأمين الاجتماعي الكندية.

المهمة هي التحقق مما إذا كانت سلسلة نصية معيّنة صحيحة.

التحقق من عدد

السلاسل النصية التي يبلغ طولها 1 أو أقل ليست صحيحة. المسافات مسموح بها في المدخل، ولكن يجب إزالتها قبل التحقق. جميع المحارف الأخرى غير الرقمية غير مسموح بها.

مثال 1: رقم بطاقة ائتمان صحيح

4539 3195 0343 6467

تتمثل الخطوة الأولى في خوارزمية Luhn في مضاعفة كل رقم ثانٍ، بدءًا من اليمين. سنضاعف

4_3_ 3_9_ 0_4_ 6_6_

إذا نتج عن مضاعفة الرقم عدد أكبر من 9، فاطرح 9 من الناتج. نتائج المضاعفة لدينا:

8569 6195 0383 3437

ثم اجمع كل الأرقام:

8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80

إذا كان المجموع يقبل القسمة على 10 بدون باقٍ، فإن العدد صحيح. هذا العدد صحيح!

مثال 2: رقم بطاقة ائتمان غير صحيح

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، لذا هذا العدد غير صحيح.

ملاحظة

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

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Pharo Exercism

مستعد لبدء Luhn؟

سجّل في Exercism لتتعلّم وتتقن Pharo عبر 50 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

تعمّق في Luhn!

نستكشف 8 نسخ مختلفة من Luhn، بدءًا من تطبيق Ruby أنيق للغاية، ومرورًا ببعض الأساليب الأمرية والوظيفية، وانتهاءً بنسخة SQLite استغرق فكّها بعض الجهد من Erik و Jeremy!