::
Avec la commande wims listcomplement, si la liste initiale comporte plusieurs fois le même objet, la liste finale contiendra chaque objet une seule fois.
Voici une autre façon de faire pas plus courte que la votre qui permet d’enlever l’item se trouvant à une place fixée. Elle utilise que \list[3] permet de récupérer le 3-ième item d’une liste et la concaténation 2 listes. Lorsqu’on concatène 2 listes si une des listes est vide, il y aura une virgule de trop, d’où la dernière instruction pour enlever les items vides.
\text{ list1 = wims(makelist x for x = 2 to 5) }
\integer{nb=items(\list1)}
\integer{c=randint(1..\nb)}
\text{list2= \list1[1..(\c-1)],\list1[(\c+1)..-1]}
\text{list2=wims(nonempty item \list2)}
\statement{liste initiale : \list1 et liste sans le \c-ieme item : \list2 }
NB : si votre but est de pouvoir tirer au hasard des items tous différents dans une liste d’objets, il y a la slib data/random.
-
Cette réponse a été modifiée le il y a 2 mois et 4 semaines par
bernadette.