|
@@ -1,74 +0,0 @@
|
1
|
|
-def toBin(integer):
|
2
|
|
- """
|
3
|
|
- Convert a decimal integer into a binary"
|
4
|
|
- :param integer: the integer to be converted
|
5
|
|
- :type integer int
|
6
|
|
- :return: int
|
7
|
|
- """
|
8
|
|
- return int(str(bin(integer))[2:])
|
9
|
|
-
|
10
|
|
-
|
11
|
|
-def toDec(binVal):
|
12
|
|
- """
|
13
|
|
- Convert a binary value to a decimal value
|
14
|
|
- :param binVal: The bin value to be converted
|
15
|
|
- :type binVal: int, str
|
16
|
|
- :return: int
|
17
|
|
- """
|
18
|
|
- return int(str(binVal), 2)
|
19
|
|
-
|
20
|
|
-
|
21
|
|
-def toBinArray(array):
|
22
|
|
- """
|
23
|
|
- Turn an array of decimal into an array of binary
|
24
|
|
- :param array:
|
25
|
|
- :return:
|
26
|
|
- """
|
27
|
|
- return [toBin(el) for el in array]
|
28
|
|
-
|
29
|
|
-
|
30
|
|
-def computeS(array):
|
31
|
|
- """
|
32
|
|
- Sum all values in an array
|
33
|
|
- :param array: the array to compute on
|
34
|
|
- :type array: list
|
35
|
|
- :return: int
|
36
|
|
- """
|
37
|
|
- return sum(array)
|
38
|
|
-
|
39
|
|
-
|
40
|
|
-def nimSomme(integer):
|
41
|
|
- """Return an array with 0 if element is even, 1 otherwise"""
|
42
|
|
- return [int(el) % 2 for el in str(integer)]
|
43
|
|
-
|
44
|
|
-
|
45
|
|
-def isSafe(array):
|
46
|
|
- """
|
47
|
|
- Return True if value computed from the array is zero, False otherwise
|
48
|
|
- :param array: the array to compute
|
49
|
|
- :type array: list
|
50
|
|
- :return: bool
|
51
|
|
- """
|
52
|
|
- def list2str(array):
|
53
|
|
- a = ""
|
54
|
|
- for el in array:
|
55
|
|
- a += str(el)
|
56
|
|
- return a
|
57
|
|
-
|
58
|
|
- binString = list2str([int(el) % 2 for el in list2str(array)])
|
59
|
|
- return toDec(binString) == 0
|
60
|
|
-
|
61
|
|
-
|
62
|
|
-array = [3, 5, 7]
|
63
|
|
-
|
64
|
|
-binArr = toBinArray(array)
|
65
|
|
-print("Bin Array: ", binArr)
|
66
|
|
-
|
67
|
|
-S = computeS(binArr)
|
68
|
|
-print("S: ", S)
|
69
|
|
-
|
70
|
|
-nimS = nimSomme(S)
|
71
|
|
-print("Somme de NIM: ", nimS)
|
72
|
|
-
|
73
|
|
-safe = isSafe(nimS)
|
74
|
|
-print("Safe: ", safe)
|