Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

[Défis][8] Voila les T, ohé !


Sujet :

Contribuez

  1. #1
    Rédacteur/Modérateur

    [Défis][8] Voila les T, ohé !


    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 -Visualiser dans une fenêtre à part
    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 -Visualiser dans une fenêtre à part
    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 -Visualiser dans une fenêtre à part
    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 :

    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  2. #2
    Expert confirmé
    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Rédacteur/Modérateur

    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é
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  4. #4
    Rédacteur/Modérateur

    Voici ma solution
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Candidat au Club
    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.

  6. #6
    Modérateur

    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 -Visualiser dans une fenêtre à part
    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
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !

###raw>template_hook.ano_emploi###