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

Python Discussion :

Programmer une séquence afin de trouver une redondance


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut Programmer une séquence afin de trouver une redondance
    Bonsoir je bute en python sur une boucle for et un slice
    Je veux parcourir un tableau par séquence avec un slice délimité par i:j je ne vois pas comment l’écrire en python
    J’ai farfouiller sur le net je me suis perdu
    Merci d’avance

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par s2a07 Voir le message
    J’ai farfouiller sur le net je me suis perdu
    Et tu n'as pas farfouillé dans un tutoriel Python ?
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab=..... (une liste de trucs) .....
    for i in range(0, len(tab), 5): print(tab[i:i+5])
    Accessoirement je ne vois pas le rapport entre ta demande et ton titre (où est la séquence? où est la redondance?). Autant les titres très généralisés tels que "problème Python" ou "j'y arrive pas" c'est nul, autant les titres spécifiques mais dont la spécificité indiquée n'a rien à voir avec le topic lui-même c'est tout aussi nul.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut
    merci j'y avais pensé a cette implémentation , autant pour moi je cherche a programmer une bande qui parcourt le texte avec des slices
    je suis novice avec les slices et la syntaxe python j'ai eté stresse de voir des slice indicé d'ou mon appel au secours
    merci pour votre aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut !
    Je ne sais pas trop si tu utilises numpy ou pas mais voici un exemple :
    https://pyspc.readthedocs.io/fr/latest/05-bases/08-tableaux_numpy.html#Parcourir-le-contenu-d'un-tableau-numpy

    Sinon j'ai pensé que set() pourrait peut-être t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> list1 = [1,2,3,4,5,6]
    >>> list2 = [4,5,6,7,8,9]
    >>> set(list2) & set(list1)
    {4, 5, 6}
    >>> set([1,2,1,5,1,1,2,2,4,2,3])
    {1, 2, 3, 4, 5}

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Sinon j'ai pensé que set() pourrait peut-être t'aider :
    Comment tu verrais ça pour trouver une redondance ??? set(list1) & set(list2) fait ressortir les éléments communs à "list1" et "list2" mais "élément commun" ne signifie pas "redondance"...

    Citation Envoyé par LeNarvalo Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> set([1,2,1,5,1,1,2,2,4,2,3])
    {1, 2, 3, 4, 5}
    Mouais... le "1" et "2" sont manifestement redondants mais ta solution ne les fait pas ressortir tant que ça... Ou alors on ne parle pas de la même "redondance"...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t=[1,2,1,5,1,1,2,2,4,2,3]
    [x for x in set(t) if t.count(x) > 1]
    [1, 2]

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Comment tu verrais ça pour trouver une redondance ??? set(list1) & set(list2) fait ressortir les éléments communs à "list1" et "list2" mais "élément commun" ne signifie pas "redondance"...


    Mouais... le "1" et "2" sont manifestement redondants mais ta solution ne les fait pas ressortir tant que ça... Ou alors on ne parle pas de la même "redondance"...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t=[1,2,1,5,1,1,2,2,4,2,3]
    [x for x in set(t) if t.count(x) > 1]
    [1, 2]
    Oui c'est pas faux ! J'ai juste donné des exemples de l'utilisation que l'on peut faire de set(), vu que je ne sais pas vraiment comment est son tableau.
    Je me suis imaginé un truc en 2D.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup j'ai trouve un code source qui m'as aide mais je bute sur savefig a quel endroit et ou dois je stocker cet image et pourquoi rien ne s'affiche? pour information le code fonctionne sur linux
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    import random
    import matplotlib.pyplot as plt
     
     
    def isprefixe(texte,mot,i):
        B = True
        j = 0
        while (j < len(mot)) and B:
            if texte[i+j] != mot[j]:
                B = False
                j +=1
                return B
     
     
     
    def cherche_occurrences(texte, mot):
     
        occ = [] # liste des occurrences
        for i in range(len(texte)-len(mot)+1):
            if isprefixe(texte,mot,i):
                occ.append(i)
                return occ
     
     
    def texte_alea(n):
        lettres = "abcdefghijklmnopqrstuvwxyz"
        texte = ""
        for i in range(n):
            texte = texte + lettres[random.randint(0,25)]
            return texte
     
    def texte_alea2(n):
        texte= ""
        for i in range(n):
            texte += random.choice("abcdefghijklmnopqrstuvwxyz")
            return texte
     
            #print(’{}’.format(nombre_moyen_apparition(10000,’llg’,1000)))  
     
     
    def nombre_moyen_apparition(n,mot,m):
     
        compteur = 0
        for i in range(m):
            texte = texte_alea2(n)
            compteur += len(cherche_occurrences(texte,mot))
            return compteur / m
     
        X=[]
        Y=[]
        for n in range (200,30000,200):
            X.append(n)
            Y.append(nombre_moyen_apparition(n,mot,m))
            plt.plot(X,Y)
            plt.savefig(’pb_py003-fig1.eps’)
            plt.show()

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par s2a07 Voir le message
    Merci beaucoup j'ai trouve un code source qui m'as aide
    Et tu l'as étudié ce code source où tu l'as juste recopié sans y rien piger?

    Citation Envoyé par s2a07 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def isprefixe(texte,mot,i):
        B = True
        j = 0
        while (j < len(mot)) and B:
            if texte[i+j] != mot[j]:
                B = False
                j +=1
                return B
    Il n'y a rien qui te choque dans cette fonction? Style un incrément qui ne se fait que sous certaine condition (boucle infinie si la condition n'arrive pas)...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def isprefixe(texte, mot, i):
    	return texte[i:len(mot)+i] == mot

    Citation Envoyé par s2a07 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def texte_alea(n):
        lettres = "abcdefghijklmnopqrstuvwxyz"
        texte = ""
        for i in range(n):
            texte = texte + lettres[random.randint(0,25)]
            return texte
    Un peu pareil. Un return dès la première itération, on peut se demander à quoi sert donc la boucle !!!
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import string
    def texte_alea(n):
    	return "".join(random.sample(string.ascii_lowercase, n))

    Citation Envoyé par s2a07 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def nombre_moyen_apparition(n,mot,m):
     	compteur = 0
    	for i in range(m):
    		texte = texte_alea2(n)
    		compteur += len(cherche_occurrences(texte,mot))
    		return compteur / m
     
    	X=[]
    	Y=[]
    	for n in range (200,30000,200):
    		X.append(n)
    		Y.append(nombre_moyen_apparition(n,mot,m))
    		plt.plot(X,Y)
    		plt.savefig("pb_py003-fig1.eps")
    		plt.show()
    Mouais ok. On est en droit de se demander où t'as trouvé cette bouse. Mais de ton côté si tu ne sais pas lire une boucle, commence par apprendre Python quoi.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut
    j'ai récuperé ce code a cet adresse http://alain.troesch.free.fr/2015/Fi.../corrinfo8.pdf en python je maitrise uniquement les listes les tuples et les dictionnaires et sickit learn a premier impression je n'ai rein compris a ce code d'ou mon appel au secour

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par s2a07 Voir le message
    je n'ai rein compris a ce code d'ou mon appel au secour
    Les exercices associés à un cours n'ont pour but que de vous faire pratiquer les notions abordées dans le chapitre correspondant.
    C'est rarement du bon Python puisqu'on vous force à comprendre des constructions élémentaires qu'on écrit peu souvent (en dehors de ces cours pour débutant).

    Maintenant, si vous voulez apprendre à programmer, il ne faut pas juste récupérer la solutions des exercices mais essayer de les faire par vous même en vous aidant du contenu du cours.

    - W

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par s2a07 Voir le message
    j'ai récuperé ce code a cet adresse http://alain.troesch.free.fr/2015/Fi.../corrinfo8.pdf
    Oui, ben c'est ça. Ton code...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def isprefixe(texte,mot,i):
        B = True
        j = 0
        while (j < len(mot)) and B:
            if texte[i+j] != mot[j]:
                B = False
                j +=1
                return B
    ... ne correspond pas à ce code...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def isprefixe(texte,mot,i):
        B = True
        j = 0
        while (j < len(mot)) and B:
            if texte[i+j] != mot[j]:
                B = False
            j +=1
        return B
    ...présenté dans le document que tu cites. Et tout le reste est à l'avenant. T'as effectivement recopié sans y rien piger. Et tu ne sais même pas à quoi servent les indentations en Python, alors que c'est la toute première chose qu'on apprend !!!

    Citation Envoyé par s2a07 Voir le message
    en python je maitrise uniquement les listes les tuples et les dictionnaires
    Généralement la "maitrise" de ces éléments passe au préalable par la "maitrise" des boucles... mais admettons.

    Citation Envoyé par s2a07 Voir le message
    je n'ai rein compris a ce code d'ou mon appel au secour
    Malheureusement on ne pourra pas apprendre Python à ta place. Enfin si, on pourrait réécrire ici la base d'un programme Python (les indentations, les boucles, etc) mais puisque c'est déjà écrit dans les tutos...

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut
    je savais developpe en python en 2012 mais avec l'age j'ai oublie je suis plus algorithmicien mainteant et theoricien j'ai perdu de ma verve c'est la vie
    en tout cas merci ce qui me bloque c'est juste la ligne savefig quand je regarde la librairie ils parlent du nom du fichier pas du chemin ou est stocker le fichier
    je ne comprends pas ce que fais la fonction
    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
     
    def nombre_moyen_apparition(n,mot,m):
     
        compteur = 0
        for i in range(m):
            texte = texte_alea2(n)
            compteur += len(cherche_occurrences(texte,mot))
            return compteur / m
     
        X=[]
        Y=[]
        for n in range (200,30000,200):
            X.append(n)
            Y.append(nombre_moyen_apparition(n,mot,m))
            plt.plot(X,Y)
            plt.savefig(’comparaison.png’)
            plt.show()

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut

    Le répertoire dans lequel est stocké le fichier est le répertoire courant (du processus utilisateur). Ce qui n'a rien à voir avec la programmation (mais avec le système de fichier, le répertoire par défaut,...)

    - W

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par s2a07 Voir le message
    ils parlent du nom du fichier pas du chemin ou est stocker le fichier
    Un "nom de fichier" implique toujours son chemin. Si je parle de "/etc/passwd", il s'agit du fichier "passwd" situé dans le dossier "/etc" (nom absolu). Si je parle de "etc/passwd" il s'agit du fichier "passwd" situé dans un dossier "etc" situé lui-même dans le dossier où je me trouve au moment où je lance la commande (nom relatif). Et si je parle de "passwd" il s'agit du fichier "passwd" situé dans le dossier où je me trouve au moment où je lance la commande (équivalent de "./passwd" avec dossier "." mis par défaut). Là encore un nom relatif. Et cela n'est pas une notion Python mais une notion OS (savoir nommer/repérer un fichier dans son OS).

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 431
    Points : 0
    Points
    0
    Par défaut
    le plus simple pour résoudre le problème initial est de programmer une bande avec des slices que l'on fait traverser sur le texte le problème est peut on considérer les slices comme une bande de parcours
    et comment l'écrire j'ai l'algo mais concrètement et syntaxiquement je bute

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par s2a07 Voir le message
    le plus simple pour résoudre le problème initial
    Vous n'avez jamais décrit le problème a résoudre, vous râler juste de ne pas arriver à écrire la solution que vous envisagez...
    Et le code que Sve@r a déjà posté ne le fait pas, c'est que ce n'est peut être pas si simple. Peut être faudrait-il commencer avec ce qu'on a au départ et ce qu'on cherche à obtenir sur un ou plusieurs exemples simples?

    - W

  17. #17
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par s2a07 Voir le message
    et comment l'écrire j'ai l'algo mais concrètement et syntaxiquement je bute
    Heureusement qu'en dehors de la syntaxe tu maitrises le reste

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def redondance(pattern, texte):
    	cpt=0
    	l=len(pattern)
    	for i in range(len(texte) - l + 1):
    		if texte[i:i+l] == pattern: cpt+=1
    	return cpt
     
    print(redondance("abc", "tototabctotoabc"))
    Je pense qu'une regex intelligente fera 3 fois mieux en 3 fois moins de ligne mais j'ai la flemme de la chercher (JurassicPork?)

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Je pense qu'une regex intelligente fera 3 fois mieux en 3 fois moins de ligne mais j'ai la flemme de la chercher (JurassicPork?)
    Python sait déjà faire çà très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> "tototabctotoabc".count('abc')
    2
    >>>
    "compter les occurrences d'une chaine de caractères dans une autre" est si simple à dire que c'est pas sur que c'est ce que cherche à faire le PO...
    Après comment faire çà avec Python, c'est d'abord un algo. et personnellement, si je ne connaissait pas "count", j'écrirai cela plutôt sous la forme d'un automate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def redondance(pattern, texte):
        count = 0
        n = len(pattern)
     
        ix = 0
        for c in texte:
            if c == pattern[ix]:
                ix += 1
                if ix == n:
                    count += 1
                    ix = 0
            elif ix != 0:
                ix = 0
        return count
    note: pas testé.

    - W

  19. #19
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    salut,

    un exemple d'extraction des occurrences avec recouvrement via une regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import re
    >>> occurrences = lambda texte, mot: re.findall(r'(?=({}))'.format(mot), texte)
    >>> occurrences("abbabba", "abba")
    ['abba', 'abba']

  20. #20
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Python sait déjà faire çà très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> "tototabctotoabc".count('abc')
    2
    >>>
    Zut, en plus j'avais utilisé count() dans ce même topic mais là j'y ai pas pensé. Ceci dit, comme le PO avait parlé de "bandes de slices" ça a été la vision qui s'est imposée: un slice glissant.

    Citation Envoyé par wiztricks Voir le message
    "compter les occurrences d'une chaine de caractères dans une autre" est si simple à dire que c'est pas sur que c'est ce que cherche à faire le PO...
    Ouais mais comme avec lui rien ne semble simple...

    Citation Envoyé par wiztricks Voir le message
    Après comment faire çà avec Python, c'est d'abord un algo. et personnellement, si je ne connaissait pas "count", j'écrirai cela plutôt sous la forme d'un automate:
    En fait c'est nécessaire si on ne connait pas non plus le slice. Sinon mon algo suffit

    Citation Envoyé par wiztricks Voir le message
    note: pas testé.
    Pas besoin. Tant que la lettre en cours correspond à la lettre de l'indice intermédiaire on incrémente l'indice et si l'indice atteint la longueur du pattern on a trouvé une occurence. Et si entre temps la lettre diffère on remet l'indice intermédiaire au début. Ca semble cohérent.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 20h21
  2. Réponses: 4
    Dernier message: 20/02/2010, 03h40
  3. programmer une séquence d'images
    Par sino dans le forum C++Builder
    Réponses: 5
    Dernier message: 14/02/2006, 12h57
  4. Programmer une pause brève
    Par NeoMan dans le forum Assembleur
    Réponses: 14
    Dernier message: 28/04/2003, 02h59
  5. comment programmer une progressbar
    Par Choucas dans le forum Paradox
    Réponses: 3
    Dernier message: 13/11/2002, 12h07

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