الگوریتم لان: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Rezabot (بحث | مشارکت‌ها)
جز ربات :جایگزینی پیوند قرمز با مترادف فارسی PYTHON (PROGRAMMING LANGUAGE) > پایتون (زبان برنامه‌نویسی)
بدون خلاصۀ ویرایش
خط ۱۷:
{| class="wikitable" style="text-align:center"
! Account number
| style="width:1.5em" | 7۷
| style="width:1.5em" | 9۹
| style="width:1.5em" | 9۹
| style="width:1.5em" | 2۲
| style="width:1.5em" | 7۷
| style="width:1.5em" | 3۳
| style="width:1.5em" | 9۹
| style="width:1.5em" | 8۸
| style="width:1.5em" | 7۷
| style="width:1.5em" | 1۱
| style="width:1.5em" | x
|-
! Double every other
| 7۷
| style="background: #FFA;" | 18۱۸
| 9۹
| style="background: #FFA;" | 4۴
| 7۷
| style="background: #FFA;" | 6۶
| 9۹
| style="background: #FFA;" | 16۱۶
| 7۷
| style="background: #FFA;" | 2۲
| x
|-
! Sum of digits
|7۷
|9۹
|9۹
|4۴
|7۷
|6۶
|9۹
|7۷
|7۷
|2۲
|=6۶'''7۷'''
|}
{{پایان چپ‌چین}}
 
رقم تطبيقتطبیق (x) بوسيلهبوسیله يی محاسبه يی ضرب جمع ارقام در 9۹ در پيمانهپیمانه 10۱۰ بدست مي‌می‌ آيدآید. به بيانبیان Layman:
 
#مجموع ارقام 67۶۷ را محاسبه كنکن(67۶۷).
#در 9۹ ضرب كنکن (603۶۰۳).
#رقم آخر را بگيربگیر(3۳).
#نتيجهنتیجه رقم تطبيقتطبیق ميمی باشد.
 
روش جايگزينجایگزین:‌ رقم تطبيقتطبیق بوسيلهبوسیله يی محاسبه تفريقتفریق رقم اول مجموع ارقام از 10۱۰ بدست ميمی آيدآید.
#مجموع ارقام 67۶۷ را محاسبه كنکن(67۶۷).
#رقم يكانیکان آن را در نظر بگيربگیر(7۷).
#رقم يكانیکان را از 10۱۰ كمکم كنکن.
#نتيجهنتیجه 3۳ ميمی شود كهکه رقم تطبيقتطبیق است.
 
همه يی ايناین اعداد 79927398710۷۹۹۲۷۳۹۸۷۱۰, 79927398711۷۹۹۲۷۳۹۸۷۱۱, 79927398712۷۹۹۲۷۳۹۸۷۱۲, 79927398713۷۹۹۲۷۳۹۸۷۱۳, 79927398714۷۹۹۲۷۳۹۸۷۱۴, 79927398715۷۹۹۲۷۳۹۸۷۱۵, 79927398716۷۹۹۲۷۳۹۸۷۱۶, 79927398717۷۹۹۲۷۳۹۸۷۱۷, 79927398718۷۹۹۲۷۳۹۸۷۱۸, 79927398719۷۹۹۲۷۳۹۸۷۱۹ به صورت زيرزیر درستيدرستی يابيیابی ميمی شوند.
#همه ارقام را يكيیکی در ميانمیان از سمت راست دو برابر كنکن: (1×2) = 2, (8×2) = 16, (3×2) = 6, (2×2) = 4, (9×2) = 18۱۸
#مجموع هميهمی ارقام را محاسبه كنکن (ارقام داخل پرانتز جواب ضرب هايهای مرحله 1۱ هستند): + x(رقم تطبيقتطبیق) + (2) + 7 + (1+6) + 9 + (6) + 7 + (4) + 9 + (1+8) + 7 = x + 67.
#اگر مجموع مضربيمضربی از 10۱۰ بود،‌ شماره حساب احتمالا معتبر ميمی باشد. 3۳ تنها رقم معتبر است كهکه مجموع 70۷۰ را توليدتولید ميمی كندکند كهکه مضربيمضربی از 10۱۰ ميمی باشد.
#بنابراينبنابراین همه شماره حساب ها نا معتبر هستند بجز 79927398713۷۹۹۲۷۳۹۸۷۱۳ كهکه دارايدارای رقم تطبيقتطبیق درست ميمی باشد.
 
==پيادهپیاده سازيسازی درستيدرستی يابيیابی رقم تطبيقتطبیق==
<!--
Do not add more code to this article. The CS MOS discourages multiple code samples, as they are rarely of encyclopedic value.
-->
در [[پایتون (زبان برنامه‌نویسی)|پايتونپایتون]]:
<source lang="python">
def is_luhn_valid(cc):
num = map(int, str(cc))
return sum(num[::-2] + [sum(divmod(d * 2, 10)) for d in num[-2::-2]]) % 10 == 0۰
</source>
 
==محاسبه رقم تطبيقتطبیق==
پيادهپیاده سازيسازی بالا درستيدرستی يكیک شماره وروديورودی را با يكیک شماره تطبيقتطبیق چكچک ميمی كندکند. برايبرای محاسبه رقم تطبيقتطبیق تغييرتغییر كوچكيکوچکی در پيادهپیاده سازيسازی نيازنیاز است:
#سوييجسوییج كردنکردن بينبین ضرب فرد و زوج.
#اگر مجموع به پيمانهپیمانه 10۱۰ صفر شد آنگاه رقم تطبيقتطبیق صفر است.
#در غيرغیر ايناین صورت رقم تطبيقتطبیق برابر رقم اول مجموع - 10۱۰ ميمی باشد.
در [[پایتون (زبان برنامه‌نویسی)|پايتونپایتون]]:
 
<source lang="python">
خط ۱۰۱:
</source>
 
===پيادهپیاده سازيسازی هايهای ديگردیگر===
{{چپ‌چین}}
*[http://sites.google.com/site/abapexamples/javascript/luhn-validation Luhn implementations in Javascript]
خط ۱۰۹:
* Ruby: [https://gist.github.com/1182499 Luhn validation], [https://gist.github.com/1409815 Luhn generation]
{{پایان چپ‌چین}}
===همچنينهمچنین نگاه كنيدکنید===
 
{{چپ‌چین}}
*[http://en.wikipedia.org/w/index.php?title=Bank_card_number&oldid=467587726 شماره كارتکارت بانكيبانکی]
*[http://www.brainjar.com/js/validation/default2.asp Luhn checking bank card numbers]
 
خط ۱۲۰:
{{چپ‌چین}}
<references/>
*{{US patent|2950048۲۹۵۰۰۴۸}}, ''Computer for Verifying Numbers'', Hans P. Luhn, August 23, 1960.
 
{{پایان چپ‌چین}}