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)
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)
---------------------------------------
---------------------------------------
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 !
-
Jerome BriotRédacteur/ModérateurJe reproche pas... je constatele 05/11/2012 à 11:22
-
Jerome BriotRédacteur/ModérateurListe des membres ayant trouvé la bonne réponse
- tanguy4724 (défi + question subsidiaire)
- Winjerome (défi + question subsidiaire)
le 19/10/2012 à 14:24 -
Jerome BriotRédacteur/ModérateurVoici la solution
-------------------------
Cette suite mathématique est la suite de ConwayEnvoyé par Wikipedia
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
42function 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
)
-------------------------le 05/11/2012 à 9:48 -
tanguy4724Membre habituétu nous repproches un plagiat ou une recherche internet fructueuse ayant mené à une inspiration soudaine?le 05/11/2012 à 11:01
-
tanguy4724Membre habituéet moi je confesse.
un autre défi pour nous racheter?le 05/11/2012 à 11:33 -
Jean DumoncelModérateurJe 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!)le 05/11/2012 à 11:33
-
tanguy4724Membre 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é...le 05/11/2012 à 11:40