Last active
December 10, 2015 11:09
-
-
Save DivinityArcane/4425718 to your computer and use it in GitHub Desktop.
Because why not.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_hex = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, | |
'6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, | |
'C':12, 'D':13, 'E':14, 'F':15} | |
def bit(n1, n2): | |
if str(n1).upper() not in _hex: | |
raise ValueError('Invalid n1') | |
elif str(n2).upper() not in _hex: | |
raise ValueError('Invalid n2') | |
A = _hex[str(n1).upper()] | |
B = _hex[str(n2).upper()] | |
return ((16 * A) % 241) + (1 * B) % 16 | |
def adder(A, B, C = 0): | |
F1 = bit(A[0], A[1]) | |
F2 = bit(B[0], B[1]) | |
return ((F1 + F2) % 256) + C | |
def _16bit_unsigned(b1, b2): | |
if not isinstance(b1, list): | |
raise ValueError('Invalid b1') | |
elif not isinstance(b2, list): | |
raise ValueError('Invalid b2') | |
A = bit(b1[0], b1[1]) + 1 | |
B = bit(b2[0], b2[1]) + 1 | |
C = (A * B) - 1 | |
return C % (256 ** 2) | |
def _32bit_unsigned(b1, b2, b3, b4): | |
if not isinstance(b1, list): | |
raise ValueError('Invalid b1') | |
elif not isinstance(b2, list): | |
raise ValueError('Invalid b2') | |
elif not isinstance(b3, list): | |
raise ValueError('Invalid b3') | |
elif not isinstance(b4, list): | |
raise ValueError('Invalid b4') | |
A = bit(b1[0], b1[1]) + 1 | |
B = bit(b2[0], b2[1]) + 1 | |
C = bit(b3[0], b3[1]) + 1 | |
D = bit(b4[0], b4[1]) + 1 | |
E = (A * B * C * D) - 1 | |
return E % (256 ** 4) | |
def _64bit_unsigned(b1, b2, b3, b4, b5, b6, b7, b8): | |
if not isinstance(b1, list): | |
raise ValueError('Invalid b1') | |
elif not isinstance(b2, list): | |
raise ValueError('Invalid b2') | |
elif not isinstance(b3, list): | |
raise ValueError('Invalid b3') | |
elif not isinstance(b4, list): | |
raise ValueError('Invalid b4') | |
elif not isinstance(b5, list): | |
raise ValueError('Invalid b5') | |
elif not isinstance(b6, list): | |
raise ValueError('Invalid b6') | |
elif not isinstance(b7, list): | |
raise ValueError('Invalid b7') | |
elif not isinstance(b8, list): | |
raise ValueError('Invalid b8') | |
A = bit(b1[0], b1[1]) + 1 | |
B = bit(b2[0], b2[1]) + 1 | |
C = bit(b3[0], b3[1]) + 1 | |
D = bit(b4[0], b4[1]) + 1 | |
E = bit(b5[0], b5[1]) + 1 | |
F = bit(b6[0], b6[1]) + 1 | |
G = bit(b7[0], b7[1]) + 1 | |
H = bit(b8[0], b8[1]) + 1 | |
I = (A * B * C * D * E * F * G * H) - 1 | |
return I % (256 ** 8) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment