-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctions.py
More file actions
160 lines (138 loc) · 4.3 KB
/
Copy pathfunctions.py
File metadata and controls
160 lines (138 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
from math import sqrt, factorial
def find_N_Primes(N: int):
primes = []
number = 2
while len(primes) != N:
nbr_divisors = 0
for divisor in range(1, number + 1):
if number % divisor == 0:
nbr_divisors += 1
if nbr_divisors > 2:
break
if nbr_divisors == 2:
primes.append(number)
number += 1
return primes
def find_N_Evens(N: int):
return [i * 2 for i in range(N)]
def find_N_Odds(N: int):
return [i * 2 + 1 for i in range(N)]
def find_N_Squares(N: int):
return [i * i for i in range(N)]
def find_N_Cubes(N: int):
return [i * i * i for i in range(N)]
def find_N_Powers_Of_X(N: int, X: int):
return [X ** i for i in range(N)]
def find_N_Values_Fibonacci(N: int):
fibonacci = [1, 1]
for i in range(N):
fibonacci.append(fibonacci[i] + fibonacci[i + 1])
return fibonacci
def find_N_Lazy_Cuttings(N: int):
cuttings = []
for i in range(N):
cuttings.append((i*i + i + 2) // 2)
return cuttings
def find_N_Catalan(N: int):
catalan = []
for i in range(N):
catalan.append(factorial(2 * i) // (factorial(i + 1) * factorial(i)))
return catalan
def find_N_Conway(N: int):
number = "1"
conway = [1]
for i in range(N):
new_number = ""
suite = 0
current_int = number[0]
for j in range(len(number)):
if current_int == number[j]:
suite += 1
else:
new_number += str(suite) + current_int
current_int = number[j]
suite = 1
new_number += str(suite) + current_int
conway.append(int(new_number))
number = new_number
return conway
def _print_Line_Spaces(line, spaces, offset):
print(" " * (spaces // 2) * offset , end="")
for i in line:
print(f"{i :<{spaces}}", end="")
print("")
def _simple_Print_Line(line):
for i in line:
print(i, end=" ")
print("")
def _raw_Print_Line(line):
for i in line:
print(i, end="")
print("")
def _print_Offset(offset):
for i in range(offset):
print(" ", end="")
def _print_Line_2_Categories(line: list, condition, compared: int):
for i in line:
if condition(i, compared):
print("⬜", end="")
else:
print("⬛", end="")
print("")
def print_Triangle_Spaces(ligneDepart):
ligneA = ligneDepart.copy()
spaces = len(str(max(ligneA))) + 1
offset = 0
_print_Line_Spaces(ligneA, spaces, offset)
for i in range(len(ligneA) - 1):
offset += 1
ligneB = []
for i in range(len(ligneA) - 1):
ligneB.append(abs(ligneA[i] - ligneA[i+1]))
_print_Line_Spaces(ligneB, spaces, offset)
ligneA = ligneB
def simple_Print_Triangle(ligneDepart):
ligneA = ligneDepart.copy()
_simple_Print_Line(ligneA)
for i in range(len(ligneA) - 1):
ligneB = []
for j in range(len(ligneA) - 1):
ligneB.append(abs(ligneA[j] - ligneA[j+1]))
_simple_Print_Line(ligneB)
ligneA = ligneB
def raw_Print_Triangle(ligneDepart):
ligneA = ligneDepart.copy()
_raw_Print_Line(ligneA)
for i in range(len(ligneA) - 1):
ligneB = []
for j in range(len(ligneA) - 1):
ligneB.append(abs(ligneA[j] - ligneA[j+1]))
_raw_Print_Line(ligneB)
ligneA = ligneB
def print_Triangle_2_Categories(ligneDepart, condition1, condition2):
ligneA = ligneDepart.copy()
for i in range(len(ligneA) - 1):
ligneB = []
for j in range(len(ligneA) - 1):
ligneB.append(abs(ligneA[j] - ligneA[j+1]))
_print_Offset(i)
_print_Line_2_Categories(ligneB, condition1, condition2)
ligneA = ligneB
def first_Of_Lines_Is_1(ligneDepart):
ligneA = ligneDepart
for i in range(len(ligneA) - 1):
ligneB = []
for j in range(len(ligneA) - 1):
ligneB.append(abs(ligneA[j] - ligneA[j+1]))
if ligneB[0] != 1:
return False
ligneA = ligneB
return True
def test_Remove_Values(ligneDepart):
remove_Not_1 = []
for valeur in ligneDepart:
ligne = ligneDepart.copy()
ligne.remove(valeur)
if not(first_Of_Lines_Is_1(ligne)):
remove_Not_1.append(valeur)
return remove_Not_1