begin process at 2008 08 22 00:47:01
1 229 731 membres
3 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SUPER ALGO ANAGRAMMES


Information sur la source

Catégorie :Texte Niveau : Initié Date de création : 14/04/2003 Date de mise à jour : 16/04/2003 16:29:47 Vu / téléchargé: 4 415 / 651

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

Description

Ben j'ai eu l'idée en reprenant une source qui a été postée juste avant. La source est totalement différente, et celle-ci est beaucoup plus rapide (sur mon XP 1900+) :
- 0.069 secondes pour 40320 mots (mot de 8 lettres) en compilé
- 0.188 secondes pour 40320 mots (mot de 8 lettres) sous l'IDE
- 0.600 secondes pour 362880 mots (mot de 9 lettres) en compilé
- 1.767 secondes pour 362880 mots (mot de 9 lettres) sous l'IDE  

Conclusion

Merci de tester cette source, de me dire les problèmes ou même de l'améliorer (ce que je suis en train de faire) !!!    
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Bricomix le 14/04/2003 10:33:57

    J'oubliais : la source qui m'a donné l'idée est ici : http://www.vbfrance.com/article.aspx?Val=8409

    Comme vous pourrez le voir le code est totalement différent

  • signaler à un administrateur
    Commentaire de stevebelgium le 14/04/2003 15:20:54

    Sorry , English ...

    Nice program . If you want to speed up !
    Maybe a suggestion . I think dat REDIM = SLOW

    Solution = predict the number of combinations

    3 characters = 3! = 3*2*1 = 6 combinations
    4 characters = 4! = 4*3*2*1 = 24 combinations

    here is the code . Have fun !

    Option Explicit
    Private ForbIndex() As Integer, AWordsNum As Long, TempWord As String

    Public Sub CreateAnagram(ByVal StrWord As String, ByRef WordsTable() As String, Optional ByVal StartChr As Integer)
        
        Dim Numer_of_combinations  As Integer
        
        Numer_of_combinations = fac(Len(StrWord))
        
        ReDim WordsTable(Numer_of_combinations - 1)
        
        CreateAnagram2 StrWord, WordsTable()
        
    End Sub
    Public Sub CreateAnagram2(ByVal StrWord As String, ByRef WordsTable() As String, Optional ByVal StartChr As Integer)
    If StartChr = 0 Then
        ReDim ForbIndex(1 To Len(StrWord))
        StartChr = 1: AWordsNum = 0
    End If
    Dim ChrIndex As Integer, VerifForb As Integer, CreateWord As Integer
    For ChrIndex = 1 To Len(StrWord)
        For VerifForb = 1 To StartChr - 1
            If ForbIndex(VerifForb) = ChrIndex Then GoTo NoTest
        Next VerifForb
        ForbIndex(StartChr) = ChrIndex
        TempWord = TempWord & Mid$(StrWord, ChrIndex, 1)
        If StartChr < Len(StrWord) Then
            CreateAnagram2 StrWord, WordsTable(), StartChr + 1
        ElseIf StartChr = Len(StrWord) Then
            'ReDim Preserve WordsTable(AWordsNum)
            WordsTable(AWordsNum) = TempWord
            AWordsNum = AWordsNum + 1
        End If
        TempWord = Left$(TempWord, Len(TempWord) - 1)
    NoTest:
    Next ChrIndex
    End Sub

    Function fac(getal As Long) As Long
        
        Dim res As Long
        
            If getal = 0 Then
                fac = 1
            Else
                res = 1
                While getal > 0
                    res = res * getal
                    getal = getal - 1
                Wend
                fac = res
            End If
                
    End Function

  • signaler à un administrateur
    Commentaire de Alain Proviste le 14/04/2003 19:05:18 administrateur CS

    En effet ce code est infiniment plus rapide que le mien.
    Dla balle.

  • signaler à un administrateur
    Commentaire de Bricomix le 14/04/2003 19:24:22

    En effet stevebelgium c'est intelligent. Je va le modifier tout de suite (et qq'autres ameliorations p'tet aussi). Alain Proviste : donne des comparaisons entre le tiens et le miens niveau temps.

  • signaler à un administrateur
    Commentaire de Kaisermann le 14/04/2003 19:43:13

    Il est assez rapide ton prog. Ton proc aussi, on voit la différence entre un 1900+ et mon 1700+, 6,65 s pour un mot de 9 lettres sous l'ide !

  • signaler à un administrateur
    Commentaire de Bricomix le 14/04/2003 19:52:46

    Ben le miens c'est un 1700+ @ 1600MHz

  • signaler à un administrateur
    Commentaire de Bricomix le 14/04/2003 20:11:54

    ce qui donne a peu près un 1900+. Je viens d'updater la source, les temps sont divisés par 1/3. Grace a l'amelioration de la gestion du tableau ForbIndex() et a l'idée de stevebelgium.

  • signaler à un administrateur
    Commentaire de Alain Proviste le 14/04/2003 20:26:54 administrateur CS

    C trop bon lol. Pas la peine de tenter de faire une comparaison. Je vais améliorer ma source et on en reparle. ( J'ai été stupide de passer par un tablo temporaire, toi t'as été moins con sur ce coup. )

    GOGOGO de plus en plus vite.

  • signaler à un administrateur
    Commentaire de Alain Proviste le 14/04/2003 20:27:12 administrateur CS

    Et Kaisermann t'es qu'un sale traitre lol

  • signaler à un administrateur
    Commentaire de Bricomix le 14/04/2003 20:51:22

    Alain Proviste > pour 8 lettres, mon algo se montre (sur mon ordi) 1448x plus rapide !

  • signaler à un administrateur
    Commentaire de stevebelgium le 14/04/2003 21:16:30

    Hi , back again . Great to hear it goes fater ! GO GO ... :-)
    Still have a little idea , working on it ... Maybe even faster !

  • signaler à un administrateur
    Commentaire de apxa le 15/04/2003 11:44:39

    config: XP 1600+, 512mo
    mot: ANAGRAMME
    compilé (0.94 s)
    ide       (2.42 s)

    hehe ;)

  • signaler à un administrateur
    Commentaire de Bricomix le 15/04/2003 12:51:09

    config : XP1900+ (XP1700+ compilé), 512mo
    mot : ANAGRAMME
    compilé : 0.99s (?)
    ide : 2.30s (ah)

    le temps du compilé vient p'tet de windows ME quand a l'ide c'est interpreté donc le processeur fait toute la difference !

  • signaler à un administrateur
    Commentaire de Bricomix le 15/04/2003 13:28:38

    J'ai fait une update, et maintenant regardez les nouveaux temps !

  • signaler à un administrateur
    Commentaire de Alain Proviste le 16/04/2003 19:05:24 administrateur CS

    J'ai voulu refaire le miens, puis au final juste avant de la publier je me suis aperçu qu'il était la dernière version du tiens. Je vois pas l'intêret de publier deux foix la même source donc...
    C'est vrai n'empeche que passer par tant de tablo c'était n'importe quoi de ma part.

    Bon travail Bricomix.

  • signaler à un administrateur
    Commentaire de Bricomix le 17/04/2003 10:39:08

    Alain P : merci !

  • signaler à un administrateur
    Commentaire de Alain Proviste le 17/04/2003 16:51:25 administrateur CS

    Un truc rigolo à noter : j'ai recompilé ton algo en QB4.5 ( Basic pour dos pour les incultes ) ça va encore plus vite.

  • signaler à un administrateur
    Commentaire de Florent le 22/04/2003 16:50:43

    Comme je disait, j'espère que fana des chiffres et des lettres va passer par là....
    VOYELLE

  • signaler à un administrateur
    Commentaire de Alain Proviste le 11/05/2004 01:11:18 administrateur CS

    hmmm je travail actuellement sur un algo semblable mais amélioré,
    qui donnerait toutes les combinaisons de x caractères parmi n lettres :
    abc : 2 parmi 3 : ab ac ba ca bc cb
    A toi de voir si tu peux me massacrer publiquement une nouvelle fois.

  • signaler à un administrateur
    Commentaire de Bricomix le 11/05/2004 19:00:57

    Je suis sur un truc important ;)

    J'essaierai d'y repenser :)

  • signaler à un administrateur
    Commentaire de kridek le 20/10/2005 01:45:53

    Une petite info pour vos concours ...
    Certains mots sont répétés plusieurs fois ...
    ex aba -> aba;aab;baa;baa;aba,aab ....

    Mais bon nul n'est parfait.

    Et bravo pour cet exe

  • signaler à un administrateur
    Commentaire de Alain Proviste le 22/10/2005 14:13:54 administrateur CS

    c'est plus rapide d'appliquer un algo pour enlever les doublons après ce traitement

  • signaler à un administrateur
    Commentaire de apxa le 22/10/2005 17:02:17

    config: Pentium 4 3ghz, 1.25go
    mot: ANAGRAMME
    compilé (0.504 s)
    ide     (1.298 s)

    hehe ;)

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS