Developpez.com - Rubrique MATLAB

Le Club des Développeurs et IT Pro

Défi n°7 : Et maintenant la suite !

Venez relever les défis MATLAB.

Le 2012-10-19 14:24:38, par Jerome Briot, Rédacteur/Modérateur


joint à ce message, vous trouverez un fichier suite.zip contenant une fonction MATLAB qui, comme son nom l'indique, génère une suite mathématique (assez connue).

La fonction est contenue dans un fichier p que vous pouvez l'exécuter sans risque sous MATLAB, faite moi confiance.

La fonction s'utilise comme ceci :

Code :
suite(N)
avec N le nombre d'itérations pour générer les éléments de la suite, donc un entier supérieur à 0.

Sans argument d'entrée, la fonction affiche le résultat pour 10 itérations comme ceci :
1 
11 
21 
1211 
111221 
312211 
13112221 
1113213211 
31131211131221 
13211311123113112211 
11131221133112132113212221
---------------------------------------

Saurez-vous identifier le fonctionnement de la suite et écrire un code MATLAB permettant d'obtenir et d'afficher les termes de la suite de 1 à N (comme le fait la fonction suite)

---------------------------------------

Pour permettre à tout le monde de participer, soumettez-moi vos réponses par MP en insérant votre code MATLAB entre balises [code][/code]

---------------------------------------

Je donnerai dans cette discussion la liste des membres ayant la bonne réponse.

---------------------------------------

Question subsidiaire :

Saurez-vous trouver le nom de cette suite
Envoyez-moi votre réponse à cette dernière question par MP.

---------------------------------------

Bonne participation !

  Discussion forum
7 commentaires
  • Jerome Briot
    Rédacteur/Modérateur
    Je reproche pas... je constate
  • Jerome Briot
    Rédacteur/Modérateur
    Liste des membres ayant trouvé la bonne réponse



  • Jerome Briot
    Rédacteur/Modérateur
    Voici la solution

    -------------------------

    Cette suite mathématique est la suite de Conway

    Envoyé par Wikipedia
    La suite de Conway est une suite mathématique inventée en 1986 par le mathématicien John Horton Conway, initialement sous le nom de « suite audioactive »1. Elle est également connue sous le nom anglais de Look and Say (« regarder et dire »). Dans cette suite, un terme se détermine en annonçant les chiffres formant le terme précédent.
    Source : http://fr.wikipedia.org/wiki/Suite_de_Conway

    La fonction "cachée" dans le code p était celle-ci :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    function suite(N)
    
    if nargin==0
        N = 10;
    end
    
    if N<=0
        error('N doit etre un entier superieur a 0')
    end
    
    clc
    
    s = 1;
    
    fprintf('%d', s);
    fprintf('\n');
    
    for m = 1:N
        
        k(1) = 1;
        u(1) = s(1);
        i = 1;
        
        for n = 2:numel(s)
            
            if s(n)==s(n-1)
                k(i) = k(i)+1;
            else
                i = i+1;
                k(i) = 1;
                u(i) = s(n);
            end
            
        end
        
        s = [k;u];
        s = s(:).';
        
        fprintf('%d', s);
        fprintf('\n');
        
    end
    Aurélien avait donné une version plus compacte sur son blog "MATLAB pour les geeks" ici : Suite de Conway (dont ce sont largement inspirés tanguy4724 et Winjerome )

    -------------------------

  • tanguy4724
    Membre habitué
    tu nous repproches un plagiat ou une recherche internet fructueuse ayant mené à une inspiration soudaine?
  • tanguy4724
    Membre habitué
    et moi je confesse.

    un autre défi pour nous racheter?
  • Jean Dumoncel
    Modérateur
    Je connaissais aussi le billet d'aurélien du coup, j'ai préféré ne pas participer... (en fait je n'ai pas réussi à modifier suffisamment le code d'Aurélien pour que ça passe inaperçu... apparemment vous non plus!)
  • tanguy4724
    Membre habitué
    effectivement, nous non plus.

    En même temps, améliorer un code c'est intéressant, mais l'inverse l'est moins

    Et le code d'Aurélien me semble déjà optimisé...