Came across an interesting, albeit easy-rated problem on /r/dailyprogrammer.

Having done something similar on codingame before, I decided to overcomplicate the solution and scramble my brains in the process, for a challenge.

I had a quick glance at the highest rated solution on the reddit page and it was in inspiration when writing in Python but this is not a direct translation.

Here's the result:

Runs with both python2 and python3, and is also PEP8 compliant. For bonus points!

Figuring out how it works is left as an exercise for the reader. Let me know if you need help.

Having done something similar on codingame before, I decided to overcomplicate the solution and scramble my brains in the process, for a challenge.

I had a quick glance at the highest rated solution on the reddit page and it was in inspiration when writing in Python but this is not a direct translation.

Here's the result:

from __future__ import print_function p, q = 0x6f095e5b39, 0x7377497f7b def g(num): return ((p if num < 5 else q) % (16 ** (10 - (num % 5) * 2 or 2))) // \ (16 ** ((10 - (num % 5) * 2 or 2) - 2)) def r(number): b, m = [2 ** x for x in range(6, -1, -1)], [g(int(x)) for x in number] r = ''.join(' _ ' if y else ' ' for y in (b[0] & x for x in m)) print(r, '\n' + '\n'.join(''.join([''.join( (z[1] if z[0] else ' ' for z in x)) for x in (zip([b[3 * i + j] & x for j in range(1, 4)], '|_|') for x in m) ]) for i in range(2)) + '\n') r("0123456789")

Runs with both python2 and python3, and is also PEP8 compliant. For bonus points!

Figuring out how it works is left as an exercise for the reader. Let me know if you need help.