74 lines
1.5 KiB
Python
74 lines
1.5 KiB
Python
def toBin(integer):
|
|
"""
|
|
Convert a decimal integer into a binary"
|
|
:param integer: the integer to be converted
|
|
:type integer int
|
|
:return: int
|
|
"""
|
|
return int(str(bin(integer))[2:])
|
|
|
|
|
|
def toDec(binVal):
|
|
"""
|
|
Convert a binary value to a decimal value
|
|
:param binVal: The bin value to be converted
|
|
:type binVal: int, str
|
|
:return: int
|
|
"""
|
|
return int(str(binVal), 2)
|
|
|
|
|
|
def toBinArray(array):
|
|
"""
|
|
Turn an array of decimal into an array of binary
|
|
:param array:
|
|
:return:
|
|
"""
|
|
return [toBin(el) for el in array]
|
|
|
|
|
|
def computeS(array):
|
|
"""
|
|
Sum all values in an array
|
|
:param array: the array to compute on
|
|
:type array: list
|
|
:return: int
|
|
"""
|
|
return sum(array)
|
|
|
|
|
|
def nimSomme(integer):
|
|
"""Return an array with 0 if element is even, 1 otherwise"""
|
|
return [int(el) % 2 for el in str(integer)]
|
|
|
|
|
|
def isSafe(array):
|
|
"""
|
|
Return True if value computed from the array is zero, False otherwise
|
|
:param array: the array to compute
|
|
:type array: list
|
|
:return: bool
|
|
"""
|
|
def list2str(array):
|
|
a = ""
|
|
for el in array:
|
|
a += str(el)
|
|
return a
|
|
|
|
binString = list2str([int(el) % 2 for el in list2str(array)])
|
|
return toDec(binString) == 0
|
|
|
|
|
|
array = [3, 5, 7]
|
|
|
|
binArr = toBinArray(array)
|
|
print("Bin Array: ", binArr)
|
|
|
|
S = computeS(binArr)
|
|
print("S: ", S)
|
|
|
|
nimS = nimSomme(S)
|
|
print("Somme de NIM: ", nimS)
|
|
|
|
safe = isSafe(nimS)
|
|
print("Safe: ", safe)
|