IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Algorithmes et structures de données Discussion :

Trouver nombre de lettre distincte


Sujet :

Algorithmes et structures de données

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Trouver nombre de lettre distincte
    Bonjour,
    Je souhaiterais connaitre le nombre de lettre distincte dans un mot, mais je ne sais pas comment m'y prendre.

    Ex: STATUT --> 4 lettres distinctes

    Pourriez-vous m'aider ?

    Merci par avance

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Je vais essayer de t'aider en t'apportant mon avis en texte, à toi après de le formaliser algorithmiquement.

    Tu initialises un compteur à 0, tu crées un tableau vide, puis tu parcours ton mot lettre par lettre. A chaque fois que la lettre en cours n'est pas dans le tableau tu incrémente ton compteur et tu ajoutes la lettre dans le tableau.

    Remarques:
    -Attention si le mot est en minuscule et qu'ils possèdent des accents (ex: école) si tu veux compter le "é" et le "e" comme une seule lettre des tests seront nécessaires.

    En espérant t'avoir aidé.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Je vais essayer de t'aider en t'apportant mon avis en texte, à toi après de le formaliser algorithmiquement.

    Tu initialises un compteur à 0, tu crées un tableau vide, puis tu parcours ton mot lettre par lettre. A chaque fois que la lettre en cours n'est pas dans le tableau tu incrémente ton compteur et tu ajoutes la lettre dans le tableau.
    Vu que notre alphabet n'a que 26 lettres, on peut directement créer un tableau de 26 cases et mettre une croix dans la bonne case pour chaque lettre.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Vu que notre alphabet n'a que 26 lettres, on peut directement créer un tableau de 26 cases et mettre une croix dans la bonne case pour chaque lettre.
    C'est vrai, il gagnera un peu de temps, mais j'avais pris le parti de présenter une solution générale (si jamais un jour il travaille avec des pictogrammes chinois )
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    C'est vrai, il gagnera un peu de temps, mais j'avais pris le parti de présenter une solution générale (si jamais un jour il travaille avec des pictogrammes chinois )
    Certes. Quoiqu'en ne prenant qu'un bit par case, ca nous fait que 7500 octets pour stocker 60.000 idéogrammes. Ca reste acceptable.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Certes. Quoiqu'en ne prenant qu'un bit par case, ca nous fait que 7500 octets pour stocker 60.000 idéogrammes. Ca reste acceptable.
    Sauf qu'un idéogramme prend 3 octets à écrire (en UTF-8 2 si jamais on est en UTF-16) donc ça fait en fait 120.000 à 180.000 octets,ce qui reste certes raisonnable surtout si on garde le principe de ne stocker dans le tableau que les 3.000 à 5.000 idéogrammes les plus courants où là le stockage passe carrément entre 6.000 et 15.000 octets, après c'est juste si l'on a envie d'ergoter.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    Sous matlab on fait cela avec : [b,i,j]=unique('STATUT')

  8. #8
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour.
    Sous matlab on fait cela avec : [b,i,j]=unique('STATUT')
    Quel est l'intérêt au juste d'énoncer une syntaxe arbitraire dans un langage précis en partie Algorithme ?
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Sauf qu'un idéogramme prend 3 octets à écrire (en UTF-8 2 si jamais on est en UTF-16) donc ça fait en fait 120.000 à 180.000 octets
    Ça n'a aucun rapport. Quelque soit la méthode que tu utilises pour coder un caractère, tu n'as toujours besoin que d'un seul bit pour dire s'il est représenté au moins une fois ou pas.

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Tiens c’est marrant, je viens de mettre un petit message dans une file ouverte par la même question dans le forum Pascal > Lazarus.

    Ce qui m’amuse c’est qu’ici le titre du premier post est
    «Trouver nombre de lettre distincte »
    tandis que dans l’autre forum, il s’agit de
    «Chercher le nombre de lettres distinctes dans un mot »
    Le questionneur est plus optimiste dans ce forum ci.







    Je ne me risquerai pas à remettre mon post ici.
    Mais je me risque à donner une réponse sommaire à la question:
    Quel est l'intérêt au juste d'énoncer une syntaxe arbitraire dans un langage précis en partie Algorithme
    La question semble pertinente au premier abord. Mais elle ne l’est pas tout à fait, à mon avis.

    Pour moi , un algorithme dépend en partie, je dis bien en partie et non pas pour la majeure partie, du langage utilisé. Par exemple, quand j’ai lu
    Tu initialises un compteur à 0, tu crées un tableau vide, puis tu parcours ton mot lettre par lettre. A chaque fois que la lettre en cours n'est pas dans le tableau tu incrémente ton compteur et tu ajoutes la lettre dans le tableau.
    j’ai pensé: il n’est pas obligé d’incrémenter un compteur au fur et à mesure, il peut mesurer la taille du tableau une fois terminé l’examen du mot.

    Et puis immédiatement j’ai pensé que ce n’est possible que si le langage utilisé dispose d’un moyen d’obtenir rapidement la taille d’un tableau. Je me dis que pour un langage proche du hardawre, ce n’est pas évident que cette possibilité soit disponible. Je ne connnais pas assez les langages pour le savoir.

    Mais dans le principe, ce point dépend du langage non ?



    Ainsi, un algorithme dépend plus ou moins fortement des possibilités offertes par le langage utilisé. La conception d’un algorithme ne sera pas tout a fait de même nature selon qu’on utilise un langage du haut-niveau plus proche des mécanismes intellectuels naturels ou un langage qui se coltine avec le bas-niveau.

    Cette question
    Quel est l'intérêt au juste d'énoncer une syntaxe arbitraire dans un langage précis
    contient implicitement la notion qu’il existerait pour chaque problème un algorithme absolu, qui ne s’incarnerait qu’après coup dans un code écrit dans un langage donné. S’il existe une discipline qui s’appelle l’algorithmique, c’est bien parce que c’est en partie vrai. Mais je pense qu’il ne faut pas pousser trop loin cette idée, et qu’elle ne peut en tous cas pas être utilisée comme argument pour contester l’expression d’une remarque apparemment hors-sujet.

  11. #11
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Mais dans le principe, ce point dépend du langage non ?
    Ca n'a aucun rapport. Quelque soit le langage tu dois pouvoir mettre en oeuvre ce que tu dis. Le langage t'apportera plus ou moins de souplesse pour réaliser ce que tu veux (soit c'est déjà fourni soit il faut que tu codes plus ou moins).

    L'algorithme te décris les opérations pour résoudre ton problème (ou pour l'approcher s'il n'y a pas de solution toute faîtes). Quitte à avoir des opérations qui ne sont pas fournis dans le langage cible.

  12. #12
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Pour moi, et donc ça n'engage que moi, un algorithme est la manière de résoudre le problème d'un point de vue "théorique" c'est à dire en le faisant à la main.

    Dans la vie réelle on me donne un texte (donc un ensemble de symboles que je ne comprends pas forcément) et on me demande d'en compter les éléments distincts, qu'est-ce que je fais:

    Je prends mon beau crayon à papier et je note au fur et à mesure que je les rencontre chaque symbole nouveau en notant au fur et à mesure le compte d'où j'en suis.

    Après je suis d'accord avec certaines choses, c'est optimisable selon le contexte, plusieurs exemples:

    Si le texte est en français, je note de suite les 26 lettres.
    Selon la longueur du texte on peut aussi supprimer à chaque nouvelle lettre rencontrer, les autres occurences de cette lettre dans le texte (donc moins à parcourir au final)
    S'il n'y a pas trop de lettres distinctes, je peux ne les compter qu'à la fin (ce qui correspond à regarder la taille du tableau).

    Mon objectif était de donner une méthode compréhensible avant tout par un être humain pas par une machine, à lui ensuite de traduire sa compréhension selon son niveau d'expertise et les contraintes ou optimisation possible du langage souhaité.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

Discussions similaires

  1. Fonction de conversion de nombre en lettres
    Par david_chardonnet dans le forum Langage
    Réponses: 21
    Dernier message: 08/12/2021, 17h51
  2. [Lazarus] Chercher le nombre de lettres distinctes dans un mot
    Par StarFlor dans le forum Lazarus
    Réponses: 11
    Dernier message: 06/02/2010, 00h17
  3. Réponses: 5
    Dernier message: 10/02/2006, 10h02
  4. écrire un nombre en lettre
    Par dibak dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 19/05/2004, 11h27
  5. Comment compter le nombre de lettre identique ?
    Par divableue dans le forum ASP
    Réponses: 3
    Dernier message: 07/11/2003, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo