#!/usr/bin/python3
import os
#charmap = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4,
# 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
#multiplier = [9, 8, 7, 6, 5, 4, 3, 2, 1]
charmap = {'A': 0, 'D': 1, 'G': 2, 'J': 3, 'C': 4,
'F': 5, 'I': 6, 'B': 7, 'E': 8, 'H': 9}
multiplier = [3, 6, 9, 2, 5, 8, 1, 4, 7]
passed = 0
failed = 0
def verify(i):
global passed, failed
n = i[0:9]
s = i[9]
sum = 0
for c in range(0, 9):
sum += int(n[c])*multiplier[c]
if sum%10 == charmap[s]:
result = '\x1B[1;32mPASSED\x1B[m'
passed+=1
else:
result = '\x1B[1;31mFAILED\x1B[m'
failed+=1
print("{}{} : {} => {} ... {}".format(n, s, sum, charmap[s], result))
if __name__ == '__main__':
with open("charno.txt", "r") as fin:
text = fin.read()
x = text.split()
for i in x:
verify(i)
print("{} passed.\n{} failed.".format(passed, failed))
# End of verify.py
IyEvdXNyL2Jpbi9weXRob24zCmltcG9ydCBvcwoKI2NoYXJtYXAgPSAgeydBJzogMCwgJ0InOiAxLCAnQyc6IDIsICdEJzogMywgJ0UnOiA0LAojICAgICAgICAgICAgICAgICAgICAgICAnRic6IDUsICdHJzogNiwgJ0gnOiA3LCAnSSc6IDgsICdKJzogOX0KI211bHRpcGxpZXIgPSBbOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMV0KCmNoYXJtYXAgPSAgeydBJzogMCwgJ0QnOiAxLCAnRyc6IDIsICdKJzogMywgJ0MnOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAnRic6IDUsICdJJzogNiwgJ0InOiA3LCAnRSc6IDgsICdIJzogOX0KbXVsdGlwbGllciA9IFszLCA2LCA5LCAyLCA1LCA4LCAxLCA0LCA3XQoKcGFzc2VkID0gMApmYWlsZWQgPSAwCgpkZWYgdmVyaWZ5KGkpOgogICAgICAgIGdsb2JhbCBwYXNzZWQsIGZhaWxlZAoKICAgICAgICBuID0gaVswOjldCiAgICAgICAgcyA9IGlbOV0KCiAgICAgICAgc3VtID0gMAogICAgICAgIGZvciBjIGluIHJhbmdlKDAsIDkpOgogICAgICAgICAgICAgICAgc3VtICs9IGludChuW2NdKSptdWx0aXBsaWVyW2NdCgogICAgICAgIGlmIHN1bSUxMCA9PSBjaGFybWFwW3NdOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1x4MUJbMTszMm1QQVNTRURceDFCW20nCiAgICAgICAgICAgICAgICBwYXNzZWQrPTEKICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1x4MUJbMTszMW1GQUlMRURceDFCW20nCiAgICAgICAgICAgICAgICBmYWlsZWQrPTEKCiAgICAgICAgcHJpbnQoInt9e30gOiB7fSA9PiB7fSAuLi4ge30iLmZvcm1hdChuLCBzLCBzdW0sIGNoYXJtYXBbc10sIHJlc3VsdCkpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIHdpdGggb3BlbigiY2hhcm5vLnR4dCIsICJyIikgYXMgZmluOgogICAgICAgICAgICAgICAgdGV4dCA9IGZpbi5yZWFkKCkKCiAgICAgICAgeCA9IHRleHQuc3BsaXQoKQoKICAgICAgICBmb3IgaSBpbiB4OgogICAgICAgICAgICAgICAgdmVyaWZ5KGkpCgogICAgICAgIHByaW50KCJ7fSBwYXNzZWQuXG57fSBmYWlsZWQuIi5mb3JtYXQocGFzc2VkLCBmYWlsZWQpKQoKIyBFbmQgb2YgdmVyaWZ5LnB5