IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Défi n°8 : voila les T ohé !
Venez relever les défis MATLAB

Le , par Jerome Briot

230PARTAGES

0  0 


Un nouveau défi avec un titre de saison

Voici un extrait des paroles d'une chanson que je vous invite à enregistrer dans un fichier texte nommé mylittlegirl.txt :

Hey, little girl
Black and white and right and wrong
Only live inside a song, I will sing to you
You don't ever have to feel lonely
You will never lose any tears
You don't have to feel any sadness
When you look back on the years
How can I look you in the eyes?
And tell you such big lies
The best I can do is try to show you
How to love with no fear
My little girl

You've gone and stole my heart and made it your own
You stole my heart and made it your own
Le défi va consister à trouver des statistiques autour des apparitions de la lettre T dans le texte.
La casse n'étant pas prise en compte, les minuscules et majuscules seront confondues.
Les résultats prendront en compte à la fois T et t.

Vous devez donc créer une fonction MATLAB qui lit le texte de la chanson contenu dans le fichier et qui détermine :

  • le nombre total de lettres T (ou t) dans le texte
  • le nombre de lettres T (ou t) pour chaque ligne
  • le nombre total de mot commençant par la lettre T (ou t)
  • le nombre total de mot finissant par la lettre T (ou t)


Il n'y aucune restriction sur les techniques.
Vous pouvez utiliser toutes les solutions que vous voulez.

Vous écrirez votre code dans un fichier nommé voilalest_PSEUDO.m et dont le prototype de la fonction sera :

Code : Sélectionner tout
function [nb_total_T, nb_T_par_ligne, nb_mot_deb_T, nb_mot_fin_T] = voilalest_PSEUDO
En replaçant PSEUDO par votre pseudo DVP et où :

  • nb_total_T : un scalaire
  • nb_T_par_ligne : un vecteur de dimension 1 x nb_lignes ou nb_lignes x 1
  • nb_mot_deb_T : un scalaire
  • nb_mot_fin_T : un scalaire


Postez vos solutions à la suite de cette discussion.

Vous pourrez donc simplement exécuter les commandes suivantes pour valider vos résultats :

Code : Sélectionner tout
1
2
3
4
>> assert(nb_total_T==27)
>> assert(all(nb_T_par_ligne==[2;2;1;2;1;2;1;1;1;4;2;2;0;3;3]))
>> assert(nb_mot_deb_T==11)
>> assert(nb_mot_fin_T==8)
ou si votre version de MATLAB ne supporte par la fonction assert, vous pourrez vérifier les égalités comme ceci :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>> nb_total_T==27

ans =

     1

>> all(nb_T_par_ligne==[2;2;1;2;1;2;1;1;1;4;2;2;0;3;3])

ans =

     1

>> nb_mot_deb_T==11

ans =

     1

>> nb_mot_fin_T==8

ans =

     1
Bon courage

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

Question subsidiaire

Saurez-vous répondre aux questions suivantes ?

  • Déterminer le nombre d'apparition de chaque caractère dans le texte à l'exception des caractères de fin de ligne et des espaces
  • Tracer l'histogramme de ces apparitions.
  • Pour chaque bâton de l'histogramme tracé, l’étiquette des abscisse devra être la lettre correspondante.


Vous trouverez une idée du tracé dans l'image attachée à cette discussion

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

Amusez-vous bien... ou pas

Et si vous avez besoin de vous détendre entre deux lignes de code :


Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de duf42
Expert confirmé https://www.developpez.com
Le 18/07/2013 à 16:34
Si je puis me permettre, je ne suis pas tout à fait d'accord avec tes chiffres:
Code : Sélectionner tout
1
2
3
4
5
 
>> assert(nb_total_T==27) 
>> assert(all(nb_T_par_ligne==[2;2;1;2;1;2;1;1;1;4;2;2;0;3;3])) 
>> assert(nb_mot_deb_T==11) 
>> assert(nb_mot_fin_T==8)
Et voici donc en pièce jointe le code qui m'a permit d'y parvenir.

Duf
0  0 
Avatar de Jerome Briot
Rédacteur/Modérateur https://www.developpez.com
Le 18/07/2013 à 17:42
Citation Envoyé par duf42 Voir le message
Si je puis me permettre, je ne suis pas tout à fait d'accord avec tes chiffres:
C'est corrigé
0  0 
Avatar de Jerome Briot
Rédacteur/Modérateur https://www.developpez.com
Le 19/07/2013 à 12:08
Voici ma solution
0  0 
Avatar de FDvlpmt
Candidat au Club https://www.developpez.com
Le 12/08/2013 à 11:46
Salut, amusant comme jeu, un peu comme cody ...
Je me suis bien amusé sur le graphique, cela faisait des années que je n'en avais pas fait.
0  0 
Avatar de
https://www.developpez.com
Le 13/08/2013 à 23:13
Bonsoir,

Une solution un peu originale utilisant les commandes dynamiques (?@cmd).

On peut remarquer que les don't ne passent pas au test classique du début de mot :
Code : Sélectionner tout
regexp('don''t ', '\<t') % 5 plutôt que vide
enfin peut-on réellement considérer que ce n'est pas un autre mot ?
C'est en tout cas le choix qui semble être fait selon les assert
0  0