Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Mono Captcha by Kurush
FONT = ("--X--XXX-XXX-X-X-XXX--XX-XXX-XXX--XX-XX--",
"-XX----X---X-X-X-X---X-----X-X-X-X-X-X-X-",
"--X---XX--X--XXX-XX--XXX--X--XXX-XXX-X-X-",
"--X--X-----X---X---X-X-X-X---X-X---X-X-X-",
"--X--XXX-XXX---X-XX---XX-X---XXX-XX---XX-")
def checkio(image):
Numbers = extract(image)
Digits = extract (FONT)
transform(Digits)
Res = ""
for Number in Numbers:
for i, Digit in enumerate(Digits, 1):
if (rho(Number, Digit) < 2):
Res = Res + str(i % 10)
break
return int(Res)
def extract(array):
Numbers = []
k = 0
while k < len(array[0]) - 1:
Number = [[array[i][j] for j in range(k + 1, k + 4)] for i in range(5)]
Numbers.append(Number)
k +=4
return Numbers;
def transform(array):
for i, Number in enumerate(array):
for j, row in enumerate(Number):
for k, elem in enumerate(row):
if elem == '-': array[i][j][k] = 0
elif elem == 'X': array[i][j][k] = 1
def rho(array1, array2):
rho = 0
for i, row in enumerate(array1):
for j, elem in enumerate(row):
if (array1[i][j] != array2[i][j]):
rho += 1
return rho
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio([[0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0],
[0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0]]) == 394, "394 clear"
assert checkio([[0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0]]) == 394, "again 394 but with noise"
assert checkio([[0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0]]) == 804, 'additional test'
Feb. 4, 2019