Compare commits
4 Commits
Author | SHA1 | Date |
---|---|---|
|
c5c083788a | |
|
a261c7bb3e | |
|
cbd86dd50f | |
|
bbcdfe259c |
|
@ -56,4 +56,5 @@ obj/
|
||||||
bin/
|
bin/
|
||||||
output.csv
|
output.csv
|
||||||
*.log
|
*.log
|
||||||
output-S3.csv
|
output-S3.csv
|
||||||
|
output-MPI.csv
|
|
@ -0,0 +1,72 @@
|
||||||
|
Bouverot
|
||||||
|
MATH
|
||||||
|
18 16 9 2024
|
||||||
|
8 18 9 2024
|
||||||
|
+
|
||||||
|
Sabban
|
||||||
|
MATH
|
||||||
|
14 18 9 2024
|
||||||
|
+
|
||||||
|
Giral-Martinez
|
||||||
|
MATH
|
||||||
|
17 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
+
|
||||||
|
Pelletier
|
||||||
|
MATH
|
||||||
|
17 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
+
|
||||||
|
Riveline
|
||||||
|
MATH
|
||||||
|
17 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
+
|
||||||
|
Dailly
|
||||||
|
MATH
|
||||||
|
17 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
+
|
||||||
|
Thiébaud
|
||||||
|
PHYSICS
|
||||||
|
16 20 9 2024
|
||||||
|
+
|
||||||
|
Pignard
|
||||||
|
PHYSICS
|
||||||
|
17 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
+
|
||||||
|
Creuset
|
||||||
|
PHYSICS
|
||||||
|
14 19 9 2024
|
||||||
|
15 19 9 2024
|
||||||
|
+
|
||||||
|
Chevalier
|
||||||
|
PHYSICS
|
||||||
|
17 17 9 2024
|
||||||
|
+
|
||||||
|
Robin
|
||||||
|
PHYSICS
|
||||||
|
17 18 9 2024
|
||||||
|
+
|
||||||
|
Montarou
|
||||||
|
ENGLISH
|
||||||
|
16 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
+
|
||||||
|
Graff
|
||||||
|
ENGLISH
|
||||||
|
16 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
+
|
||||||
|
LeLouarne
|
||||||
|
ENGLISH
|
||||||
|
18 18 9 2024
|
||||||
|
+
|
||||||
|
Halfon
|
||||||
|
INFO
|
||||||
|
14 19 9 2024
|
||||||
|
+
|
||||||
|
$
|
|
@ -0,0 +1,27 @@
|
||||||
|
18 16 9 2024
|
||||||
|
17 17 9 2024
|
||||||
|
17 17 9 2024
|
||||||
|
17 17 9 2024
|
||||||
|
17 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
18 17 9 2024
|
||||||
|
8 18 9 2024
|
||||||
|
14 18 9 2024
|
||||||
|
16 18 9 2024
|
||||||
|
16 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
17 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
18 18 9 2024
|
||||||
|
14 19 9 2024
|
||||||
|
14 19 9 2024+
|
||||||
|
15 19 9 2024
|
||||||
|
16 20 9 2024
|
||||||
|
$
|
19
Makefile
19
Makefile
|
@ -6,10 +6,25 @@ LFLAGS=
|
||||||
all: bin/colloscope
|
all: bin/colloscope
|
||||||
|
|
||||||
test: bin/colloscope
|
test: bin/colloscope
|
||||||
bin/colloscope -v S3-creneaux.txt 31 S3-colleurs.txt 16 7 15 1000 output-S3.csv 3 6
|
bin/colloscope -v S3-creneaux.txt 31 S3-colleurs.txt 16 7 15 3000 output-S3.csv 4 6
|
||||||
|
|
||||||
|
mpi-ALL: bin/colloscope
|
||||||
|
bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 21 14 10000 output-MPI.csv 4 999999
|
||||||
|
|
||||||
|
mpi-all: bin/colloscope
|
||||||
|
bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 21 14 1000 output-MPI.csv 4 999999
|
||||||
|
|
||||||
|
mpi-20: bin/colloscope
|
||||||
|
bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 20 14 2500 output-MPI.csv 4 999999
|
||||||
|
|
||||||
|
mpi-12: bin/colloscope
|
||||||
|
bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 12 14 7000 output-MPI.csv 4 999999
|
||||||
|
|
||||||
|
mpi-8: bin/colloscope
|
||||||
|
bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 8 14 10000 output-MPI.csv 4 999999
|
||||||
|
|
||||||
mem: bin/
|
mem: bin/
|
||||||
valgrind --leak-check=full ./bin/colloscope -v S3-creneaux.txt 31 S3-colleurs.txt 16 7 15 100 output-S3.csv 3 6
|
valgrind --leak-check=full ./bin/colloscope -v S3-creneaux.txt 21 S3-colleurs.txt 16 7 15 100 output-S3.csv 3 6
|
||||||
|
|
||||||
OBJECTS = obj/structure.o obj/algorithm.o obj/display.o obj/logger.o obj/main.o
|
OBJECTS = obj/structure.o obj/algorithm.o obj/display.o obj/logger.o obj/main.o
|
||||||
bin/colloscope: $(OBJECTS)
|
bin/colloscope: $(OBJECTS)
|
||||||
|
|
100
S3-tds.txt
100
S3-tds.txt
|
@ -1,29 +1,101 @@
|
||||||
14 23 4 2024
|
14 18 9 2024
|
||||||
T-3-1
|
T-2-2
|
||||||
|
|
||||||
1
|
1
|
||||||
|
9
|
||||||
|
10
|
||||||
|
13
|
||||||
2
|
2
|
||||||
3
|
|
||||||
+
|
+
|
||||||
12 22 4 2024
|
14 18 9 2024
|
||||||
T-1-1
|
T-4-3
|
||||||
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
8
|
||||||
|
11
|
||||||
+
|
+
|
||||||
14 24 4 2024
|
14 18 9 2024
|
||||||
T-1-1
|
T-4-1
|
||||||
|
|
||||||
1
|
4
|
||||||
2
|
6
|
||||||
3
|
12
|
||||||
|
14
|
||||||
+
|
+
|
||||||
13 22 4 2024
|
14 19 9 2024
|
||||||
T-1-1
|
T-2-1
|
||||||
|
|
||||||
|
1
|
||||||
|
9
|
||||||
|
10
|
||||||
|
13
|
||||||
|
2
|
||||||
|
+
|
||||||
|
14 19 9 2024
|
||||||
|
T-4-2
|
||||||
|
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
8
|
||||||
|
11
|
||||||
|
+
|
||||||
|
14 19 9 2024
|
||||||
|
T-4-4
|
||||||
|
|
||||||
|
4
|
||||||
|
6
|
||||||
|
12
|
||||||
|
14
|
||||||
|
+
|
||||||
|
15 19 9 2024
|
||||||
|
T-2-1
|
||||||
|
|
||||||
|
1
|
||||||
|
9
|
||||||
|
10
|
||||||
|
13
|
||||||
|
2
|
||||||
|
+
|
||||||
|
15 19 9 2024
|
||||||
|
T-4-2
|
||||||
|
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
8
|
||||||
|
11
|
||||||
|
+
|
||||||
|
15 19 9 2024
|
||||||
|
T-4-4
|
||||||
|
|
||||||
|
4
|
||||||
|
6
|
||||||
|
12
|
||||||
|
14
|
||||||
|
+
|
||||||
|
14 18 9 2024
|
||||||
|
T-2-2
|
||||||
|
|
||||||
|
8
|
||||||
|
9
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
+
|
||||||
|
14 18 9 2024
|
||||||
|
T-2-1
|
||||||
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
+
|
+
|
||||||
$
|
$
|
|
@ -0,0 +1,567 @@
|
||||||
|
hour,day,month,year,length,group,colleur,matiere
|
||||||
|
18,16,9,2024,1,2,Bouverot,Maths
|
||||||
|
17,17,9,2024,1,8,Dailly,Maths
|
||||||
|
17,17,9,2024,1,12,Pelletier,Maths
|
||||||
|
17,17,9,2024,1,3,Riveline,Maths
|
||||||
|
17,17,9,2024,1,4,Chevalier,Physique
|
||||||
|
18,17,9,2024,1,11,Dailly,Maths
|
||||||
|
18,17,9,2024,1,10,Pelletier,Maths
|
||||||
|
18,17,9,2024,1,4,Riveline,Maths
|
||||||
|
8,18,9,2024,1,0,none,none
|
||||||
|
14,18,9,2024,1,14,Sabban,Maths
|
||||||
|
16,18,9,2024,1,5,Montarou,Anglais
|
||||||
|
16,18,9,2024,1,1,Graff,Anglais
|
||||||
|
17,18,9,2024,1,12,Robin,Physique
|
||||||
|
17,18,9,2024,1,6,Giral-Martinez,Maths
|
||||||
|
17,18,9,2024,1,10,Pignard,Physique
|
||||||
|
17,18,9,2024,1,3,Graff,Anglais
|
||||||
|
17,18,9,2024,1,7,Montarou,Anglais
|
||||||
|
18,18,9,2024,1,11,Montarou,Anglais
|
||||||
|
18,18,9,2024,1,13,LeLouarne,Anglais
|
||||||
|
18,18,9,2024,1,6,Pignard,Physique
|
||||||
|
18,18,9,2024,1,9,Graff,Anglais
|
||||||
|
18,18,9,2024,1,7,Giral-Martinez,Maths
|
||||||
|
14,19,9,2024,1,8,Creuset,Physique
|
||||||
|
14,19,9,2024,2,0,none,none
|
||||||
|
15,19,9,2024,1,2,Creuset,Physique
|
||||||
|
16,20,9,2024,1,14,Thiébaud,Physique
|
||||||
|
18,23,9,2024,1,12,Bouverot,Maths
|
||||||
|
|
||||||
|
17,24,9,2024,1,11,Chevalier,Physique
|
||||||
|
17,24,9,2024,1,9,Dailly,Maths
|
||||||
|
17,24,9,2024,1,3,Riveline,Maths
|
||||||
|
17,24,9,2024,1,11,Pelletier,Maths
|
||||||
|
18,24,9,2024,1,13,Dailly,Maths
|
||||||
|
18,24,9,2024,1,8,Pelletier,Maths
|
||||||
|
18,24,9,2024,1,7,Riveline,Maths
|
||||||
|
8,25,9,2024,1,4,Bouverot,Maths
|
||||||
|
14,25,9,2024,1,14,Sabban,Maths
|
||||||
|
16,25,9,2024,1,4,Montarou,Anglais
|
||||||
|
16,25,9,2024,1,2,Graff,Anglais
|
||||||
|
17,25,9,2024,1,8,Montarou,Anglais
|
||||||
|
17,25,9,2024,1,13,Robin,Physique
|
||||||
|
17,25,9,2024,1,6,Graff,Anglais
|
||||||
|
17,25,9,2024,1,1,Giral-Martinez,Maths
|
||||||
|
17,25,9,2024,1,9,Pignard,Physique
|
||||||
|
18,25,9,2024,1,5,Giral-Martinez,Maths
|
||||||
|
18,25,9,2024,1,1,Pignard,Physique
|
||||||
|
18,25,9,2024,1,14,LeLouarne,Anglais
|
||||||
|
18,25,9,2024,1,12,Montarou,Anglais
|
||||||
|
18,25,9,2024,1,10,Graff,Anglais
|
||||||
|
14,26,9,2024,1,7,Creuset,Physique
|
||||||
|
14,26,9,2024,2,0,none,none
|
||||||
|
15,26,9,2024,1,3,Creuset,Physique
|
||||||
|
16,27,9,2024,1,5,Thiébaud,Physique
|
||||||
|
18,30,9,2024,1,4,Bouverot,Maths
|
||||||
|
|
||||||
|
17,1,10,2024,1,6,Riveline,Maths
|
||||||
|
17,1,10,2024,1,1,Pelletier,Maths
|
||||||
|
17,1,10,2024,1,10,Chevalier,Physique
|
||||||
|
17,1,10,2024,1,5,Dailly,Maths
|
||||||
|
18,1,10,2024,1,13,Riveline,Maths
|
||||||
|
18,1,10,2024,1,2,Pelletier,Maths
|
||||||
|
18,1,10,2024,1,8,Dailly,Maths
|
||||||
|
8,2,10,2024,1,0,none,none
|
||||||
|
14,2,10,2024,1,12,Sabban,Maths
|
||||||
|
16,2,10,2024,1,9,Graff,Anglais
|
||||||
|
16,2,10,2024,1,1,Montarou,Anglais
|
||||||
|
17,2,10,2024,1,11,Graff,Anglais
|
||||||
|
17,2,10,2024,1,6,Robin,Physique
|
||||||
|
17,2,10,2024,1,5,Montarou,Anglais
|
||||||
|
17,2,10,2024,1,10,Giral-Martinez,Maths
|
||||||
|
17,2,10,2024,1,12,Pignard,Physique
|
||||||
|
18,2,10,2024,1,9,Giral-Martinez,Maths
|
||||||
|
18,2,10,2024,1,13,LeLouarne,Anglais
|
||||||
|
18,2,10,2024,1,7,Graff,Anglais
|
||||||
|
18,2,10,2024,1,3,Montarou,Anglais
|
||||||
|
18,2,10,2024,1,2,Pignard,Physique
|
||||||
|
14,3,10,2024,1,14,Creuset,Physique
|
||||||
|
14,3,10,2024,2,0,none,none
|
||||||
|
15,3,10,2024,1,4,Creuset,Physique
|
||||||
|
16,4,10,2024,1,8,Thiébaud,Physique
|
||||||
|
18,7,10,2024,1,5,Bouverot,Maths
|
||||||
|
|
||||||
|
17,8,10,2024,1,9,Dailly,Maths
|
||||||
|
17,8,10,2024,1,6,Pelletier,Maths
|
||||||
|
17,8,10,2024,1,14,Riveline,Maths
|
||||||
|
17,8,10,2024,1,13,Chevalier,Physique
|
||||||
|
18,8,10,2024,1,7,Riveline,Maths
|
||||||
|
18,8,10,2024,1,10,Dailly,Maths
|
||||||
|
18,8,10,2024,1,2,Pelletier,Maths
|
||||||
|
8,9,10,2024,1,11,Bouverot,Maths
|
||||||
|
14,9,10,2024,1,13,Sabban,Maths
|
||||||
|
16,9,10,2024,1,6,Graff,Anglais
|
||||||
|
16,9,10,2024,1,8,Montarou,Anglais
|
||||||
|
17,9,10,2024,1,9,Robin,Physique
|
||||||
|
17,9,10,2024,1,10,Graff,Anglais
|
||||||
|
17,9,10,2024,1,1,Pignard,Physique
|
||||||
|
17,9,10,2024,1,12,Montarou,Anglais
|
||||||
|
17,9,10,2024,1,1,Giral-Martinez,Maths
|
||||||
|
18,9,10,2024,1,5,Pignard,Physique
|
||||||
|
18,9,10,2024,1,3,Giral-Martinez,Maths
|
||||||
|
18,9,10,2024,1,4,Montarou,Anglais
|
||||||
|
18,9,10,2024,1,14,LeLouarne,Anglais
|
||||||
|
18,9,10,2024,1,2,Graff,Anglais
|
||||||
|
14,10,10,2024,1,3,Creuset,Physique
|
||||||
|
14,10,10,2024,2,0,none,none
|
||||||
|
15,10,10,2024,1,7,Creuset,Physique
|
||||||
|
16,11,10,2024,1,11,Thiébaud,Physique
|
||||||
|
18,14,10,2024,1,4,Bouverot,Maths
|
||||||
|
|
||||||
|
17,15,10,2024,1,8,Riveline,Maths
|
||||||
|
17,15,10,2024,1,14,Dailly,Maths
|
||||||
|
17,15,10,2024,1,3,Pelletier,Maths
|
||||||
|
17,15,10,2024,1,14,Chevalier,Physique
|
||||||
|
18,15,10,2024,1,11,Dailly,Maths
|
||||||
|
18,15,10,2024,1,2,Pelletier,Maths
|
||||||
|
18,15,10,2024,1,12,Riveline,Maths
|
||||||
|
8,16,10,2024,1,0,none,none
|
||||||
|
14,16,10,2024,1,6,Sabban,Maths
|
||||||
|
16,16,10,2024,1,11,Graff,Anglais
|
||||||
|
16,16,10,2024,1,1,Montarou,Anglais
|
||||||
|
17,16,10,2024,1,7,Graff,Anglais
|
||||||
|
17,16,10,2024,1,10,Giral-Martinez,Maths
|
||||||
|
17,16,10,2024,1,5,Montarou,Anglais
|
||||||
|
17,16,10,2024,1,6,Pignard,Physique
|
||||||
|
17,16,10,2024,1,8,Robin,Physique
|
||||||
|
18,16,10,2024,1,13,LeLouarne,Anglais
|
||||||
|
18,16,10,2024,1,12,Pignard,Physique
|
||||||
|
18,16,10,2024,1,7,Giral-Martinez,Maths
|
||||||
|
18,16,10,2024,1,9,Graff,Anglais
|
||||||
|
18,16,10,2024,1,3,Montarou,Anglais
|
||||||
|
14,17,10,2024,1,10,Creuset,Physique
|
||||||
|
14,17,10,2024,2,0,none,none
|
||||||
|
15,17,10,2024,1,2,Creuset,Physique
|
||||||
|
16,18,10,2024,1,4,Thiébaud,Physique
|
||||||
|
18,21,10,2024,1,12,Bouverot,Maths
|
||||||
|
|
||||||
|
17,22,10,2024,1,14,Dailly,Maths
|
||||||
|
17,22,10,2024,1,3,Riveline,Maths
|
||||||
|
17,22,10,2024,1,8,Pelletier,Maths
|
||||||
|
17,22,10,2024,1,13,Chevalier,Physique
|
||||||
|
18,22,10,2024,1,7,Dailly,Maths
|
||||||
|
18,22,10,2024,1,11,Riveline,Maths
|
||||||
|
18,22,10,2024,1,1,Pelletier,Maths
|
||||||
|
8,23,10,2024,1,4,Bouverot,Maths
|
||||||
|
14,23,10,2024,1,13,Sabban,Maths
|
||||||
|
16,23,10,2024,1,10,Montarou,Anglais
|
||||||
|
16,23,10,2024,1,4,Graff,Anglais
|
||||||
|
17,23,10,2024,1,6,Graff,Anglais
|
||||||
|
17,23,10,2024,1,9,Giral-Martinez,Maths
|
||||||
|
17,23,10,2024,1,1,Pignard,Physique
|
||||||
|
17,23,10,2024,1,5,Robin,Physique
|
||||||
|
17,23,10,2024,1,2,Montarou,Anglais
|
||||||
|
18,23,10,2024,1,8,Graff,Anglais
|
||||||
|
18,23,10,2024,1,9,Pignard,Physique
|
||||||
|
18,23,10,2024,1,5,Giral-Martinez,Maths
|
||||||
|
18,23,10,2024,1,12,Montarou,Anglais
|
||||||
|
18,23,10,2024,1,14,LeLouarne,Anglais
|
||||||
|
14,24,10,2024,1,7,Creuset,Physique
|
||||||
|
14,24,10,2024,2,0,none,none
|
||||||
|
15,24,10,2024,1,3,Creuset,Physique
|
||||||
|
16,25,10,2024,1,11,Thiébaud,Physique
|
||||||
|
18,28,10,2024,1,8,Bouverot,Maths
|
||||||
|
|
||||||
|
17,29,10,2024,1,6,Riveline,Maths
|
||||||
|
17,29,10,2024,1,10,Dailly,Maths
|
||||||
|
17,29,10,2024,1,1,Pelletier,Maths
|
||||||
|
17,29,10,2024,1,2,Chevalier,Physique
|
||||||
|
18,29,10,2024,1,5,Riveline,Maths
|
||||||
|
18,29,10,2024,1,4,Dailly,Maths
|
||||||
|
18,29,10,2024,1,0,none,none
|
||||||
|
8,30,10,2024,1,2,Bouverot,Maths
|
||||||
|
14,30,10,2024,1,9,Sabban,Maths
|
||||||
|
16,30,10,2024,1,9,Montarou,Anglais
|
||||||
|
16,30,10,2024,1,5,Graff,Anglais
|
||||||
|
17,30,10,2024,1,12,Giral-Martinez,Maths
|
||||||
|
17,30,10,2024,1,7,Montarou,Anglais
|
||||||
|
17,30,10,2024,1,12,Pignard,Physique
|
||||||
|
17,30,10,2024,1,3,Graff,Anglais
|
||||||
|
17,30,10,2024,1,14,Robin,Physique
|
||||||
|
18,30,10,2024,1,11,LeLouarne,Anglais
|
||||||
|
18,30,10,2024,1,13,Graff,Anglais
|
||||||
|
18,30,10,2024,1,13,Giral-Martinez,Maths
|
||||||
|
18,30,10,2024,1,10,Pignard,Physique
|
||||||
|
18,30,10,2024,1,1,Montarou,Anglais
|
||||||
|
14,31,10,2024,1,4,Creuset,Physique
|
||||||
|
14,31,10,2024,2,0,none,none
|
||||||
|
15,31,10,2024,1,6,Creuset,Physique
|
||||||
|
16,1,11,2024,1,8,Thiébaud,Physique
|
||||||
|
18,4,11,2024,1,3,Bouverot,Maths
|
||||||
|
|
||||||
|
17,5,11,2024,1,5,Dailly,Maths
|
||||||
|
17,5,11,2024,1,13,Pelletier,Maths
|
||||||
|
17,5,11,2024,1,14,Riveline,Maths
|
||||||
|
17,5,11,2024,1,1,Chevalier,Physique
|
||||||
|
18,5,11,2024,1,6,Pelletier,Maths
|
||||||
|
18,5,11,2024,1,2,Dailly,Maths
|
||||||
|
18,5,11,2024,1,11,Riveline,Maths
|
||||||
|
8,6,11,2024,1,1,Bouverot,Maths
|
||||||
|
14,6,11,2024,1,7,Sabban,Maths
|
||||||
|
16,6,11,2024,1,6,Montarou,Anglais
|
||||||
|
16,6,11,2024,1,14,Graff,Anglais
|
||||||
|
17,6,11,2024,1,5,Pignard,Physique
|
||||||
|
17,6,11,2024,1,9,Giral-Martinez,Maths
|
||||||
|
17,6,11,2024,1,13,Robin,Physique
|
||||||
|
17,6,11,2024,1,2,Montarou,Anglais
|
||||||
|
17,6,11,2024,1,8,Graff,Anglais
|
||||||
|
18,6,11,2024,1,7,Pignard,Physique
|
||||||
|
18,6,11,2024,1,4,Graff,Anglais
|
||||||
|
18,6,11,2024,1,10,Giral-Martinez,Maths
|
||||||
|
18,6,11,2024,1,12,LeLouarne,Anglais
|
||||||
|
18,6,11,2024,1,10,Montarou,Anglais
|
||||||
|
14,7,11,2024,1,3,Creuset,Physique
|
||||||
|
14,7,11,2024,2,0,none,none
|
||||||
|
15,7,11,2024,1,9,Creuset,Physique
|
||||||
|
16,8,11,2024,1,11,Thiébaud,Physique
|
||||||
|
18,11,11,2024,1,3,Bouverot,Maths
|
||||||
|
|
||||||
|
17,12,11,2024,1,14,Dailly,Maths
|
||||||
|
17,12,11,2024,1,7,Riveline,Maths
|
||||||
|
17,12,11,2024,1,8,Pelletier,Maths
|
||||||
|
17,12,11,2024,1,8,Chevalier,Physique
|
||||||
|
18,12,11,2024,1,11,Pelletier,Maths
|
||||||
|
18,12,11,2024,1,4,Dailly,Maths
|
||||||
|
18,12,11,2024,1,2,Riveline,Maths
|
||||||
|
8,13,11,2024,1,0,none,none
|
||||||
|
14,13,11,2024,1,10,Sabban,Maths
|
||||||
|
16,13,11,2024,1,9,Graff,Anglais
|
||||||
|
16,13,11,2024,1,13,Montarou,Anglais
|
||||||
|
17,13,11,2024,1,6,Pignard,Physique
|
||||||
|
17,13,11,2024,1,6,Giral-Martinez,Maths
|
||||||
|
17,13,11,2024,1,14,Robin,Physique
|
||||||
|
17,13,11,2024,1,11,Graff,Anglais
|
||||||
|
17,13,11,2024,1,5,Montarou,Anglais
|
||||||
|
18,13,11,2024,1,7,Montarou,Anglais
|
||||||
|
18,13,11,2024,1,3,LeLouarne,Anglais
|
||||||
|
18,13,11,2024,1,1,Graff,Anglais
|
||||||
|
18,13,11,2024,1,2,Pignard,Physique
|
||||||
|
18,13,11,2024,1,12,Giral-Martinez,Maths
|
||||||
|
14,14,11,2024,1,10,Creuset,Physique
|
||||||
|
14,14,11,2024,2,0,none,none
|
||||||
|
15,14,11,2024,1,4,Creuset,Physique
|
||||||
|
16,15,11,2024,1,12,Thiébaud,Physique
|
||||||
|
18,18,11,2024,1,9,Bouverot,Maths
|
||||||
|
|
||||||
|
17,19,11,2024,1,5,Dailly,Maths
|
||||||
|
17,19,11,2024,1,12,Riveline,Maths
|
||||||
|
17,19,11,2024,1,3,Pelletier,Maths
|
||||||
|
17,19,11,2024,1,5,Chevalier,Physique
|
||||||
|
18,19,11,2024,1,14,Dailly,Maths
|
||||||
|
18,19,11,2024,1,8,Pelletier,Maths
|
||||||
|
18,19,11,2024,1,7,Riveline,Maths
|
||||||
|
8,20,11,2024,1,4,Bouverot,Maths
|
||||||
|
14,20,11,2024,1,13,Sabban,Maths
|
||||||
|
16,20,11,2024,1,12,Montarou,Anglais
|
||||||
|
16,20,11,2024,1,10,Graff,Anglais
|
||||||
|
17,20,11,2024,1,6,Graff,Anglais
|
||||||
|
17,20,11,2024,1,11,Robin,Physique
|
||||||
|
17,20,11,2024,1,8,Montarou,Anglais
|
||||||
|
17,20,11,2024,1,7,Pignard,Physique
|
||||||
|
17,20,11,2024,1,1,Giral-Martinez,Maths
|
||||||
|
18,20,11,2024,1,4,LeLouarne,Anglais
|
||||||
|
18,20,11,2024,1,14,Graff,Anglais
|
||||||
|
18,20,11,2024,1,2,Montarou,Anglais
|
||||||
|
18,20,11,2024,1,9,Pignard,Physique
|
||||||
|
18,20,11,2024,1,11,Giral-Martinez,Maths
|
||||||
|
14,21,11,2024,1,1,Creuset,Physique
|
||||||
|
14,21,11,2024,2,0,none,none
|
||||||
|
15,21,11,2024,1,3,Creuset,Physique
|
||||||
|
16,22,11,2024,1,13,Thiébaud,Physique
|
||||||
|
18,25,11,2024,1,10,Bouverot,Maths
|
||||||
|
|
||||||
|
17,26,11,2024,1,8,Pelletier,Maths
|
||||||
|
17,26,11,2024,1,1,Riveline,Maths
|
||||||
|
17,26,11,2024,1,6,Chevalier,Physique
|
||||||
|
17,26,11,2024,1,12,Dailly,Maths
|
||||||
|
18,26,11,2024,1,6,Dailly,Maths
|
||||||
|
18,26,11,2024,1,2,Riveline,Maths
|
||||||
|
18,26,11,2024,1,0,none,none
|
||||||
|
8,27,11,2024,1,13,Bouverot,Maths
|
||||||
|
14,27,11,2024,1,4,Sabban,Maths
|
||||||
|
16,27,11,2024,1,1,Montarou,Anglais
|
||||||
|
16,27,11,2024,1,5,Graff,Anglais
|
||||||
|
17,27,11,2024,1,9,Graff,Anglais
|
||||||
|
17,27,11,2024,1,8,Pignard,Physique
|
||||||
|
17,27,11,2024,1,5,Giral-Martinez,Maths
|
||||||
|
17,27,11,2024,1,13,Montarou,Anglais
|
||||||
|
17,27,11,2024,1,10,Robin,Physique
|
||||||
|
18,27,11,2024,1,9,Giral-Martinez,Maths
|
||||||
|
18,27,11,2024,1,3,Montarou,Anglais
|
||||||
|
18,27,11,2024,1,2,Pignard,Physique
|
||||||
|
18,27,11,2024,1,7,Graff,Anglais
|
||||||
|
18,27,11,2024,1,11,LeLouarne,Anglais
|
||||||
|
14,28,11,2024,1,12,Creuset,Physique
|
||||||
|
14,28,11,2024,2,0,none,none
|
||||||
|
15,28,11,2024,1,4,Creuset,Physique
|
||||||
|
16,29,11,2024,1,14,Thiébaud,Physique
|
||||||
|
18,2,12,2024,1,6,Bouverot,Maths
|
||||||
|
|
||||||
|
17,3,12,2024,1,10,Dailly,Maths
|
||||||
|
17,3,12,2024,1,11,Pelletier,Maths
|
||||||
|
17,3,12,2024,1,7,Riveline,Maths
|
||||||
|
17,3,12,2024,1,7,Chevalier,Physique
|
||||||
|
18,3,12,2024,1,5,Dailly,Maths
|
||||||
|
18,3,12,2024,1,13,Pelletier,Maths
|
||||||
|
18,3,12,2024,1,1,Riveline,Maths
|
||||||
|
8,4,12,2024,1,2,Bouverot,Maths
|
||||||
|
14,4,12,2024,1,14,Sabban,Maths
|
||||||
|
16,4,12,2024,1,12,Montarou,Anglais
|
||||||
|
16,4,12,2024,1,8,Graff,Anglais
|
||||||
|
17,4,12,2024,1,6,Graff,Anglais
|
||||||
|
17,4,12,2024,1,11,Robin,Physique
|
||||||
|
17,4,12,2024,1,9,Giral-Martinez,Maths
|
||||||
|
17,4,12,2024,1,10,Montarou,Anglais
|
||||||
|
17,4,12,2024,1,1,Pignard,Physique
|
||||||
|
18,4,12,2024,1,3,Giral-Martinez,Maths
|
||||||
|
18,4,12,2024,1,14,LeLouarne,Anglais
|
||||||
|
18,4,12,2024,1,4,Graff,Anglais
|
||||||
|
18,4,12,2024,1,2,Montarou,Anglais
|
||||||
|
18,4,12,2024,1,5,Pignard,Physique
|
||||||
|
14,5,12,2024,1,3,Creuset,Physique
|
||||||
|
14,5,12,2024,2,0,none,none
|
||||||
|
15,5,12,2024,1,9,Creuset,Physique
|
||||||
|
16,6,12,2024,1,13,Thiébaud,Physique
|
||||||
|
18,9,12,2024,1,11,Bouverot,Maths
|
||||||
|
|
||||||
|
17,10,12,2024,1,12,Pelletier,Maths
|
||||||
|
17,10,12,2024,1,2,Dailly,Maths
|
||||||
|
17,10,12,2024,1,4,Chevalier,Physique
|
||||||
|
17,10,12,2024,1,3,Riveline,Maths
|
||||||
|
18,10,12,2024,1,14,Dailly,Maths
|
||||||
|
18,10,12,2024,1,0,none,none
|
||||||
|
18,10,12,2024,1,7,Riveline,Maths
|
||||||
|
8,11,12,2024,1,10,Bouverot,Maths
|
||||||
|
14,11,12,2024,1,6,Sabban,Maths
|
||||||
|
16,11,12,2024,1,11,Montarou,Anglais
|
||||||
|
16,11,12,2024,1,5,Graff,Anglais
|
||||||
|
17,11,12,2024,1,14,Robin,Physique
|
||||||
|
17,11,12,2024,1,9,Montarou,Anglais
|
||||||
|
17,11,12,2024,1,13,Graff,Anglais
|
||||||
|
17,11,12,2024,1,8,Giral-Martinez,Maths
|
||||||
|
17,11,12,2024,1,12,Pignard,Physique
|
||||||
|
18,11,12,2024,1,7,Graff,Anglais
|
||||||
|
18,11,12,2024,1,1,LeLouarne,Anglais
|
||||||
|
18,11,12,2024,1,4,Giral-Martinez,Maths
|
||||||
|
18,11,12,2024,1,10,Pignard,Physique
|
||||||
|
18,11,12,2024,1,3,Montarou,Anglais
|
||||||
|
14,12,12,2024,1,8,Creuset,Physique
|
||||||
|
14,12,12,2024,2,0,none,none
|
||||||
|
15,12,12,2024,1,2,Creuset,Physique
|
||||||
|
16,13,12,2024,1,6,Thiébaud,Physique
|
||||||
|
18,16,12,2024,1,3,Bouverot,Maths
|
||||||
|
|
||||||
|
17,17,12,2024,1,14,Riveline,Maths
|
||||||
|
17,17,12,2024,1,11,Pelletier,Maths
|
||||||
|
17,17,12,2024,1,7,Chevalier,Physique
|
||||||
|
17,17,12,2024,1,7,Dailly,Maths
|
||||||
|
18,17,12,2024,1,1,Pelletier,Maths
|
||||||
|
18,17,12,2024,1,5,Dailly,Maths
|
||||||
|
18,17,12,2024,1,8,Riveline,Maths
|
||||||
|
8,18,12,2024,1,4,Bouverot,Maths
|
||||||
|
14,18,12,2024,1,12,Sabban,Maths
|
||||||
|
16,18,12,2024,1,12,Montarou,Anglais
|
||||||
|
16,18,12,2024,1,8,Graff,Anglais
|
||||||
|
17,18,12,2024,1,6,Montarou,Anglais
|
||||||
|
17,18,12,2024,1,1,Pignard,Physique
|
||||||
|
17,18,12,2024,1,5,Robin,Physique
|
||||||
|
17,18,12,2024,1,4,Graff,Anglais
|
||||||
|
17,18,12,2024,1,9,Giral-Martinez,Maths
|
||||||
|
18,18,12,2024,1,2,Graff,Anglais
|
||||||
|
18,18,12,2024,1,10,LeLouarne,Anglais
|
||||||
|
18,18,12,2024,1,14,Montarou,Anglais
|
||||||
|
18,18,12,2024,1,9,Pignard,Physique
|
||||||
|
18,18,12,2024,1,13,Giral-Martinez,Maths
|
||||||
|
14,19,12,2024,1,11,Creuset,Physique
|
||||||
|
14,19,12,2024,2,0,none,none
|
||||||
|
15,19,12,2024,1,3,Creuset,Physique
|
||||||
|
16,20,12,2024,1,13,Thiébaud,Physique
|
||||||
|
18,23,12,2024,1,12,Bouverot,Maths
|
||||||
|
|
||||||
|
17,24,12,2024,1,5,Pelletier,Maths
|
||||||
|
17,24,12,2024,1,8,Dailly,Maths
|
||||||
|
17,24,12,2024,1,1,Riveline,Maths
|
||||||
|
17,24,12,2024,1,12,Chevalier,Physique
|
||||||
|
18,24,12,2024,1,9,Pelletier,Maths
|
||||||
|
18,24,12,2024,1,4,Dailly,Maths
|
||||||
|
18,24,12,2024,1,13,Riveline,Maths
|
||||||
|
8,25,12,2024,1,2,Bouverot,Maths
|
||||||
|
14,25,12,2024,1,6,Sabban,Maths
|
||||||
|
16,25,12,2024,1,11,Montarou,Anglais
|
||||||
|
16,25,12,2024,1,5,Graff,Anglais
|
||||||
|
17,25,12,2024,1,9,Montarou,Anglais
|
||||||
|
17,25,12,2024,1,13,Graff,Anglais
|
||||||
|
17,25,12,2024,1,14,Robin,Physique
|
||||||
|
17,25,12,2024,1,8,Pignard,Physique
|
||||||
|
17,25,12,2024,1,0,none,none
|
||||||
|
18,25,12,2024,1,3,Montarou,Anglais
|
||||||
|
18,25,12,2024,1,10,Giral-Martinez,Maths
|
||||||
|
18,25,12,2024,1,7,Graff,Anglais
|
||||||
|
18,25,12,2024,1,1,LeLouarne,Anglais
|
||||||
|
18,25,12,2024,1,2,Pignard,Physique
|
||||||
|
14,26,12,2024,1,10,Creuset,Physique
|
||||||
|
14,26,12,2024,2,0,none,none
|
||||||
|
15,26,12,2024,1,6,Creuset,Physique
|
||||||
|
16,27,12,2024,1,4,Thiébaud,Physique
|
||||||
|
18,30,12,2024,1,9,Bouverot,Maths
|
||||||
|
|
||||||
|
17,31,12,2024,1,10,Riveline,Maths
|
||||||
|
17,31,12,2024,1,13,Dailly,Maths
|
||||||
|
17,31,12,2024,1,3,Chevalier,Physique
|
||||||
|
17,31,12,2024,1,14,Pelletier,Maths
|
||||||
|
18,31,12,2024,1,7,Riveline,Maths
|
||||||
|
18,31,12,2024,1,1,Pelletier,Maths
|
||||||
|
18,31,12,2024,1,2,Dailly,Maths
|
||||||
|
8,1,1,2025,1,11,Bouverot,Maths
|
||||||
|
14,1,1,2025,1,3,Sabban,Maths
|
||||||
|
16,1,1,2025,1,12,Montarou,Anglais
|
||||||
|
16,1,1,2025,1,14,Graff,Anglais
|
||||||
|
17,1,1,2025,1,6,Giral-Martinez,Maths
|
||||||
|
17,1,1,2025,1,9,Pignard,Physique
|
||||||
|
17,1,1,2025,1,11,Robin,Physique
|
||||||
|
17,1,1,2025,1,6,Graff,Anglais
|
||||||
|
17,1,1,2025,1,8,Montarou,Anglais
|
||||||
|
18,1,1,2025,1,5,Giral-Martinez,Maths
|
||||||
|
18,1,1,2025,1,1,Pignard,Physique
|
||||||
|
18,1,1,2025,1,4,Montarou,Anglais
|
||||||
|
18,1,1,2025,1,10,Graff,Anglais
|
||||||
|
18,1,1,2025,1,2,LeLouarne,Anglais
|
||||||
|
14,2,1,2025,1,7,Creuset,Physique
|
||||||
|
14,2,1,2025,2,0,none,none
|
||||||
|
15,2,1,2025,1,13,Creuset,Physique
|
||||||
|
16,3,1,2025,1,5,Thiébaud,Physique
|
||||||
|
18,6,1,2025,1,11,Bouverot,Maths
|
||||||
|
|
||||||
|
17,7,1,2025,1,3,Dailly,Maths
|
||||||
|
17,7,1,2025,1,12,Pelletier,Maths
|
||||||
|
17,7,1,2025,1,8,Riveline,Maths
|
||||||
|
17,7,1,2025,1,2,Chevalier,Physique
|
||||||
|
18,7,1,2025,1,7,Riveline,Maths
|
||||||
|
18,7,1,2025,1,4,Dailly,Maths
|
||||||
|
18,7,1,2025,1,2,Pelletier,Maths
|
||||||
|
8,8,1,2025,1,0,none,none
|
||||||
|
14,8,1,2025,1,6,Sabban,Maths
|
||||||
|
16,8,1,2025,1,3,Graff,Anglais
|
||||||
|
16,8,1,2025,1,5,Montarou,Anglais
|
||||||
|
17,8,1,2025,1,10,Giral-Martinez,Maths
|
||||||
|
17,8,1,2025,1,13,Graff,Anglais
|
||||||
|
17,8,1,2025,1,7,Montarou,Anglais
|
||||||
|
17,8,1,2025,1,12,Robin,Physique
|
||||||
|
17,8,1,2025,1,4,Pignard,Physique
|
||||||
|
18,8,1,2025,1,14,Giral-Martinez,Maths
|
||||||
|
18,8,1,2025,1,11,Graff,Anglais
|
||||||
|
18,8,1,2025,1,14,Pignard,Physique
|
||||||
|
18,8,1,2025,1,1,Montarou,Anglais
|
||||||
|
18,8,1,2025,1,9,LeLouarne,Anglais
|
||||||
|
14,9,1,2025,1,10,Creuset,Physique
|
||||||
|
14,9,1,2025,2,0,none,none
|
||||||
|
15,9,1,2025,1,8,Creuset,Physique
|
||||||
|
16,10,1,2025,1,6,Thiébaud,Physique
|
||||||
|
18,13,1,2025,1,9,Bouverot,Maths
|
||||||
|
|
||||||
|
17,14,1,2025,1,5,Riveline,Maths
|
||||||
|
17,14,1,2025,1,13,Dailly,Maths
|
||||||
|
17,14,1,2025,1,3,Chevalier,Physique
|
||||||
|
17,14,1,2025,1,14,Pelletier,Maths
|
||||||
|
18,14,1,2025,1,3,Riveline,Maths
|
||||||
|
18,14,1,2025,1,7,Dailly,Maths
|
||||||
|
18,14,1,2025,1,1,Pelletier,Maths
|
||||||
|
8,15,1,2025,1,4,Bouverot,Maths
|
||||||
|
14,15,1,2025,1,12,Sabban,Maths
|
||||||
|
16,15,1,2025,1,12,Montarou,Anglais
|
||||||
|
16,15,1,2025,1,10,Graff,Anglais
|
||||||
|
17,15,1,2025,1,6,Montarou,Anglais
|
||||||
|
17,15,1,2025,1,5,Robin,Physique
|
||||||
|
17,15,1,2025,1,1,Pignard,Physique
|
||||||
|
17,15,1,2025,1,14,Graff,Anglais
|
||||||
|
17,15,1,2025,1,8,Giral-Martinez,Maths
|
||||||
|
18,15,1,2025,1,11,Giral-Martinez,Maths
|
||||||
|
18,15,1,2025,1,8,LeLouarne,Anglais
|
||||||
|
18,15,1,2025,1,9,Pignard,Physique
|
||||||
|
18,15,1,2025,1,4,Montarou,Anglais
|
||||||
|
18,15,1,2025,1,2,Graff,Anglais
|
||||||
|
14,16,1,2025,1,11,Creuset,Physique
|
||||||
|
14,16,1,2025,2,0,none,none
|
||||||
|
15,16,1,2025,1,13,Creuset,Physique
|
||||||
|
16,17,1,2025,1,7,Thiébaud,Physique
|
||||||
|
18,20,1,2025,1,9,Bouverot,Maths
|
||||||
|
|
||||||
|
17,21,1,2025,1,10,Riveline,Maths
|
||||||
|
17,21,1,2025,1,1,Dailly,Maths
|
||||||
|
17,21,1,2025,1,4,Chevalier,Physique
|
||||||
|
17,21,1,2025,1,5,Pelletier,Maths
|
||||||
|
18,21,1,2025,1,13,Riveline,Maths
|
||||||
|
18,21,1,2025,1,4,Pelletier,Maths
|
||||||
|
18,21,1,2025,1,8,Dailly,Maths
|
||||||
|
8,22,1,2025,1,12,Bouverot,Maths
|
||||||
|
14,22,1,2025,1,6,Sabban,Maths
|
||||||
|
16,22,1,2025,1,11,Montarou,Anglais
|
||||||
|
16,22,1,2025,1,1,Graff,Anglais
|
||||||
|
17,22,1,2025,1,12,Pignard,Physique
|
||||||
|
17,22,1,2025,1,9,Graff,Anglais
|
||||||
|
17,22,1,2025,1,14,Robin,Physique
|
||||||
|
17,22,1,2025,1,0,none,none
|
||||||
|
17,22,1,2025,1,5,Montarou,Anglais
|
||||||
|
18,22,1,2025,1,13,Graff,Anglais
|
||||||
|
18,22,1,2025,1,3,LeLouarne,Anglais
|
||||||
|
18,22,1,2025,1,7,Montarou,Anglais
|
||||||
|
18,22,1,2025,1,8,Pignard,Physique
|
||||||
|
18,22,1,2025,1,2,Giral-Martinez,Maths
|
||||||
|
14,23,1,2025,1,10,Creuset,Physique
|
||||||
|
14,23,1,2025,2,0,none,none
|
||||||
|
15,23,1,2025,1,6,Creuset,Physique
|
||||||
|
16,24,1,2025,1,2,Thiébaud,Physique
|
||||||
|
18,27,1,2025,1,6,Bouverot,Maths
|
||||||
|
|
||||||
|
17,28,1,2025,1,9,Riveline,Maths
|
||||||
|
17,28,1,2025,1,13,Chevalier,Physique
|
||||||
|
17,28,1,2025,1,14,Pelletier,Maths
|
||||||
|
17,28,1,2025,1,3,Dailly,Maths
|
||||||
|
18,28,1,2025,1,7,Riveline,Maths
|
||||||
|
18,28,1,2025,1,1,Pelletier,Maths
|
||||||
|
18,28,1,2025,1,2,Dailly,Maths
|
||||||
|
8,29,1,2025,1,13,Bouverot,Maths
|
||||||
|
14,29,1,2025,1,11,Sabban,Maths
|
||||||
|
16,29,1,2025,1,12,Montarou,Anglais
|
||||||
|
16,29,1,2025,1,14,Graff,Anglais
|
||||||
|
17,29,1,2025,1,6,Graff,Anglais
|
||||||
|
17,29,1,2025,1,5,Giral-Martinez,Maths
|
||||||
|
17,29,1,2025,1,3,Robin,Physique
|
||||||
|
17,29,1,2025,1,8,Montarou,Anglais
|
||||||
|
17,29,1,2025,1,7,Pignard,Physique
|
||||||
|
18,29,1,2025,1,10,Giral-Martinez,Maths
|
||||||
|
18,29,1,2025,1,4,Montarou,Anglais
|
||||||
|
18,29,1,2025,1,1,Pignard,Physique
|
||||||
|
18,29,1,2025,1,10,Graff,Anglais
|
||||||
|
18,29,1,2025,1,2,LeLouarne,Anglais
|
||||||
|
14,30,1,2025,1,5,Creuset,Physique
|
||||||
|
14,30,1,2025,2,0,none,none
|
||||||
|
15,30,1,2025,1,11,Creuset,Physique
|
||||||
|
16,31,1,2025,1,9,Thiébaud,Physique
|
||||||
|
18,3,2,2025,1,7,Bouverot,Maths
|
||||||
|
|
||||||
|
17,4,2,2025,1,4,Riveline,Maths
|
||||||
|
17,4,2,2025,1,0,none,none
|
||||||
|
17,4,2,2025,1,11,Dailly,Maths
|
||||||
|
17,4,2,2025,1,8,Chevalier,Physique
|
||||||
|
18,4,2,2025,1,12,Pelletier,Maths
|
||||||
|
18,4,2,2025,1,3,Dailly,Maths
|
||||||
|
18,4,2,2025,1,10,Riveline,Maths
|
||||||
|
8,5,2,2025,1,14,Bouverot,Maths
|
||||||
|
14,5,2,2025,1,6,Sabban,Maths
|
||||||
|
16,5,2,2025,1,9,Graff,Anglais
|
||||||
|
16,5,2,2025,1,7,Montarou,Anglais
|
||||||
|
17,5,2,2025,1,12,Robin,Physique
|
||||||
|
17,5,2,2025,1,2,Pignard,Physique
|
||||||
|
17,5,2,2025,1,8,Giral-Martinez,Maths
|
||||||
|
17,5,2,2025,1,13,Graff,Anglais
|
||||||
|
17,5,2,2025,1,5,Montarou,Anglais
|
||||||
|
18,5,2,2025,1,3,Montarou,Anglais
|
||||||
|
18,5,2,2025,1,1,LeLouarne,Anglais
|
||||||
|
18,5,2,2025,1,4,Pignard,Physique
|
||||||
|
18,5,2,2025,1,11,Graff,Anglais
|
||||||
|
18,5,2,2025,1,2,Giral-Martinez,Maths
|
||||||
|
14,6,2,2025,1,10,Creuset,Physique
|
||||||
|
14,6,2,2025,2,0,none,none
|
||||||
|
15,6,2,2025,1,6,Creuset,Physique
|
||||||
|
16,7,2,2025,1,14,Thiébaud,Physique
|
|
327
src/algorithm.c
327
src/algorithm.c
|
@ -26,7 +26,7 @@
|
||||||
#include "algorithm.h"
|
#include "algorithm.h"
|
||||||
|
|
||||||
bool is_equal_date(date d1, date d2) {
|
bool is_equal_date(date d1, date d2) {
|
||||||
return (d1.hour == d2.hour && d1.day == d2.day && d2.month == d1.month && d2.year == d1.year);
|
return (d1.hour == d2.hour && d1.day == d2.day && d2.month == d1.month /*&& d2.year == d1.year*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_date_index(creneau* edt, int len_creneau, date d) {
|
int get_date_index(creneau* edt, int len_creneau, date d) {
|
||||||
|
@ -62,7 +62,7 @@ colleur* get_colleurs(colleur* cl, int len_cl, date d, int* how_many) {
|
||||||
for(int j = 0; j < cl[i].n_disp; j++) {
|
for(int j = 0; j < cl[i].n_disp; j++) {
|
||||||
if(is_equal_date(cl[i].disp[j], d)) {
|
if(is_equal_date(cl[i].disp[j], d)) {
|
||||||
if(ptr >= 30) {
|
if(ptr >= 30) {
|
||||||
warn("Too many colleurs detected for a creneau\n");
|
error("Too many colleurs detected for a creneau\n");
|
||||||
}
|
}
|
||||||
res[ptr] = cl[i];
|
res[ptr] = cl[i];
|
||||||
ptr++;
|
ptr++;
|
||||||
|
@ -192,7 +192,20 @@ int free_math_space(creneau* edt, int len_edt, int id) {
|
||||||
return howmany;
|
return howmany;
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleur* chads, int len_chads, int n_weeks, int grp, topic start_rotation, int mth, int inf, int* skip_count, int mat_halt, int info_app) {
|
static int* perm0 ;
|
||||||
|
static int perm0len ;
|
||||||
|
|
||||||
|
int colleur_to_id(colleur* colleurs, int len_colleurs, char* name) {
|
||||||
|
for(int i = 0; i < len_colleurs; i++) {
|
||||||
|
if(str_equal(name, colleurs[i].name)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fatal("colleur %d not found", name);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleur* chads, int len_chads, int n_weeks, int grp, topic start_rotation, int mth, int inf, int* skip_count, int mat_halt, int info_app, int** occs, int* averages) {
|
||||||
topic rotation = start_rotation; // physics/english rotation
|
topic rotation = start_rotation; // physics/english rotation
|
||||||
int math = mth; // math (3/4)
|
int math = mth; // math (3/4)
|
||||||
int info = inf; // info (1/6)
|
int info = inf; // info (1/6)
|
||||||
|
@ -215,6 +228,9 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
int math_dude = 0; // length of colleur*
|
int math_dude = 0; // length of colleur*
|
||||||
int weeklen;
|
int weeklen;
|
||||||
|
|
||||||
|
bool is_searching_in_blacklisted = true ;
|
||||||
|
bool is_limiting_sames = true ;
|
||||||
|
|
||||||
bool normal_skip = true;
|
bool normal_skip = true;
|
||||||
|
|
||||||
for(int week = 0; week < n_weeks; week++) {
|
for(int week = 0; week < n_weeks; week++) {
|
||||||
|
@ -242,9 +258,11 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
normal_skip = true;
|
normal_skip = true;
|
||||||
|
|
||||||
info++;
|
info++;
|
||||||
|
is_searching_in_blacklisted = true ;
|
||||||
|
is_limiting_sames = true ;
|
||||||
// info colle
|
// info colle
|
||||||
while(info >= info_app) {
|
while(info >= info_app) {
|
||||||
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 2) {
|
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 2 && (!is_searching_in_blacklisted || edt[k+r%weeklen].blacklisted == true)) {
|
||||||
// if creneau is empty
|
// if creneau is empty
|
||||||
// import all colleurs available
|
// import all colleurs available
|
||||||
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
||||||
|
@ -261,8 +279,9 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
// - he is a INFO colleur
|
// - he is a INFO colleur
|
||||||
// if a colle has been addded, interrupt the for andwhile loops
|
// if a colle has been addded, interrupt the for andwhile loops
|
||||||
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
||||||
if(dudes[perm[dude]].mat == INFO && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
if(dudes[perm[dude]].mat == INFO && (!is_limiting_sames || occs[grp-1][perm[dude]] <= averages[perm[dude]]) && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
||||||
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
||||||
|
occs[grp-1][colleur_to_id(chads, len_chads, dudes[perm[dude]].name)] += 1;
|
||||||
found = true;
|
found = true;
|
||||||
info = 0;
|
info = 0;
|
||||||
} else if(edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
} else if(edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
||||||
|
@ -273,9 +292,17 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
}
|
}
|
||||||
free(dudes);
|
free(dudes);
|
||||||
}
|
}
|
||||||
if(!found && halt > weeklen) {
|
if(!found && halt > 3*weeklen) {
|
||||||
info = 0;
|
info = 0;
|
||||||
*skip_count += (1-normal_skip);
|
*skip_count += (1-normal_skip);
|
||||||
|
//warn("skipping info colle for group %d (week %d)", grp, week);
|
||||||
|
} else {
|
||||||
|
if(halt > weeklen) {
|
||||||
|
is_searching_in_blacklisted = false ;
|
||||||
|
}
|
||||||
|
if(halt > 2*weeklen) {
|
||||||
|
is_limiting_sames = false ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
r++;
|
r++;
|
||||||
halt++;
|
halt++;
|
||||||
|
@ -285,11 +312,13 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
found = false;
|
found = false;
|
||||||
halt = 0;
|
halt = 0;
|
||||||
normal_skip = true;
|
normal_skip = true;
|
||||||
|
is_searching_in_blacklisted = true ;
|
||||||
|
is_limiting_sames = true ;
|
||||||
|
|
||||||
// if there is a math colle to add, enter this loop
|
// if there is a math colle to add, enter this loop
|
||||||
while(remaining_to_add == 2) {
|
while(remaining_to_add == 2) {
|
||||||
|
|
||||||
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 1) {
|
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 1 && (!is_searching_in_blacklisted || edt[k+r%weeklen].blacklisted == true)) {
|
||||||
// if creneau is empty
|
// if creneau is empty
|
||||||
// import all colleurs available
|
// import all colleurs available
|
||||||
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
||||||
|
@ -307,23 +336,34 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
// - he does not have another colle at the same time (is_overlap)
|
// - he does not have another colle at the same time (is_overlap)
|
||||||
// if a colle has been addded, interrupt the for andwhile loops
|
// if a colle has been addded, interrupt the for andwhile loops
|
||||||
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
||||||
if(dudes[perm[dude]].mat == MATH && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
if(dudes[perm[dude]].mat == MATH && (!is_limiting_sames || occs[grp-1][perm[dude]] <= averages[perm[dude]]) && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
||||||
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
||||||
if(is_overlap(edt, len_edt, k+r%weeklen)) {
|
if(is_overlap(edt, len_edt, k+r%weeklen)) {
|
||||||
remove_colle(edt, k+r%weeklen);
|
remove_colle(edt, k+r%weeklen);
|
||||||
} else {
|
} else {
|
||||||
found = true;
|
found = true;
|
||||||
remaining_to_add--;
|
remaining_to_add--;
|
||||||
|
occs[grp-1][colleur_to_id(chads, len_chads, dudes[perm[dude]].name)] += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(perm);
|
free(perm);
|
||||||
|
} else {
|
||||||
|
error("No colleurs available at (%d %d %d %d)", edt[k+r%weeklen].date.hour, edt[k+r%weeklen].date.day, edt[k+r%weeklen].date.month, edt[k+r%weeklen].date.year);
|
||||||
}
|
}
|
||||||
free(dudes);
|
free(dudes);
|
||||||
}
|
}
|
||||||
if(!found && halt > weeklen) {
|
if(!found && halt > 3*weeklen) {
|
||||||
remaining_to_add--;
|
remaining_to_add--;
|
||||||
*skip_count += 1;
|
*skip_count += 1;
|
||||||
|
//warn("skipping math colle for group %d (week %d)", grp, week);
|
||||||
|
} else {
|
||||||
|
if(halt > weeklen) {
|
||||||
|
is_searching_in_blacklisted = false ;
|
||||||
|
}
|
||||||
|
if(halt > 2*weeklen) {
|
||||||
|
is_limiting_sames = false ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
r++;
|
r++;
|
||||||
halt++;
|
halt++;
|
||||||
|
@ -332,10 +372,13 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
r = rand()%weeklen;
|
r = rand()%weeklen;
|
||||||
found = false;
|
found = false;
|
||||||
halt = 0;
|
halt = 0;
|
||||||
|
is_searching_in_blacklisted = true ;
|
||||||
|
is_limiting_sames = true ;
|
||||||
|
|
||||||
// do it again for physics/english colles
|
// do it again for physics/english colles
|
||||||
while(remaining_to_add == 1) {
|
while(remaining_to_add == 1) {
|
||||||
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 1) {
|
normal_skip = true;
|
||||||
|
if(edt[k+r%weeklen].mat == NOTHING && edt[k+r%weeklen].length == 1 && (!is_searching_in_blacklisted || edt[k+r%weeklen].blacklisted == true)) {
|
||||||
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
colleur* dudes = get_colleurs(chads, len_chads, edt[k+r%weeklen].date, &len_dudes);
|
||||||
len_perm = len_dudes;
|
len_perm = len_dudes;
|
||||||
if(len_dudes != 0) {
|
if(len_dudes != 0) {
|
||||||
|
@ -347,24 +390,38 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
math_dude++;
|
math_dude++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
for(int dude = 0; dude < len_perm*(1-found); dude++) {
|
||||||
if(dudes[perm[dude]].mat == rotation && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
if(dudes[perm[dude]].mat == rotation && (!is_limiting_sames || occs[grp-1][perm[dude]] <= averages[perm[dude]]) && edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
||||||
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
add_colle(edt, dudes, grp, k+r%weeklen, perm[dude]);
|
||||||
if(math_dude > free_math_space(edt, len_edt, k+r%weeklen) || is_overlap(edt, len_edt, k+r%weeklen)) {
|
if(math_dude > free_math_space(edt, len_edt, k+r%weeklen) || is_overlap(edt, len_edt, k+r%weeklen)) {
|
||||||
remove_colle(edt, k+r%weeklen);
|
remove_colle(edt, k+r%weeklen);
|
||||||
} else {
|
} else {
|
||||||
found = true;
|
found = true;
|
||||||
remaining_to_add--;
|
remaining_to_add--;
|
||||||
|
occs[grp-1][colleur_to_id(chads, len_chads, dudes[perm[dude]].name)] += 1;
|
||||||
}
|
}
|
||||||
|
} else if(edt[k+r%weeklen].allow_grps[grp-1] == true) {
|
||||||
|
normal_skip = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(perm);
|
free(perm);
|
||||||
|
} else {
|
||||||
|
error("No colleurs available at (%d %d %d %d)", edt[k+r%weeklen].date.hour, edt[k+r%weeklen].date.day, edt[k+r%weeklen].date.month, edt[k+r%weeklen].date.year);
|
||||||
}
|
}
|
||||||
free(dudes);
|
free(dudes);
|
||||||
}
|
}
|
||||||
if(!found && halt > weeks_len[week]) {
|
if(!found && halt > 3*weeklen) {
|
||||||
remaining_to_add--;
|
remaining_to_add--;
|
||||||
*skip_count += 1;
|
*skip_count += 1;
|
||||||
|
//warn("skipping L2 colle for group %d (week %d after %d / %d spins)", grp, week, halt, weeklen);
|
||||||
|
} else {
|
||||||
|
if(halt > 2*weeklen) {
|
||||||
|
is_limiting_sames = false ;
|
||||||
|
}
|
||||||
|
if(halt > weeklen) {
|
||||||
|
is_searching_in_blacklisted = false ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
r++;
|
r++;
|
||||||
halt++;
|
halt++;
|
||||||
|
@ -375,10 +432,11 @@ void add_colles_for_group_MP2I(int* weeks_len, creneau* edt, int len_edt, colleu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_to_file(char* filename, creneau* edt, int len_edt) {
|
void write_to_file(char* filename, creneau* edt, int len_edt, int n_weeks) {
|
||||||
FILE* ptr = fopen(filename, "w");
|
FILE* ptr = fopen(filename, "w");
|
||||||
fprintf(ptr, "hour,day,month,year,length,group,colleur,matiere\n");
|
fprintf(ptr, "hour,day,month,year,length,group,colleur,matiere\n");
|
||||||
for(int i = 0; i < len_edt; i++) {
|
for(int i = 0; i < len_edt; i++) {
|
||||||
|
//fprintf(ptr, "%d,%d,%d,%d,%d,%d,%s,", edt[i].date.hour, edt[i].date.day, edt[i].date.month, edt[i].date.year, edt[i].length, edt[i].group, edt[i].name);
|
||||||
fprintf(ptr, "%d,%d,%d,%d,%d,%d,%s,", edt[i].date.hour, edt[i].date.day, edt[i].date.month, edt[i].date.year, edt[i].length, edt[i].group, edt[i].name);
|
fprintf(ptr, "%d,%d,%d,%d,%d,%d,%s,", edt[i].date.hour, edt[i].date.day, edt[i].date.month, edt[i].date.year, edt[i].length, edt[i].group, edt[i].name);
|
||||||
if(edt[i].mat == NOTHING) {
|
if(edt[i].mat == NOTHING) {
|
||||||
fprintf(ptr, "none");
|
fprintf(ptr, "none");
|
||||||
|
@ -396,6 +454,9 @@ void write_to_file(char* filename, creneau* edt, int len_edt) {
|
||||||
fprintf(ptr, "Unknown");
|
fprintf(ptr, "Unknown");
|
||||||
}
|
}
|
||||||
fprintf(ptr, "\n");
|
fprintf(ptr, "\n");
|
||||||
|
if(i != 0 && i%(len_edt/n_weeks) == 0) {
|
||||||
|
fprintf(ptr, "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fclose(ptr);
|
fclose(ptr);
|
||||||
}
|
}
|
||||||
|
@ -414,8 +475,15 @@ int max(int x, int y) {
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
int score(creneau* edt, int len_edt, int grp, int n_weeks) {
|
int penalty_poly(int occ, int n_weeks, int* averages, int apt) {
|
||||||
int score = 100;
|
if(occ == 0) {
|
||||||
|
return n_weeks*10;
|
||||||
|
}
|
||||||
|
return (averages[apt] - occ)*(averages[apt] - occ)*(averages[apt] - occ)*(averages[apt] - occ)*3;
|
||||||
|
}
|
||||||
|
|
||||||
|
int score(creneau* edt, int len_edt, int grp, int n_weeks, int** occ, int wd, int ht, int* averages) {
|
||||||
|
int score = n_weeks*300;
|
||||||
|
|
||||||
int dist = 0;
|
int dist = 0;
|
||||||
for(int i = 0; i < len_edt; i++) {
|
for(int i = 0; i < len_edt; i++) {
|
||||||
|
@ -423,52 +491,25 @@ int score(creneau* edt, int len_edt, int grp, int n_weeks) {
|
||||||
if(edt[i].group == grp && edt[j].group == grp) {
|
if(edt[i].group == grp && edt[j].group == grp) {
|
||||||
dist = date_dist(edt[i].date, edt[j].date);
|
dist = date_dist(edt[i].date, edt[j].date);
|
||||||
if(dist == 0) {
|
if(dist == 0) {
|
||||||
score -= 4;
|
score -= n_weeks*2;
|
||||||
}
|
}
|
||||||
/*if(str_equal(edt[i].name, edt[j].name)) {
|
|
||||||
score -= max(0, 28-dist);
|
|
||||||
}*/
|
|
||||||
if(dist == 7 && edt[i].date.hour == edt[j].date.hour) {
|
if(dist == 7 && edt[i].date.hour == edt[j].date.hour) {
|
||||||
score -= 5;
|
score -= n_weeks;
|
||||||
|
}
|
||||||
|
if(dist <= 12) {
|
||||||
|
score -= n_weeks;
|
||||||
}
|
}
|
||||||
if(dist < 5 && edt[i].date.hour == 18 && edt[j].date.hour == 18) {
|
if(dist < 5 && edt[i].date.hour == 18 && edt[j].date.hour == 18) {
|
||||||
score -= 5;
|
score -= n_weeks;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char** met = malloc(sizeof(char*)*3*n_weeks);
|
for(int tch = 0; tch < ht; tch++) {
|
||||||
int p = 0;
|
score -= penalty_poly(occ[grp-1][tch], n_weeks, averages, tch);
|
||||||
for(int i = 0; i < len_edt; i++) {
|
|
||||||
if(edt[i].group == grp) {
|
|
||||||
met[p] = malloc(sizeof(char)*30);
|
|
||||||
str_copy(edt[i].name, edt[i].namelen, met[p]);
|
|
||||||
for(int k = p-1; k >= 0; k--) {
|
|
||||||
if(str_equal(met[k], met[p])) {
|
|
||||||
switch(edt[i].mat) {
|
|
||||||
case MATH:
|
|
||||||
score -= 12;
|
|
||||||
break;
|
|
||||||
case PHYSICS:
|
|
||||||
score -= 12;
|
|
||||||
break;
|
|
||||||
case ENGLISH:
|
|
||||||
score -= 12;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//printf("((%d))\n", score);
|
||||||
for(int f = 0; f < p; f++) {
|
|
||||||
free(met[f]);
|
|
||||||
}
|
|
||||||
free(met);
|
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -562,8 +603,110 @@ bool retreive_indexes(creneau* edt, int len_edt, int* p1, int* p2, int g1, int g
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
topic int_to_mat(colleur* colleur, int id) {
|
||||||
|
return colleur[id].mat ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_zeroes(creneau* edt, int len_edt, colleur* colleurs, int len_colleurs, int n_groups, int n_weeks, int weeklen, int** occs, int* averages) {
|
||||||
|
for(int gr1 = 0; gr1 < n_groups; gr1++) {
|
||||||
|
for(int col1 = 0; col1 < len_colleurs; col1++) {
|
||||||
|
if(occs[gr1][col1] <= 1) {
|
||||||
|
int halt = 0 ;
|
||||||
|
for(int week = 0; week < n_weeks*(1-halt); week++) {
|
||||||
|
int r1 = rand()%weeklen;
|
||||||
|
int count1 = 0 ;
|
||||||
|
while(!halt && count1 < weeklen) {
|
||||||
|
int edtptr1 = week*weeklen + (r1+count1)%weeklen;
|
||||||
|
if(edt[edtptr1].group == gr1 +1 && edt[edtptr1].mat == int_to_mat(colleurs, col1)) {
|
||||||
|
// search another
|
||||||
|
if(occs[gr1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] > 1) { // G1 has enough colles with proposed_colleur
|
||||||
|
int r2 = rand()%weeklen;
|
||||||
|
int count2 = 0 ;
|
||||||
|
while(!halt && count2 < weeklen) {
|
||||||
|
int edtptr2 = week*weeklen + (r2+count2)%weeklen;
|
||||||
|
if(
|
||||||
|
edt[edtptr2].group != gr1 +1 && // not the same group
|
||||||
|
edt[edtptr2].mat == int_to_mat(colleurs, col1) && // same topic
|
||||||
|
str_equal(edt[edtptr2].name, colleurs[col1].name) && // colleur with 0 G1 colles
|
||||||
|
|
||||||
|
occs[edt[edtptr2].group-1][col1] > 1 && // G2 has some backup
|
||||||
|
occs[edt[edtptr2].group-1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] <
|
||||||
|
averages[colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] // no overflow for G2
|
||||||
|
) {
|
||||||
|
halt = true ;
|
||||||
|
|
||||||
|
occs[gr1][col1] += 1;
|
||||||
|
occs[gr1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] -= 1;
|
||||||
|
|
||||||
|
occs[edt[edtptr2].group-1][col1] -= 1;
|
||||||
|
occs[edt[edtptr2].group-1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] += 1;
|
||||||
|
|
||||||
|
edt[edtptr1].group = edt[edtptr2].group;
|
||||||
|
edt[edtptr2].group = gr1+1;
|
||||||
|
}
|
||||||
|
count2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count1++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void deplete_most(creneau* edt, int len_edt, colleur* colleurs, int len_colleurs, int n_groups, int n_weeks, int weeklen, int** occs, int* averages) {
|
||||||
|
for(int gr1 = 0; gr1 < n_groups; gr1++) {
|
||||||
|
for(int col1 = 0; col1 < len_colleurs; col1++) {
|
||||||
|
if(occs[gr1][col1] >= averages[col1]) {
|
||||||
|
int halt = 0 ;
|
||||||
|
for(int week = 0; week < n_weeks*(1-halt); week++) {
|
||||||
|
int r1 = rand()%weeklen;
|
||||||
|
int count1 = 0 ;
|
||||||
|
while(!halt && count1 < weeklen) {
|
||||||
|
int edtptr1 = week*weeklen + (r1+count1)%weeklen;
|
||||||
|
if(edt[edtptr1].group == gr1 +1 && edt[edtptr1].mat == int_to_mat(colleurs, col1)) {
|
||||||
|
// search another
|
||||||
|
if(occs[gr1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] > 1) { // G1 has enough colles with proposed_colleur
|
||||||
|
int r2 = rand()%weeklen;
|
||||||
|
int count2 = 0 ;
|
||||||
|
while(!halt && count2 < weeklen) {
|
||||||
|
int edtptr2 = week*weeklen + (r2+count2)%weeklen;
|
||||||
|
if(
|
||||||
|
edt[edtptr2].group != gr1 +1 && // not the same group
|
||||||
|
edt[edtptr2].mat == int_to_mat(colleurs, col1) && // same topic
|
||||||
|
str_equal(edt[edtptr2].name, colleurs[col1].name) && // colleur with too many G1 colles
|
||||||
|
|
||||||
|
occs[edt[edtptr2].group-1][col1] < averages[colleur_to_id(colleurs, len_colleurs, edt[edtptr2].name)] && // G2 has some backup
|
||||||
|
occs[edt[edtptr2].group-1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] > 1// no overflow for G2
|
||||||
|
) {
|
||||||
|
halt = true ;
|
||||||
|
|
||||||
|
occs[gr1][col1] -= 1;
|
||||||
|
occs[gr1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] += 1;
|
||||||
|
|
||||||
|
occs[edt[edtptr2].group-1][col1] += 1;
|
||||||
|
occs[edt[edtptr2].group-1][colleur_to_id(colleurs, len_colleurs, edt[edtptr1].name)] -= 1;
|
||||||
|
|
||||||
|
edt[edtptr1].group = edt[edtptr2].group;
|
||||||
|
edt[edtptr2].group = gr1+1;
|
||||||
|
}
|
||||||
|
count2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count1++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n_colleurs, int n_weeks, bool is_debug) {
|
int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n_colleurs, int n_weeks, bool is_debug) {
|
||||||
int max_occ = 1;
|
int max_occ = 1;
|
||||||
|
|
||||||
int** res = generate_matrix(n_groups, n_colleurs, 0);
|
int** res = generate_matrix(n_groups, n_colleurs, 0);
|
||||||
|
|
||||||
for(int c = 0; c < len_edt; c++) {
|
for(int c = 0; c < len_edt; c++) {
|
||||||
|
@ -572,10 +715,20 @@ int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int* averages = malloc(sizeof(int)*n_colleurs);
|
||||||
|
for(int i = 0; i < n_colleurs; i++) {
|
||||||
|
averages[i] = 0;
|
||||||
|
for(int grp = 0; grp < n_groups; grp++) {
|
||||||
|
averages[i] += res[grp][i];
|
||||||
|
}
|
||||||
|
averages[i] = averages[i] / n_groups;
|
||||||
|
}
|
||||||
|
|
||||||
bool halt = false;
|
bool halt = false;
|
||||||
for(int it = 0; it < 5*(1-is_debug); it++) {
|
for(int it = 0; it < 5*(1-is_debug); it++) {
|
||||||
for(int grp = 0; grp < n_groups; grp++) {
|
for(int grp = 0; grp < n_groups; grp++) {
|
||||||
for(int dud = 0; dud < n_colleurs; dud++) {
|
for(int dud = 0; dud < n_colleurs; dud++) {
|
||||||
|
max_occ = max(1, averages[dud]);
|
||||||
if(res[grp][dud] > max_occ && get_mat_from_id(dudes, n_colleurs, dud) != INFO) {
|
if(res[grp][dud] > max_occ && get_mat_from_id(dudes, n_colleurs, dud) != INFO) {
|
||||||
for(int grp2 = 0; grp2 < n_groups*(1-halt); grp2++) {
|
for(int grp2 = 0; grp2 < n_groups*(1-halt); grp2++) {
|
||||||
if(grp2 != grp) {
|
if(grp2 != grp) {
|
||||||
|
@ -633,6 +786,7 @@ int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(averages);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,18 +802,22 @@ void aux_2(creneau* edt, int len_edt, colleur* chads, int len_chads, int n_group
|
||||||
|
|
||||||
int start = time(NULL);
|
int start = time(NULL);
|
||||||
int* weeks_len = malloc(sizeof(int)*n_weeks);
|
int* weeks_len = malloc(sizeof(int)*n_weeks);
|
||||||
|
for(int i = 0; i < n_weeks; i++) {
|
||||||
|
weeks_len[i] = len_edt/n_weeks;
|
||||||
|
}
|
||||||
// this list is used to tell the above code what index of edt it has to go to search for a colle
|
// this list is used to tell the above code what index of edt it has to go to search for a colle
|
||||||
int ptr = 0;
|
int ptr = 0;
|
||||||
int current = 1;
|
int current = 1;
|
||||||
for(int k = 1; k < len_edt; k++) {
|
/*for(int k = 1; k < len_edt; k++) {
|
||||||
if(date_dist(edt[k-1].date, edt[k].date) > 1 || k == len_edt-1) {
|
if(date_dist(edt[k-1].date, edt[k].date) > 1 || k == len_edt-1) {
|
||||||
weeks_len[ptr] = current + (k == len_edt - 1);
|
weeks_len[ptr] = current + (k == len_edt - 1);
|
||||||
current = 0;
|
current = 0;
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
current++;
|
current++;
|
||||||
}
|
}*/
|
||||||
//printf("----------------------------\n");
|
debug("---------------------- %d ----------------------", n_groups);
|
||||||
|
print_arr(weeks_len, n_weeks);
|
||||||
|
|
||||||
int* group_stats = malloc(sizeof(int)*n_groups);
|
int* group_stats = malloc(sizeof(int)*n_groups);
|
||||||
int* group_temp = malloc(sizeof(int)*n_groups);
|
int* group_temp = malloc(sizeof(int)*n_groups);
|
||||||
|
@ -674,25 +832,56 @@ void aux_2(creneau* edt, int len_edt, colleur* chads, int len_chads, int n_group
|
||||||
int temp = 0;
|
int temp = 0;
|
||||||
int skipped = 0;
|
int skipped = 0;
|
||||||
int a = 0;
|
int a = 0;
|
||||||
|
|
||||||
|
int* permut = malloc(sizeof(int)*n_groups);
|
||||||
|
|
||||||
|
int** occs = malloc(sizeof(int*)*n_groups);
|
||||||
|
for(int i = 0; i < n_groups; i++) {
|
||||||
|
occs[i] = malloc(sizeof(int)*len_chads);
|
||||||
|
}
|
||||||
|
|
||||||
|
int* averages = malloc(sizeof(int)*len_chads);
|
||||||
|
for(int i = 0; i < len_chads; i++) {
|
||||||
|
averages[i] = 1+(int)(((double)chads[i].n_disp)/((double)n_groups));
|
||||||
|
}
|
||||||
|
print_arr(averages, len_chads);
|
||||||
|
|
||||||
int** occ_data = generate_matrix(n_groups, len_chads, 0);;
|
int** occ_data = generate_matrix(n_groups, len_chads, 0);;
|
||||||
info("Testing %d combinations...", n_sim);
|
info("Testing %d combinations...", n_sim);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
perm0 = malloc(sizeof(int)*20) ;
|
||||||
for(int k = 0; k < n_sim*(1 - (max_score == n_groups*100)); k++) {
|
for(int k = 0; k < n_sim*(1 - (max_score == n_groups*100)); k++) {
|
||||||
|
generate_random_perm(permut, n_groups);
|
||||||
|
|
||||||
if(k >= a) {
|
if(k >= a) {
|
||||||
printf("\x1b[1F");
|
printf("\x1b[1F");
|
||||||
printf("\x1b[2K");
|
printf("\x1b[2K");
|
||||||
info("%d%% Completed (current max is %d/%d)", 100*a/n_sim, max_score, 100*n_groups);
|
info("%d%% Completed (current max is %d/%d)", 100*a/n_sim, max_score, n_weeks*300*n_groups);
|
||||||
a += n_sim/100;
|
a += n_sim/100;
|
||||||
}
|
}
|
||||||
local_score = 0;
|
local_score = 0;
|
||||||
local_min = 100;
|
local_min = 909090909;
|
||||||
skipped = 0;
|
skipped = 0;
|
||||||
for(int i = 0; i < n_groups; i++) {
|
for(int iii = 0; iii < n_groups; iii++) {
|
||||||
add_colles_for_group_MP2I(weeks_len, edt, len_edt, chads, len_chads, n_weeks, i+1, (topic)(2+i%2), i%math_halt, i%info_app, &skipped, math_halt, info_app);
|
for(int jjj = 0; jjj < len_chads; jjj++) {
|
||||||
|
occs[iii][jjj] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
int** temp_data = occurencies(edt, len_edt, chads, n_groups, len_chads, n_weeks, false);
|
|
||||||
for(int i = 0; i < n_groups; i++) {
|
for(int i = 0; i < n_groups; i++) {
|
||||||
temp = score(edt, len_edt, i+1, n_weeks);
|
////warn("(%d) at (%d)", permut[i]+1, k);
|
||||||
|
add_colles_for_group_MP2I(weeks_len, edt, len_edt, chads, len_chads, n_weeks, (permut[i])+1, (topic)(2+(permut[i])%2), (permut[i])%math_halt+(permut[i]==n_groups-1), (permut[i])%info_app, &skipped, math_halt, info_app, occs, averages);
|
||||||
|
}
|
||||||
|
//int** temp_data = occurencies(edt, len_edt, chads, n_groups, len_chads, n_weeks, false);
|
||||||
|
fill_zeroes(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
deplete_most(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
deplete_most(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
fill_zeroes(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
deplete_most(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
deplete_most(edt, len_edt, chads, len_chads, n_groups, n_weeks, len_edt/n_weeks, occs, averages);
|
||||||
|
int** temp_data = occs;
|
||||||
|
//int** temp_data = adjust(edt, len_edt, chads, n_groups, len_chads, n_weeks);
|
||||||
|
for(int i = 0; i < n_groups; i++) {
|
||||||
|
temp = score(edt, len_edt, i+1, n_weeks, temp_data, n_groups, len_chads, averages);
|
||||||
local_score += temp;
|
local_score += temp;
|
||||||
group_temp[i] = temp;
|
group_temp[i] = temp;
|
||||||
if(local_min > temp) {
|
if(local_min > temp) {
|
||||||
|
@ -700,7 +889,7 @@ void aux_2(creneau* edt, int len_edt, colleur* chads, int len_chads, int n_group
|
||||||
local_group = i+1;
|
local_group = i+1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
local_score -= skipped*30;
|
local_score -= skipped*200;
|
||||||
if(local_score > max_score) {
|
if(local_score > max_score) {
|
||||||
max_score = local_score;
|
max_score = local_score;
|
||||||
screwed_group = local_group;
|
screwed_group = local_group;
|
||||||
|
@ -710,24 +899,24 @@ void aux_2(creneau* edt, int len_edt, colleur* chads, int len_chads, int n_group
|
||||||
group_stats[p] = group_temp[p];
|
group_stats[p] = group_temp[p];
|
||||||
}
|
}
|
||||||
copy_matrix(temp_data, n_groups, len_chads, occ_data);
|
copy_matrix(temp_data, n_groups, len_chads, occ_data);
|
||||||
write_to_file(outname, edt, len_edt);
|
write_to_file(outname, edt, len_edt, n_weeks);
|
||||||
}
|
}
|
||||||
for(int r = 0; r < len_edt; r++) {
|
for(int r = 0; r < len_edt; r++) {
|
||||||
remove_colle(edt, r);
|
remove_colle(edt, r);
|
||||||
}
|
}
|
||||||
destroy_matrix(temp_data, n_groups);
|
//destroy_matrix(temp_data, n_groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\x1b[1F");
|
printf("\x1b[1F");
|
||||||
printf("\x1b[2K");
|
printf("\x1b[2K");
|
||||||
if(max_score == 100*n_groups) {
|
if(max_score == n_weeks*300*n_groups) {
|
||||||
info("Interrupting early due to a perfect score achieved");
|
info("Interrupting early due to a perfect score achieved");
|
||||||
} else {
|
} else {
|
||||||
info("100%% Completed, best score is %d/%d (without skip penalty) with %d skipped colle(s)", max_score+global_skipped*30, 100*n_groups, global_skipped);
|
info("100%% Completed, best score is %d/%d (without skip penalty) with %d skipped colle(s)", max_score+global_skipped*30, n_groups*n_weeks*300, global_skipped);
|
||||||
info("Most screwed group is %d with a score of %d/100", screwed_group, global_min);
|
info("Most screwed group is %d with a score of %d/%d", screwed_group, global_min, n_weeks*300);
|
||||||
debug("Stats for all groups are :");
|
debug("Stats for all groups are :");
|
||||||
for(int i = 0; i < n_groups; i++) {
|
for(int i = 0; i < n_groups; i++) {
|
||||||
debug("Group %d : %d/100", i+1, group_stats[i]);
|
debug("Group %d : %d/%d (or %lf %%)", i+1, group_stats[i], n_weeks*300, ((double)group_stats[i]/(n_weeks*3.0)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int end = time(NULL);
|
int end = time(NULL);
|
||||||
|
@ -738,8 +927,12 @@ void aux_2(creneau* edt, int len_edt, colleur* chads, int len_chads, int n_group
|
||||||
print_arr(occ_data[k], len_chads);
|
print_arr(occ_data[k], len_chads);
|
||||||
}
|
}
|
||||||
info("Took %ds to find", end-start);
|
info("Took %ds to find", end-start);
|
||||||
|
free(permut);
|
||||||
|
free(averages);
|
||||||
|
free(perm0);
|
||||||
free(group_stats);
|
free(group_stats);
|
||||||
free(group_temp);
|
free(group_temp);
|
||||||
free(weeks_len);
|
free(weeks_len);
|
||||||
destroy_matrix(occ_data, n_groups);
|
destroy_matrix(occ_data, n_groups);
|
||||||
|
info("Done.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,11 +54,11 @@ bool is_overlap_creneau(creneau* edt, int len_edt, int id, int grp);
|
||||||
|
|
||||||
int free_math_space(creneau *edt, int len_edt, int id);
|
int free_math_space(creneau *edt, int len_edt, int id);
|
||||||
|
|
||||||
void add_colles_for_group_MP2I(int *weeks_len, creneau *edt, int len_edt, colleur *chads, int len_chads, int n_weeks, int grp, topic start_rotation, int mth, int inf, int *skip_count, int math_halt, int info_app);
|
void add_colles_for_group_MP2I(int *weeks_len, creneau *edt, int len_edt, colleur *chads, int len_chads, int n_weeks, int grp, topic start_rotation, int mth, int inf, int *skip_count, int math_halt, int info_app, int** occs, int* averages);
|
||||||
|
|
||||||
void write_to_file(char *filename, creneau *edt, int len_edt);
|
void write_to_file(char *filename, creneau *edt, int len_edt, int n_weeks);
|
||||||
|
|
||||||
int score(creneau *edt, int len_edt, int grp, int n_weeks);
|
int score(creneau *edt, int len_edt, int grp, int n_weeks, int** occ, int wd, int ht, int* averages);
|
||||||
|
|
||||||
int get_colleur_id(colleur* dudes, int n_dudes, char* target);
|
int get_colleur_id(colleur* dudes, int n_dudes, char* target);
|
||||||
|
|
||||||
|
@ -72,6 +72,12 @@ void destroy_matrix(int** m, int li);
|
||||||
|
|
||||||
bool retreive_indexes(creneau* edt, int len_edt, int* p1, int* p2, int g1, int g2, char* n1, char* n2, int n_weeks);
|
bool retreive_indexes(creneau* edt, int len_edt, int* p1, int* p2, int g1, int g2, char* n1, char* n2, int n_weeks);
|
||||||
|
|
||||||
|
topic int_to_mat(colleur* colleur, int id);
|
||||||
|
|
||||||
|
void fill_zeroes(creneau* edt, int len_edt, colleur* colleurs, int len_colleurs, int n_groups, int n_weeks, int weeklen, int** occs, int* averages);
|
||||||
|
|
||||||
|
void deplete_most(creneau* edt, int len_edt, colleur* colleurs, int len_colleurs, int n_groups, int n_weeks, int weeklen, int** occs, int* averages);
|
||||||
|
|
||||||
int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n_colleurs, int n_weeks, bool is_debug);
|
int** occurencies(creneau* edt, int len_edt, colleur* dudes, int n_groups, int n_colleurs, int n_weeks, bool is_debug);
|
||||||
|
|
||||||
void copy_matrix(int** src, int lines, int col, int** dest);
|
void copy_matrix(int** src, int lines, int col, int** dest);
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
//static int height = 900;
|
//static int height = 900;
|
||||||
int date_dist(date d1, date d2) { /* returns distance between d1 and d2 in days
|
int date_dist(date d1, date d2) { /* returns distance between d1 and d2 in days
|
||||||
if d2 is sooner than d1, it will return -1 */
|
if d2 is sooner than d1, it will return -1 */
|
||||||
|
// BROKEN (when dates have different year)
|
||||||
if(d2.month == d1.month && d2.year == d1.year) {
|
if(d2.month == d1.month && d2.year == d1.year) {
|
||||||
if(d2.day < d1.day) {
|
if(d2.day < d1.day) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -309,6 +310,7 @@ creneau* import_creneaux_oneweek(char* filename, int len_file, int n_weeks, int
|
||||||
edt[i].salle.building = 'N';
|
edt[i].salle.building = 'N';
|
||||||
edt[i].salle.id = 0;
|
edt[i].salle.id = 0;
|
||||||
edt[i].length = 1;
|
edt[i].length = 1;
|
||||||
|
edt[i].blacklisted = false ;
|
||||||
edt[i].allow_grps = malloc(sizeof(bool)*n_groups);
|
edt[i].allow_grps = malloc(sizeof(bool)*n_groups);
|
||||||
for(int ii = 0; ii < n_groups; ii++) {
|
for(int ii = 0; ii < n_groups; ii++) {
|
||||||
edt[i].allow_grps[ii] = true;
|
edt[i].allow_grps[ii] = true;
|
||||||
|
@ -349,6 +351,7 @@ creneau* import_creneaux_oneweek(char* filename, int len_file, int n_weeks, int
|
||||||
edt[k*len_file+i].salle.id = 0;
|
edt[k*len_file+i].salle.id = 0;
|
||||||
edt[k*len_file+i].length = edt[i].length;
|
edt[k*len_file+i].length = edt[i].length;
|
||||||
edt[k*len_file+i].allow_grps = malloc(sizeof(bool)*n_groups);
|
edt[k*len_file+i].allow_grps = malloc(sizeof(bool)*n_groups);
|
||||||
|
edt[k*len_file+i].blacklisted = false ;
|
||||||
for(int ii = 0; ii < n_groups; ii++) {
|
for(int ii = 0; ii < n_groups; ii++) {
|
||||||
edt[k*len_file+i].allow_grps[ii] = true;
|
edt[k*len_file+i].allow_grps[ii] = true;
|
||||||
}
|
}
|
||||||
|
@ -547,9 +550,11 @@ void import_tds(creneau* edt, int len_edt, int len_oneweek, char* filename) {
|
||||||
//info("[%d, %d]", buffer, edtptr + k*len_oneweek);
|
//info("[%d, %d]", buffer, edtptr + k*len_oneweek);
|
||||||
//usleep(1000000);
|
//usleep(1000000);
|
||||||
edt[edtptr + k*len_oneweek].allow_grps[buffer-1] = false;
|
edt[edtptr + k*len_oneweek].allow_grps[buffer-1] = false;
|
||||||
|
edt[edtptr + k*len_oneweek].blacklisted = true;
|
||||||
while(equal_d(edt[edtptr + k*len_oneweek].date, edt[edtptr + k*len_oneweek + os].date)) {
|
while(equal_d(edt[edtptr + k*len_oneweek].date, edt[edtptr + k*len_oneweek + os].date)) {
|
||||||
//info("[%d, %d]", buffer, edtptr + k*len_oneweek + os);
|
//info("[%d, %d]", buffer, edtptr + k*len_oneweek + os);
|
||||||
edt[edtptr + k*len_oneweek + os].allow_grps[buffer-1] = false;
|
edt[edtptr + k*len_oneweek + os].allow_grps[buffer-1] = false;
|
||||||
|
edt[edtptr + k*len_oneweek + os].blacklisted = true ;
|
||||||
os++;
|
os++;
|
||||||
}
|
}
|
||||||
k++;
|
k++;
|
||||||
|
@ -563,11 +568,15 @@ void import_tds(creneau* edt, int len_edt, int len_oneweek, char* filename) {
|
||||||
//usleep(1000000);
|
//usleep(1000000);
|
||||||
if((k+ban_init)%ban_cooldown == 0) {
|
if((k+ban_init)%ban_cooldown == 0) {
|
||||||
edt[edtptr + k*len_oneweek].allow_grps[buffer-1] = false;
|
edt[edtptr + k*len_oneweek].allow_grps[buffer-1] = false;
|
||||||
|
edt[edtptr + k*len_oneweek].blacklisted = true;
|
||||||
|
//info("banning at week %d for group %d", k, buffer);
|
||||||
}
|
}
|
||||||
while(equal_d(edt[edtptr + k*len_oneweek].date, edt[edtptr + k*len_oneweek + os].date)) {
|
while(equal_d(edt[edtptr + k*len_oneweek].date, edt[edtptr + k*len_oneweek + os].date)) {
|
||||||
//info("[%d, %d]", buffer, edtptr + k*len_oneweek + os);
|
//info("[%d, %d]", buffer, edtptr + k*len_oneweek + os);
|
||||||
if((k+ban_init)%ban_cooldown == 0) {
|
if((k+ban_init)%ban_cooldown == 0) {
|
||||||
edt[edtptr + k*len_oneweek + os].allow_grps[buffer-1] = false;
|
edt[edtptr + k*len_oneweek + os].allow_grps[buffer-1] = false;
|
||||||
|
edt[edtptr + k*len_oneweek + os].blacklisted = true ;
|
||||||
|
//info("banning at week %d for group %d", k, buffer);
|
||||||
}
|
}
|
||||||
os++;
|
os++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ typedef struct room {char building; int id;} room;
|
||||||
// rooms
|
// rooms
|
||||||
// building can be C, M, R or V
|
// building can be C, M, R or V
|
||||||
|
|
||||||
typedef struct creneau {int length; date date; int group; char* name; int namelen; topic mat; room salle; bool* allow_grps;} creneau;
|
typedef struct creneau {int length; date date; int group; char* name; int namelen; topic mat; room salle; bool* allow_grps; bool blacklisted;} creneau;
|
||||||
// one créneau de colle
|
// one créneau de colle
|
||||||
// /!\ creneau has to be sorted by ascending dates
|
// /!\ creneau has to be sorted by ascending dates
|
||||||
// with edt being a creneau*, it is required to have edt[0] be a Monday and edt[len(edt)-1] has to be a Friday
|
// with edt being a creneau*, it is required to have edt[0] be a Monday and edt[len(edt)-1] has to be a Friday
|
||||||
|
|
Loading…
Reference in New Issue