Supprimer des éléments d’une liste : remove

### 6.42.27 Supprimer des éléments d’une liste : remove

remove a deux paramètres : une fonction booléenne f et une liste L.
remove enlève les éléments c de la liste L, qui vérifie f(c)=true.
On tape :

remove(x->(x>=2),[0,1,2,3,4,5])

On obtient :

[0,1]

On tape :

L:=[0,1,2,3,4,5])
L:=remove(x->(x>=2),L)

On obtient comme nouvelle valeur de L :

[0,1]

Remarque Pour faire la même chose avec une chaîne de catactères, par exemple : enlever tous les caractères d’une chaîne qui se trouvent après le caractère ch (par ex "m" selon l’alphabet.
On va écrire les fonction Enleve1 et Enleve2 : pour cela on a besoin des fonctions : ord, asc et char :

ord("a"),char(97)

On obtient :

97,"a"

On tape :

asc("abc"),char([97,98,99])

On obtient :

[97,98,99],"abc"

On utilise seq, on tape la fonction Enleve1 :

    Enleve1(chaine,ch):={
    local L,l:=length(chaine)-1;
    L:=remove(x->(ord(x)>ord(ch)),seq(chaine[k],k,0,l));
    return char(ord(L));
    }:;

ou bien on utilise asc et on tape la fonction Enleve2:

    Enleve2(chaine,ch):={
    local L,l:=length(chaine)-1;
    L:=remove(x->(x>ord(ch)),asc(chaine));
    return char(L);
    }:;

Puis on tape :

Enleve1("manitou","m")

On obtient :

"mai"

Ou on tape :

Enleve2("manitou","m") )

On obtient :

"mai"

Autre exemple : enlever tous les "a" d’une chaîne. On tape :

char(remove(ord("a"),asc("abracadabra"))

On obtient :

"brcdbr"