Code : Tout sélectionner
palindrome(ph):={
local s;
if (s==0) return ph;
s:=size(ph)-1;
return concat(palindrome(tail(ph)),ph[0]);
}
Code : Tout sélectionner
palindrome(ph):={
local s;
s:=size(ph);
if (s==0) return ph;
return concat(palindrome(tail(ph)),ph[0]);
}
palindrome("esopeReStEeluparCetteCraPulEetseReposE")
C'est peut-être une façon ludique (fin d'année oblige) de commencer la récursivité au lycée
peut-être même en seconde, pourquoi pas en couple avec le français (Oulipo) ?
Sur le mode récursif, je donnerais (futurs premièreS et au delà):
Code : Tout sélectionner
AlenversRec(phrase):={
local s;
s:=size(phrase);
si s==0 alors retourne phrase
sinon
retourne concat(AlenversRec(tail(phrase)),phrase[0])
fsi;
}
Code : Tout sélectionner
Alenvers(phrase):={
local s,k,temp,phraseinv;
temp:=phrase;
phraseinv:=NULL;
si size(phrase)==0 alors retourne phrase fsi;
pour k de 1 jusque size(phrase) faire //repeter
s:=size(temp);
phraseinv:=concat(phraseinv,temp[s-1]);
temp:=suppress(temp,s-1);
fpour; //jusqua s==1
retourne phraseinv;
}
Une remarque mineure: en faisant debug(Alenvers("esopeReStEeluparCetteCraPulEetseReposE"))
j'ai noté qu'en passant la souris sur cacher on lit Ajoute une variable au "watch" (?)
Quelques idées en vrac:
(Alenvers@Alenvers)("luc") pour vite oublier l'image de luc et parler de composée, de symétrie
Chercher les mots français invariants comme rever
Compléter le programme pour savoir si un mot ou une phrase est un palindrome
Pour tous niveaux voir les nombres de Lychrel
De quoi s'amuser en apprenant...