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

C Discussion :

Défi


Sujet :

C

  1. #141
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Ti-R
    +1

    On compare un peu l'incomparable... mais c'est comme cela

    Cela vaut aussi pour la lecture/écriture du flux.... chacun à suivit sa méthode, peut être certaines sont plus optimisées que d'autres...
    Oui, mais ça c'est acceptable, tant qu'on traite bien l'entrée comme un flux (et pas comme quelque chose de seekable par exemple ).
    Le problème c'est qu'effectivement on compare l'incomparable : le script de Lunixinclar et le mien ne traite pas du tout du même problème en fait... La solution de Pirus est assez impressionante parce qu'elle traite tout de même plus que les cas extrèmement simple, tout en étant la plus rapide ! Mais mon parser est presque un parser html (complètement pourri mais c'est une autre question) de façon à pouvoir traiter des cas comme les commentaires ou les scripts, tandis que Lunixinclar reconnaît quatre chaîne de caractères précisément et ne se préoccupe pas du tout du contexte de ces chaînes.

    C'est pourquoi je proposais qu'on indique ce que traite notre parser, et éventuellement qu'on ait une page de test un peu complète qui démontre les capacités réelles.

    --
    Jedaï

  2. #142
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    (et pas comme quelque chose de seekable par exemple ).
    C'est enlevé dans la v5

    Oui c'est sur que d'afficher les vrais capacités des parseurs seraient vraiment sympas.

    [EDIT]
    Tchetch a publié une page de test, pourquoi ne pas l'utiliser comme référence et/ou la modifier, compléter.
    [/EDIT]

  3. #143
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    C'est bon.

    * page de résultats mise à jour. Les tests sur windows sont stupéfiants.

    http://perso.wanadoo.fr/2007/resultats.htm
    Je ne les commente pas les résultats parlent d' eux-même

    * outils dispos enfin pas encore
    puisque 2-3 trucs à régler voir +bas:

    * sur win32 ya pas pirus pour l' instant: pirus quelle est la ligne de commande pour compiler sous windows? On a le même IDE/compilateur ça devrait marcher. gcc -o pirus.exe pirus.c ne veut pas Aussi j'ai formaté l'en-tête, mets-le à jour stp tu gagneras 3 lignes.

    * Tchetch: dans ton code j'ai ajouté une directive pré-processeur sur unlocked et changé la portabilité à Linux/Win32 ça marche bien.

    * ajouté Ti-R-3.c et Lsinclar-Jedai.c, en Win32 only. Mais c'était avant de voir le post de Jedai d' aujourd'hui donc re-belotte.

    * Ti-R: je récupère le nouveau Ti-R-5 et l' ajoute dès que possible

    * Je vais ajouter un test de versatilité: tester chaque appli sur la page HTML type de Tchetch, et en déduire un pourcentage de liens trouvés. Cette page est très représentative ou il y a mieux?

  4. #144
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Sont bizzare les résultats sous Windows....

    Il y a un proc AMD et un autre Intel... et sur le même proc ?

  5. #145
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut aide pour un programme d'affichage de la chute d'une balle
    je suis un jeune etudiant en progammation au senagal et je n'arrive pas a decolé avec moi programme . on m'a demander de consevoir un programme avec affichage graphique qui represente la chute d'une balle de couleur rouge avec emission d'un son a chaque fois que la balle touche le sol et qui dois s'arreter . le programme doit etre separer en deux fonctions bien distincte qui sont : la fonction descente et la fonction monter. je conmpte enormement sur votre aide . a plus et merci .

  6. #146
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    les resultats parlent d'eux meme ... ca y'est, je suis vexé -je precise pour les plus bourrus, je plaisante-
    y'as un facteur 12 entre le plus rapide et le moins rapide (moi).

    reprendre la page de test de Tchetch pour tester la validité des algos et mettre une "note" du style 23/25 cas (le cas 16 et 17 on avait dis qu'on gerait pas ... si ? ). histoire de voir en un seul coup d'oeil ce que font les parsers.

    Citation Envoyé par prado
    on m'a demander de consevoir un programme avec affichage graphique qui represente la chute d'une balle ....
    et donc tu t'est dis que la discussion qui cause d'un parseur html, c'etait l'endroit ideal pour demander de l'aide.
    d'accord ...
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  7. #147
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    J'ai modifié ma page de test pour les cas, elle est un peu mieux structurée et traite une bonne série de cas. Il y a en tout 74 liens qui devraient être detectés. Mon propre parseur en trouve 67, il lui manque le support pour les la séparation des balises et des attributs par une tabulation ...
    Fichiers attachés Fichiers attachés
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  8. #148
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ok, si le guillemet simple est accepté (même si c'est pas vraiment courant sur internet), autant que je rajoute le support.

    [EDIT] Après vérification, les deux reconnaissent parfaitement la page de test de Tchetch

    --
    Jedaï
    Fichiers attachés Fichiers attachés

  9. #149
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    je pose une question bete. mais bon ...

    dans la page de test de Tchetch (corrigé !) on vois:
    <!-- *test separation balise-attribut->retour a la ligne -->
    c'est autorisé l'utilisation d'un > autre que pour "fermer" une balise? (parce que si oui ... ça me pose quelques problemes ^^)
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  10. #150
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ce n'est pas ma page de test, mais celle de Tchetch, et l'emploi de > est interdit sauf pour fermer une balise (interdit aussi bien dans les attributs que dans le texte, mais c'est plus ou moins respecté... ), sauf dans les commentaires comme ici. En effet un commentaire doit toujours être terminé par "-->" et pas simplement par ">" et on peut mettre autant de ">" que l'on veut à l'intérieur.

    NB : Mon premier code marche un peu "par hasard" sur cette page de test, par exemple il ne marcherait pas si le javascript était dans des balises img ou a au lieu de balises div (alors que bien sûr mon parser actuel marcherait parfaitement dans ces cas là).

    --
    Jedaï

  11. #151
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    Bonjour, j'ai pas eu le courage de lire les 10 pages, alors je sais pas ou vous en êtes, mais j'ai fais un programme vraiment débutant, qui marche pour les liens(a href) et pas pour les <img.

    Voila le code... (je signale que le contenu source a parser est dans un fichier texte appelé aliceadsl.txt.)
    Ps : le Code marche mais je pense qu'i est vraiment pas a ce que vous demandiez, les normes du défi et tout.... comme je vous dis j'ai lu que la premiere page !

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    void parse(char contenu[]);
     
    int main(int argc, char *argv[])
    {
      char *contenu=NULL, chaine[1000]= " ";
      FILE *fichier=NULL;
      long longueurFichier=0;
      fichier=fopen("aliceadsl.txt", "r");
      if(fichier!=NULL)
      {                
     
                       fseek(fichier, 0, SEEK_END);
                       longueurFichier=ftell(fichier);
                       rewind(fichier);
                       printf("Longueur : %ld\n", longueurFichier);
                       contenu=malloc(sizeof(char) * longueurFichier);
                       while(!feof(fichier))
                       {
                                    fread(chaine,1000, 1,fichier);
                                    strcat(contenu, chaine);
                                    memset(chaine, 0, 1000);
     
     
                       }
     
      fclose(fichier);   
      }
     
     
      parse(contenu);
      getchar();
      return 0;
    }
     
    void parse(char contenu[])
    { 
         char *lien=NULL, breakCmd=0, *pointeurLien=NULL;
         char *copieContenu=NULL, *pointeurContenu=NULL;
     
         while(!breakCmd)
         {
     
     
         copieContenu=malloc(sizeof(char) * strlen(contenu));
         strcpy(copieContenu, contenu);
     
         lien=strstr(contenu, "<a ");
     
         if(lien==NULL)
         {               
                          breakCmd=1;
     
         }
         else
         {
     
         strtok(lien, ">");
         if(strstr(lien, "href=")!=NULL)
         {
         pointeurLien=strstr(lien, "href=");
         pointeurLien+=strlen("href=");
         printf("\n\nlien : %s\n\n", pointeurLien);
         }
         else
         {
         pointeurLien=lien;
         printf("faux lien : %s\n", pointeurLien);
         }
     
         pointeurContenu=strstr(copieContenu, pointeurLien);
         pointeurContenu=pointeurContenu + strlen(pointeurLien); 
         contenu[0]='\0';
         strcpy(contenu, pointeurContenu);
     
         pointeurContenu=NULL;
         lien=NULL;
         pointeurLien=NULL;
         }
         free(copieContenu);
     
         }
         printf("Fin parsing!\n");
    }
    Enfin je suis content il donne pas de mauvais résultats !

    ++

  12. #152
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Citation Envoyé par Ti-R
    Sont bizzare les résultats sous Windows....

    Il y a un proc AMD et un autre Intel... et sur le même proc ?
    Si tu fais des tests sur le même proc n' hésites pas à les partager!

    Le "problème" ne vient pas du processeur: ils tournent tous les deux à 1100MHz.
    Par contre le système d' exploitation est différent: pas le même chargeur d' exécutable,
    pas la même gestion des I/O. Et pas le même compilateur, même les exécutables ne font pas la même taille parce qu'ils ont des formats différents (ELF/PE).

    C'est pour ça qu'il y a deux tableaux de résultats distincts.

    Certains éminents universitaires ont fait multitude de tests pour voir si windows est vraiment meilleur que linux. "Nos" tests bizarres confortent certaines de leurs conclusions, tout en amenant des hypothèses intéressantes concernant la portabilité.

  13. #153
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par lapras123
    Enfin je suis content il donne pas de mauvais résultats !

    ++
    Bah si, il en donne plein... Par ailleurs les exigences sont qu'on travaille sur un flux, donc pas de seek(), éventuellement tu peux tout bufferiser, mais ça n'est pas vraiment la philosophie de la chose.

    --
    Jedaï

  14. #154
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Dark_Ebola
    c'est autorisé l'utilisation d'un > autre que pour "fermer" une balise? (parce que si oui ... ça me pose quelques problemes ^^)
    Désolé, je pensais avoir corrigé tout ça. En fait à la base presque tous les commentaires avec un > dans le texte, ensuite je me suis dit que ça pouvait être perturbant alors je les ai supprimé, mais j'en ai loupé un.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  15. #155
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Un petit exemple utilisant KMP. L'avantage devrait surtout être marquant si on ajoute un jeu de donnée sans aucun URL...
    Fichiers attachés Fichiers attachés
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  16. #156
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    Heu je précise que je peux tres bien ne pas utiliser les fichiers pour ca :
    aliceadsl.txt contient juste le contenu a analyser , je pouvais tres bien directement faire mon char contenu[]="les liens..............";
    lol et sinon un flux c'est ujn flux entrant, sortant etc... j'ai pas bien pigé le principe ! On pêux m'expliquer ce qu'es travailler sur un "flux" ?

  17. #157
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    Jean-Marc:
    on m'as toujours deconseillé d'utiliser des noms de variables qui sont deja des noms de fonction: cf read() (meme si y parait quele compilo s'y retrouve)

    sinon; ce serait bien si tout le monde faisait un effort pour commenter son code ... fin, je dis ça ... je dis rien

    je preparerais une version optimisé de mon code une fois qu'on auras des regles claires ... la je me demande si c'est vraiment la peine. (tout de façon suis pas en etat de reflechir)
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  18. #158
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Dark_Ebola
    (meme si y parait quele compilo s'y retrouve)
    Non le compilateur ne s'y retrouve pas si une variable porte le même non qu'une fonction, mais dans le code de Jean-Marc.Bourguet il n'y a pas de fonction read (fonction POSIX).

  19. #159
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Dark_Ebola
    Jean-Marc:
    on m'as toujours deconseillé d'utiliser des noms de variables qui sont deja des noms de fonction: cf read() (meme si y parait quele compilo s'y retrouve)
    Je me vois mal chercher à éviter tous les noms qui ont été utilisé quelque part. J'évite normalement les noms de la bibliothèque standard, mais ne fais pas d'effort au dela. Et je préfère masquer un nom et utiliser un nom descriptif.

    sinon; ce serait bien si tout le monde faisait un effort pour commenter son code ... fin, je dis ça ... je dis rien
    Si on ne connais pas l'algo, il faut chercher une référence (par exemple ici) et si on le connais, je crois que le code est clair. Arg... je vois que je me suis trompé dans les commentaire, c'est bien Boyer-Moore que j'utilise, pas Knuth–Morris–Pratt.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  20. #160
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    Vous avez donc un algo que vous appliquez en C pour récupérer les liens ?
    Pourquoi pas faire ca a coup de strstr, strtok... ?

Discussions similaires

  1. Défi Septembre 2004
    Par grishka dans le forum XSL/XSLT/XPATH
    Réponses: 30
    Dernier message: 26/12/2005, 17h37
  2. [défi n°1] limite de javascript en calcul?
    Par javatwister dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 20/08/2005, 15h02
  3. Somme totale... Défi !
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 04/08/2005, 21h03
  4. Défi
    Par ti-ben dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 03/02/2005, 06h39

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