Meydan okuma
(Kredi kartı) numaralarını doğrulamak için Luhn Algoritmasını hesaplamak için en kısa programı veya işlevi yazın .
Luhn algoritması açıkladı
RosettaCode'dan , bu zorluğun amaçları için bu algoritma, aşağıdaki gibi örnek girdiyle belirtilir 49927398716
:
Reverse the digits, make an array:
6, 1, 7, 8, 9, 3, 7, 2, 9, 9, 4
Double the numbers in odd indexes:
6, 2, 7, 16, 9, 6, 7, 4, 9, 18, 4
Sum the digits in each number:
6, 2, 7, 7, 9, 6, 7, 4, 9, 9, 4
Sum all of the numbers:
6 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 4 = 70
If the sum modulo 10 is 0, then the number is valid:
70 % 10 = 0 => valid
IO Kuralları
Giriş : Dilinizin seçim / çıkış biçiminde bir dize veya sayı (seçiminiz)
Çıktı : Girdilerin yukarıdaki teste göre geçerli olup olmadığını gösteren sırayla veya yanlış değer .
Notlar / İpuçları
Yanlışlıkla test etmek için kullanıyorsanız, kendi kredi kartınızı veya hesap numaralarınızı göndermemeye çalışın :)
Giriş geçersizse ve belirtilen algoritma ile işlem yapmak imkansızsa (yani çalışmak için çok kısa), bilgisayarımı patlatmak da dahil olmak üzere ne istersen yapabilirsin.
Bununla birlikte , önceki madde işareti, dilinizin, işlemesi için çok büyük olan Numaralarla istediğini yapabileceği anlamına gelmez. Diliniz bir test senaryosunu kullanabiliyorsa, bir dize giriş olarak alın.
Örnekler
Aşağıdaki örnekler bu Python betiği ile doğrulandı ; Eğer birinin yanlış olduğunu ya da bir sorusu olduğunu düşünüyorsanız, sadece ping @cat.
49927398716 True
49927398717 False
1234567812345670 True
1234567812345678 False
79927398710 False
79927398711 False
79927398712 False
79927398713 True
79927398714 False
79927398715 False
79927398716 False
79927398717 False
79927398718 False
79927398719 False
374652346956782346957823694857692364857368475368 True
374652346956782346957823694857692364857387456834 False
8 False **
0 True **
** Python uygulamasına göre, ancak şartnameye katı bir şekilde bağlı kalmaya uygun olmadığı için herhangi bir şey yapabilirsiniz.
Yukarıdakilerden herhangi biri mevcut cevapları geçersiz kılarsa (bunun mümkün olmamasına inandığım halde), bu cevaplar hala geçerlidir. Ancak, geçerli olabilmek için yeni cevapların yukarıdaki şartnameye uyması gerekir.