begin process at 2012 02 16 07:39:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > SUPER ALGO ANAGRAMMES

SUPER ALGO ANAGRAMMES


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :6 365 / 773

Auteur : Bricomix

Ecrire un message privé
Commentaire sur cette source (24)
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) !!!    

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture SCANNER DE PORTS ULTRA-RAPIDE V2 (150 PORTS / S) ;)
Source avec Zip Source avec une capture VBTOHTML V2 (PLEIN DE FONCTIONS ET RAPIDE !!)
Source avec Zip Source avec une capture CONVERTISSEUR DE CODE VB > HTML RAPIDE !
Source avec Zip Source avec une capture NET SCAN - SCANNER DE PORTS RAPIDE QUI MARCHE :-)
Source avec Zip Source avec une capture JEU DE DAMES MULTI (BEAU GRAPHIQUEMENT...)

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

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

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

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.

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.

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 !

Commentaire de Bricomix le 14/04/2003 19:52:46

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

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.

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.

Commentaire de Alain Proviste le 14/04/2003 20:27:12 administrateur CS

Et Kaisermann t'es qu'un sale traitre lol

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 !

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 !

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 ;)

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 !

Commentaire de Bricomix le 15/04/2003 13:28:38

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

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.

Commentaire de Bricomix le 17/04/2003 10:39:08

Alain P : merci !

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.

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

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.

Commentaire de Bricomix le 11/05/2004 19:00:57

Je suis sur un truc important ;)

J'essaierai d'y repenser :)

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

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

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 ;)

Commentaire de kazuhiko le 26/11/2008 15:16:14 8/10

Par simple curiosité, j'ai migré le programme en VS8.
L'algo est toujours aussi performant qu'en VB6, même un peu plus. Par contre VS8 convertit les fonctions PRINT en PrintLine ce qui a pour effet de multiplier par 10 les temps d'écriture, en remplacant par StreamWriter.WriteLine la performance est encore meilleure qu'avant. C'est toujours bon à savoir pour qui doit migrer des applications.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales