for sim in similarities: dissimilarity_matrix.append(1 - sim) return dissimilarity_matrix inputs_tan_dist_mat = [ Args(fingerprints_str[0:3]), Args(fingerprints_str[0:1000]) ] exo_tan_dist_mat = ExerciseFunction(Tanimoto_distance_matrix_from_str, inputs_tan_dist_mat, call_renderer=PPrintCallRenderer( show_function=False, css_properties={ 'word-wrap': 'break-word', 'max-width': '40em' }, )) def ClusterFps_from_str(fp_list_str, cutoff=0.2): fp_list = [ DataStructs.cDataStructs.CreateFromBitString(fp_str) for fp_str in fp_list_str ] return ClusterFps(fp_list, cutoff=0.2) # Input: Fingerprints and a threshold for the clustering def ClusterFps(fps, cutoff=0.2):
return ExerciseFunction.correction( self, exercice_compliant(student_comptage)) # on recherche les noms des fichers d'entrée et de sortie # à utiliser pour l'exemple (ou le debug, on prend le même) # associés au premier jeu de données (self.datasets[0]) # et là-dedans il nous faut regarder dans .args qui va contenir # un tuple avec les deux valeurs qu'on recherche def example(self): (in_file, out_file) = self.datasets[0].args return show_comptage(in_file, out_file, comptage=comptage, suffix=".ok") def debug(self, student_comptage): (in_file, out_file) = self.datasets[0].args return show_comptage(in_file, out_file, comptage=student_comptage, suffix="") exo_comptage = ExoComptage( comptage, comptage_args, font_size='xx-small', call_renderer=PPrintCallRenderer(width=20), result_renderer=MultilineRenderer(), )
from nbautoeval import Args, ExerciseFunction, PPrintCallRenderer # @BEG@ name=longest_gap def longest_gap(liste): result = 0 begins = {} for index, item in enumerate(liste): if item not in begins: begins[item] = index else: result = max(result, index - begins[item]) return result # @END@ inputs = [ Args([1, 2, 3, 1, 4, 10, 4, 3, -1, 4]), Args(["yes", "no", None, "yes", "no"]), Args([1, 2, 3, 4]), ] exo_longest_gap = ExerciseFunction( longest_gap, inputs, nb_examples=0, call_renderer=PPrintCallRenderer(width=45), )
# @BEG@ name=carre more=ter def carre_ter(ligne): # On extrait toutes les valeurs séparées par des points- # virgules, on les nettoie avec la méthode strip # et on stocke le résultat dans une liste liste_valeurs = [t.strip() for t in ligne.split(';')] # Il ne reste plus qu'à calculer les carrés pour les # valeurs valides (non vides) et les remettre dans une str return ":".join([str(int(v)**2) for v in liste_valeurs if v]) # @END@ inputs_carre = [ Args("1;2;3"), Args(" 2 ; 5;6;"), Args("; 12 ; -23;\t60; 1\t"), Args("; -12 ; ; -23; 1 ;;\t"), ] exo_carre = ExerciseFunction(carre, inputs_carre, nb_examples=0, call_renderer=PPrintCallRenderer( show_function=False, width=40)) def carre_ko(s): return ":".join(str(i**2) for i in (int(token) for token in s.split(';')))
# @END@ wc_inputs = ( Args('''Python is a programming language that lets you work quickly and integrate systems more effectively.'''), Args(''), Args('abc'), Args('abc \t'), Args('a bc \t'), Args(' \tabc \n'), Args(" ".join("abcdefg") + "\n"), Args('''The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. ...'''), ) exo_wc = ExerciseFunction(wc, wc_inputs, call_renderer=PPrintCallRenderer(max_width=40, show_function=True), result_renderer=PPrintRenderer(width=15))
# @END@ # @BEG@ name=liste_P more=bis # On peut bien entendu faire aussi de manière pédestre def liste_P_bis(liste_x): liste_y = [] for x in liste_x: liste_y.append(P(x)) return liste_y # @END@ inputs_liste_P = [ Args(list(range(5))), Args(list(range(-7, 8, 2))), Args([-100, 0, 100]), ] exo_liste_P = ExerciseFunction( liste_P, inputs_liste_P, call_renderer=PPrintCallRenderer(width=40, show_function=False), result_renderer=PPrintRenderer(width=25), ) def liste_P_ko(liste): return [P(liste[0])]