Luhn test of credit card numbers: Difference between revisions

add RPL
(Add MACRO-11)
(add RPL)
Line 5,548:
1234567812345678 -> Invalid
1234567812345670 -> Valid
</pre>
 
=={{header|RPL}}==
Card numbers shall be entered as strings to avoid any rounding error when testing long ones.
{{works with|Halcyon Calc|4.2.8}}
{| class="wikitable"
! RPL code
! Comment
|-
|
≪ → card
≪ 0 card SIZE 1 '''FOR''' j
card j DUP SUB →STR
'''IF''' j 2 MOD NOT '''THEN '''
2 * 10 MOD LAST / FLOOR + '''END'''
+ -1 '''STEP'''
10 MOD NOT
≫ ≫ '''‘LUHN?’''' STO
|
''' LUHN?''' ''( "card_number" -- boolean ) ''
sum = 0 ; loop for j=n to 1
digit = card[j]
if even digit
multiply it by 2 and add digits
sum += digit
return not(sum mod 10)
|}
{{in}}
<pre>
≪ { "49927398716" "49927398717" "1234567812345678" "1234567812345670" } → cases
≪ { } 1 cases SIZE FOR j cases j GET JUHN + NEXT ≫ ≫ EVAL
</pre>
{{out}}
<pre>
1: { 1 0 0 1 }
</pre>
 
1,150

edits