Informations sur la validation France-IOI: Difference between revisions
Jump to navigation
Jump to search
Wiki-cours (talk | contribs) |
Wiki-cours (talk | contribs) |
||
Line 8: | Line 8: | ||
France-IOI vous permet de travailler en autonomie en dehors des séances de TDs. On privilégiera maintenant les exercices des TDs, la validation consistera donc à du travail personnel. | France-IOI vous permet de travailler en autonomie en dehors des séances de TDs. On privilégiera maintenant les exercices des TDs, la validation consistera donc à du travail personnel. | ||
=== Notes de validation | === Notes de validation finales des étudiants au 10/11/16 === | ||
La note sur 20 est calculée selon la formule : | La note sur 20 est calculée selon la formule : | ||
Line 17: | Line 17: | ||
NOM Prénom | %exo | Niv1 | Niv2 | Note | | NOM Prénom | %exo | Niv1 | Niv2 | Note | | ||
============================================================ | ============================================================ | ||
ADA SIMA MARIE JOELLE | ADA SIMA MARIE JOELLE Doliana | 0.39 | 1.00 | 1.00 | 20.00 | | ||
BEN HAMOUDA Wassim | 0. | AL KHOURY Jean | 1.00 | 1.00 | 1.00 | 20.00 | | ||
BOUDRIES Fahem | 0. | BEN HAMOUDA Wassim | 0.61 | 1.00 | 1.00 | 20.00 | | ||
BOUFFETIER | BOUDRIES Fahem | 0.66 | 1.00 | 1.00 | 20.00 | | ||
BREBAN Arthur | 0. | BOUFFETIER Victorien | 0.34 | 1.00 | 1.00 | 20.00 | | ||
BRETEL Rémi | 0. | BREBAN Arthur | 0.48 | 1.00 | 1.00 | 20.00 | | ||
BRILLOUET Pierre | | BRETEL Rémi | 0.79 | 1.00 | 1.00 | 20.00 | | ||
CAILLAS Augustin | 0. | BRILLOUET Pierre | 1.00 | 1.00 | 1.00 | 20.00 | | ||
CASTELAIN Maxime | 0. | CAILLAS Augustin | 0.30 | 1.00 | 1.00 | 20.00 | | ||
COQUIDÉ Erwan | 0. | CASTELAIN Maxime | 0.41 | 1.00 | 1.00 | 20.00 | | ||
DE GRANDSAIGNES Hervé | 0. | CLAVEAU Julien | 0.64 | 1.00 | 1.00 | 20.00 | | ||
DEFOORT Grégoire | 0. | COQUIDÉ Erwan | 0.27 | 1.00 | 1.00 | 20.00 | | ||
DEPONTAILLER Lucie | 0. | DE GRANDSAIGNES Hervé | 0.26 | 1.00 | 0.88 | 18.75 | | ||
DIAF Mohamed | 0. | DEFOORT Grégoire | 0.56 | 0.87 | 0.88 | 17.42 | | ||
EID Doris | 0. | DEPONTAILLER Lucie | 0.96 | 1.00 | 1.00 | 20.00 | | ||
FLORES GALICIA Fatima | 0. | DIAF Mohamed | 0.98 | 1.00 | 1.00 | 20.00 | | ||
GUERFA Driffa | 0. | EID Doris | 0.79 | 1.00 | 1.00 | 20.00 | | ||
HERNANDEZ SANCHEZ Jessica | 0. | FLORES GALICIA Fatima | 0.72 | 1.00 | 1.00 | 20.00 | | ||
HU Xu | 0. | GUERFA Driffa | 0.84 | 1.00 | 1.00 | 20.00 | | ||
JALAL Yassine | 0. | HERNANDEZ SANCHEZ Jessica | 0.97 | 1.00 | 1.00 | 20.00 | | ||
HU Xu | 0.99 | 1.00 | 1.00 | 20.00 | | |||
JALAL Yassine | 0.75 | 1.00 | 1.00 | 20.00 | | |||
JOIE Mathieu | 1.00 | 1.00 | 1.00 | 20.00 | | JOIE Mathieu | 1.00 | 1.00 | 1.00 | 20.00 | | ||
KUMAR Ritesh | 0.37 | 0.20 | 1.00 | 12.00 | | |||
KUMAR | LEFEBVRE Corentin | 0.74 | 1.00 | 0.88 | 18.75 | | ||
LEFEBVRE | LI Ying | 1.00 | 1.00 | 1.00 | 20.00 | | ||
LI Ying | | LIANG Chenmeijing | 0.83 | 1.00 | 1.00 | 20.00 | | ||
LIANG | LIM Kyungtak | 1.00 | 1.00 | 1.00 | 20.00 | | ||
LIM | LIU Shu | 1.00 | 1.00 | 1.00 | 20.00 | | ||
LIU Shu | | LIÉNARD--MAYOR Théo | 0.63 | 1.00 | 1.00 | 20.00 | | ||
LIÉNARD--MAYOR Théo | 0. | LOUIS DE CANONVILLE Cyprien | 0.28 | 1.00 | 1.00 | 20.00 | | ||
LOUIS DE CANONVILLE Cyprien | 0. | MARENA Kéba | 0.47 | 1.00 | 1.00 | 20.00 | | ||
MARENA Kéba | 0. | MOUSSU Antoine | 0.17 | 0.93 | 0.25 | 11.83 | | ||
MOUSSU Antoine | 0. | MOUTAFIS Nicolas | 0.79 | 1.00 | 1.00 | 20.00 | | ||
MOUTAFIS Nicolas | 0. | NOUR-EDDINE Imam | 0.41 | 1.00 | 1.00 | 20.00 | | ||
NOUR-EDDINE Imam | 0. | REZARD Quentin | 0.47 | 1.00 | 0.44 | 14.38 | | ||
REZARD Quentin | 0. | SAMB Cheikh | 0.48 | 1.00 | 1.00 | 20.00 | | ||
SAMB | SIMON Stéphane | 0.80 | 1.00 | 0.88 | 18.75 | | ||
SIMON Stéphane | 0. | STUDER David | 0.54 | 1.00 | 1.00 | 20.00 | | ||
STUDER | SUREAU Robin | 0.72 | 1.00 | 1.00 | 20.00 | | ||
SUREAU Robin | 0. | VANDERMAESEN Tiphaine | 0.62 | 1.00 | 1.00 | 20.00 | | ||
VANDERMAESEN Tiphaine | 0. | VIDALOT Jeoffray | 0.68 | 1.00 | 1.00 | 20.00 | | ||
VIDALOT Jeoffray | 0. | ZHOU Yuanzhe | 1.00 | 1.00 | 1.00 | 20.00 | | ||
ZHOU | |||
============================================================ | ============================================================ | ||
</source> | </source> | ||
Line 98: | Line 99: | ||
self.name = name | self.name = name | ||
tmp = name.split() | tmp = name.split() | ||
self.nicename = " ".join(tmp[:-2]).upper()+" "+tmp[-2] | self.nicename = " ".join(tmp[:-2]).upper()+" "+tmp[-2].capitalize() | ||
self.number = num | self.number = num | ||
self.results = dict() | self.results = dict() |
Revision as of 11:35, 14 November 2016
Changements dans les dates requises de validation : il vous faut
- valider le niveau I pour le 20/10/16 à 22h
- valider le niveau II pour le 10/11/16 à 22h
France-IOI vous permet de travailler en autonomie en dehors des séances de TDs. On privilégiera maintenant les exercices des TDs, la validation consistera donc à du travail personnel.
Notes de validation finales des étudiants au 10/11/16
La note sur 20 est calculée selon la formule :
============================================================
NOM Prénom | %exo | Niv1 | Niv2 | Note |
============================================================
ADA SIMA MARIE JOELLE Doliana | 0.39 | 1.00 | 1.00 | 20.00 |
AL KHOURY Jean | 1.00 | 1.00 | 1.00 | 20.00 |
BEN HAMOUDA Wassim | 0.61 | 1.00 | 1.00 | 20.00 |
BOUDRIES Fahem | 0.66 | 1.00 | 1.00 | 20.00 |
BOUFFETIER Victorien | 0.34 | 1.00 | 1.00 | 20.00 |
BREBAN Arthur | 0.48 | 1.00 | 1.00 | 20.00 |
BRETEL Rémi | 0.79 | 1.00 | 1.00 | 20.00 |
BRILLOUET Pierre | 1.00 | 1.00 | 1.00 | 20.00 |
CAILLAS Augustin | 0.30 | 1.00 | 1.00 | 20.00 |
CASTELAIN Maxime | 0.41 | 1.00 | 1.00 | 20.00 |
CLAVEAU Julien | 0.64 | 1.00 | 1.00 | 20.00 |
COQUIDÉ Erwan | 0.27 | 1.00 | 1.00 | 20.00 |
DE GRANDSAIGNES Hervé | 0.26 | 1.00 | 0.88 | 18.75 |
DEFOORT Grégoire | 0.56 | 0.87 | 0.88 | 17.42 |
DEPONTAILLER Lucie | 0.96 | 1.00 | 1.00 | 20.00 |
DIAF Mohamed | 0.98 | 1.00 | 1.00 | 20.00 |
EID Doris | 0.79 | 1.00 | 1.00 | 20.00 |
FLORES GALICIA Fatima | 0.72 | 1.00 | 1.00 | 20.00 |
GUERFA Driffa | 0.84 | 1.00 | 1.00 | 20.00 |
HERNANDEZ SANCHEZ Jessica | 0.97 | 1.00 | 1.00 | 20.00 |
HU Xu | 0.99 | 1.00 | 1.00 | 20.00 |
JALAL Yassine | 0.75 | 1.00 | 1.00 | 20.00 |
JOIE Mathieu | 1.00 | 1.00 | 1.00 | 20.00 |
KUMAR Ritesh | 0.37 | 0.20 | 1.00 | 12.00 |
LEFEBVRE Corentin | 0.74 | 1.00 | 0.88 | 18.75 |
LI Ying | 1.00 | 1.00 | 1.00 | 20.00 |
LIANG Chenmeijing | 0.83 | 1.00 | 1.00 | 20.00 |
LIM Kyungtak | 1.00 | 1.00 | 1.00 | 20.00 |
LIU Shu | 1.00 | 1.00 | 1.00 | 20.00 |
LIÉNARD--MAYOR Théo | 0.63 | 1.00 | 1.00 | 20.00 |
LOUIS DE CANONVILLE Cyprien | 0.28 | 1.00 | 1.00 | 20.00 |
MARENA Kéba | 0.47 | 1.00 | 1.00 | 20.00 |
MOUSSU Antoine | 0.17 | 0.93 | 0.25 | 11.83 |
MOUTAFIS Nicolas | 0.79 | 1.00 | 1.00 | 20.00 |
NOUR-EDDINE Imam | 0.41 | 1.00 | 1.00 | 20.00 |
REZARD Quentin | 0.47 | 1.00 | 0.44 | 14.38 |
SAMB Cheikh | 0.48 | 1.00 | 1.00 | 20.00 |
SIMON Stéphane | 0.80 | 1.00 | 0.88 | 18.75 |
STUDER David | 0.54 | 1.00 | 1.00 | 20.00 |
SUREAU Robin | 0.72 | 1.00 | 1.00 | 20.00 |
VANDERMAESEN Tiphaine | 0.62 | 1.00 | 1.00 | 20.00 |
VIDALOT Jeoffray | 0.68 | 1.00 | 1.00 | 20.00 |
ZHOU Yuanzhe | 1.00 | 1.00 | 1.00 | 20.00 |
============================================================
Elles sont générées avec le script suivant:
"""
Un script qui analyse les résultats d'une classe sur http://www.france-ioi.org
et qui produit un tableau de la validation des élèves.
écrit par Guillaume Roux (Université Paris Sud)
merci de me rapporter les bugs.
Utilisation sous Linux:
python3 validation-france-ioi.py
ToDo list:
* recuperer le fichier depuis internet via le numero de groupe ou un lien
* eliminer les superviseurs des membres
* verifier automatiquement qu'il n'y a pas d'anomalies dans les dates de resolution (triche)
* faire afficher les moyennes et la date de validation
* export vers tableau Excell ou OpenOffice
"""
from html.parser import HTMLParser
exercises = []
jumped = ["c'est plus, c'est moins",": mélange explosif"]
niveau1 = ["Dans le fourré","Vendanges","Course avec les enfants","Construction d'une pyramide","La Grande Brade\
rie","Socles pour statues","Le plus beau Karva","Concours de tir à la corde","Mot de passe du village","Planning\
de la journée","Le juste prix","Casernes de pompiers","Zones de couleurs","Département d'architecture : constru\
ction d'une pyramide","Département de chimie"]
niveau2 = ["Augmentation des taxes","Achat de livres","Une belle récolte","La roue de la fortune","Visite de la \
mine","Banquet municipal","Choix des emplacements","Une ligne sur deux ","Lire ou ne pas lire, telle est la ques\
tion","Analyse de fréquence","Écriture en miroir","La bataille","Analyse d’une langue","Sans espaces","Formes cr\
euses","Convertisseur d'unités"]
class Member(object):
def __init__(self,name,num):
self.name = name
tmp = name.split()
self.nicename = " ".join(tmp[:-2]).upper()+" "+tmp[-2].capitalize()
self.number = num
self.results = dict()
def note(self,exos=[]):
if exos: return sum([self.results[e] for e in exos])/len(exos)
else: return 0.0
def showResults(self):
note = 0
for exo in exercises:
note += self.results[exo]
print("\t",exo,":",self.results[exo])
class Parser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.inlycee = False
self.exotype = False
self.members = []
self.curexo = ""
self.mcount = 0
self.exocount = 0
self.solved = 0
self.count = 0
def handle_starttag(self, tag, attrs):
self.inlycee = self.exotype = False
for attr in attrs[:1]:
self.inlycee = attr[0] == 'class' and attr[1] == "lycee_resume_value"
self.exotype = attr[0] == 'href' and \
attr[1][:35] == "http://www.france-ioi.org/algo/task"
if self.inlycee and len(attrs)==2:
self.solved = int(attrs[1][1]=="background-color:lightgreen")
else:
self.solved = 0
def handle_data(self, data):
if self.inlycee:
if '(' in data:
if not data in [m.name for m in self.members]:
self.members.append(Member(data,self.mcount))
self.mcount += 1
if self.curexo in exercises and self.count<len(self.members):
self.members[self.count].results[self.curexo] = self.solved
self.count += 1
if self.exotype and len(data)>=3:
if "«" in data: data = data[:24]
if not data in jumped:
self.curexo = data
self.count = 0
if (not data in exercises) and self.exocount<114:
self.exocount += 1
exercises.append(data)
def showMembers(self):
# print("Found",len(self.members),"members")
maxlenname = max([len(m.nicename) for m in self.members])
barre = "="*(maxlenname+31)
print(barre)
print("NOM Prénom".ljust(maxlenname),"%exo","Niv1","Niv2","Note".rjust(5),sep=" | ",end=" |\n")
print(barre)
for m in sorted(self.members,key=lambda x: x.nicename):
pexo = "{:.2f}".format(m.note(exercises))
pniv1 = "{:.2f}".format(m.note(niveau1))
pniv2 = "{:.2f}".format(m.note(niveau2))
nf = "{:.2f}".format((m.note(niveau1)+m.note(niveau2))*10)
print(m.nicename.ljust(maxlenname),pexo,pniv1,pniv2,nf.rjust(5),sep=" | ",end=" |\n")
print(barre)
def showExercises(self):
print("Found",len(exercises),"exercises")
for e in exercises: print(e)
def showResults(self,number=None):
if number is None: number = range(len(self.members))
print("__"*20)
for n in number:
print("Résultat de",self.members[n].nicename,"note :",\
self.members[n].note(exercises))
self.members[n].showResults()
# mettez ici le chemin vers votre fichier à analyser
fichier = "France-IOI.html"
parser = Parser()
source = open(fichier, 'r')
parser.feed(source.read())
source.close()
parser.showMembers()
#parser.showResults([8])