Modèle basic/matchlist

Le modèle basic/matchlist permet de fabriquer des exercices de correspondances.

Clés spécifiques

Clé Description Type Défaut
matches Liste des correspondances (source, cible). Elle peut être saisie comme une liste de couples ou comme une chaîne multilignes (chaque ligne correspondant à une correspondance, les deux éléments étant distingués par un séparateur défini dans la clé `separator`). (str, list[tuple[str, str]] []
separator Séparateur des éléments d'une correspondance (source, cible). str ','
nbmatches Nombre de correspondances à proposer parmi la liste de correspondances. Si cette clé vaut `None`, toutes les correspondances sont proposées. (int, None) None
targets Liste de cibles supplémentaires. Elle peut être saisie comme une liste ou comme une chaîne multilignes (chaque ligne correspondant à un item). (str, list[str]) []
multiple Valeur indiquant si une cible peut être reliée à plusieurs sources. bool True
scoring Barème de l'exercice. ('AllOrNothing', 'RightMinusWrong', 'CorrectItems') 'RightMinusWrong'

TODO : Une option strip ou skipinitialspace pour éliminer les espaces superflus dans matches.

TODO : Revoir les barèmes (Comment compter une source non reliée ? une cible non reliée ? etc.)

Exemples

Exemple 1 : Capitales

extends = /model/basic/matchlist.pl

question ==
Relier chaque pays à sa capitale.
==

matches ==
France,Paris
Italie,Rome
Allemagne,Berlin
Espagne,Madrid
==

Exemple 2 : Capitales

extends = /model/basic/matchlist.pl

question ==
Relier chaque pays à sa capitale.
==

separator = ";"

nbmatches = 4

matches ==
Allemagne;Berlin
Autriche;Vienne
Belgique;Bruxelles
Danemark;Copenhague
Espagne;Madrid
Finlande;Helsinki
France;Paris
Grèce;Athènes
Hongrie;Budapest
Irlande;Dublin
Italie;Rome
Norvège;Oslo
Pays-Bas;Amsterdam
Pologne;Varsovie
Portugal;Lisbonne
Roumanie;Bucarest
Royaume-Uni;Londres
Slovaquie;Bratislava
Suède;Stockholm
Suisse;Berne
==

Exemple 3 (avec une liste générée par un script)

extends = /model/basic/matchlist.pl

question ==
Relier chaque nombre à la décomposition qui lui est égale.
==

before ==
matches = []
for a in sample(range(10, 20), 4) :
    b = randint(1, a-1)
    c = a - b
    matches.append([str(a), f"{b} + {c}"])
==