Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. def splitNum(param)
  2. stringNum = param.to_s.split('')
  3. addToArray(stringNum)
  4. end
  5.  
  6. def addToArray(param)
  7. array = []
  8. param.each do |x|
  9. array.push(x.to_i)
  10. end
  11. findLength(array)
  12. end
  13.  
  14. def findLength(param)
  15. if param.length == 16
  16. puts "Visa, Mastercard, and Discover use 16 digit cards."
  17. everySecondDigit(param)
  18. elsif param.length < 16
  19. if param.length == 13
  20. puts "Visa uses 14 digit credit cards"
  21. everySecondDigit(param)
  22. elsif param.length == 15
  23. puts "American Express uses 15 digit credit cards"
  24. everySecondDigit(param)
  25. else
  26. puts "Invalid: Too many digits in Credit Card."
  27. return false
  28. end
  29. elsif param.length > 16
  30. puts "Invalid: Too many digits in Credit Card."
  31. return false
  32. end
  33. end
  34.  
  35. def everySecondDigit(param)
  36. newArray = []
  37. param.reverse.each_with_index do |x,index|
  38. if index % 2 == 1
  39. x = x * 2
  40. if x >= 10
  41. x = x - 9
  42. newArray.push(x)
  43. else
  44. newArray.push(x)
  45. end
  46. else
  47. newArray.push(x)
  48. end
  49. end
  50. multiply(newArray)
  51. end
  52.  
  53. def multiply(param)
  54. arraySum = param.reverse.sum
  55. p arraySum
  56. if arraySum % 10 == 0
  57. puts "Valid Number!"
  58. return true
  59. else
  60. puts "Invalid Number!"
  61. return false
  62. end
  63. end
  64.  
  65. a = 4194560385008504
  66.  
  67. splitNum(a)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement