Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005
-
14 avril 2003 à 10:33
cs_kazuhiko
Messages postés3Date d'inscriptionjeudi 15 septembre 2005StatutMembreDernière intervention 3 mars 2009
-
26 nov. 2008 à 15:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_kazuhiko
Messages postés3Date d'inscriptionjeudi 15 septembre 2005StatutMembreDernière intervention 3 mars 2009 26 nov. 2008 à 15:16
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.
apxa
Messages postés188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 avril 2009 22 oct. 2005 à 17:02
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 22 oct. 2005 à 14:13
c'est plus rapide d'appliquer un algo pour enlever les doublons après ce traitement
kridek
Messages postés1Date d'inscriptionjeudi 20 octobre 2005StatutMembreDernière intervention20 octobre 2005 20 oct. 2005 à 01:45
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
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 11 mai 2004 à 19:00
Je suis sur un truc important ;)
J'essaierai d'y repenser :)
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 11 mai 2004 à 01:11
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.
cs_Florent
Messages postés53Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 novembre 2005 22 avril 2003 à 16:50
Comme je disait, j'espère que fana des chiffres et des lettres va passer par là....
VOYELLE
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 17 avril 2003 à 16:51
Un truc rigolo à noter : j'ai recompilé ton algo en QB4.5 ( Basic pour dos pour les incultes ) ça va encore plus vite.
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 17 avril 2003 à 10:39
Alain P : merci !
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 16 avril 2003 à 19:05
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.
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 15 avril 2003 à 13:28
J'ai fait une update, et maintenant regardez les nouveaux temps !
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 15 avril 2003 à 12:51
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 !
apxa
Messages postés188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 avril 2009 15 avril 2003 à 11:44
config: XP 1600+, 512mo
mot: ANAGRAMME
compilé (0.94 s)
ide (2.42 s)
hehe ;)
stevebelgium
Messages postés180Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 7 juin 20031 14 avril 2003 à 21:16
Hi , back again . Great to hear it goes fater ! GO GO ... :-)
Still have a little idea , working on it ... Maybe even faster !
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 14 avril 2003 à 20:51
Alain Proviste > pour 8 lettres, mon algo se montre (sur mon ordi) 1448x plus rapide !
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 14 avril 2003 à 20:27
Et Kaisermann t'es qu'un sale traitre lol
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 14 avril 2003 à 20:26
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.
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 14 avril 2003 à 20:11
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.
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 14 avril 2003 à 19:52
Ben le miens c'est un 1700+ @ 1600MHz
cs_Kaisermann
Messages postés6Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention27 mai 2003 14 avril 2003 à 19:43
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 !
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 14 avril 2003 à 19:24
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.
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 14 avril 2003 à 19:05
En effet ce code est infiniment plus rapide que le mien.
Dla balle.
stevebelgium
Messages postés180Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 7 juin 20031 14 avril 2003 à 15:20
Sorry , English ...
Nice program . If you want to speed up !
Maybe a suggestion . I think dat REDIM = SLOW
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
Bricomix
Messages postés340Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention14 février 2005 14 avril 2003 à 10:33
26 nov. 2008 à 15:16
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.
22 oct. 2005 à 17:02
mot: ANAGRAMME
compilé (0.504 s)
ide (1.298 s)
hehe ;)
22 oct. 2005 à 14:13
20 oct. 2005 à 01:45
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
11 mai 2004 à 19:00
J'essaierai d'y repenser :)
11 mai 2004 à 01:11
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.
22 avril 2003 à 16:50
VOYELLE
17 avril 2003 à 16:51
17 avril 2003 à 10:39
16 avril 2003 à 19:05
C'est vrai n'empeche que passer par tant de tablo c'était n'importe quoi de ma part.
Bon travail Bricomix.
15 avril 2003 à 13:28
15 avril 2003 à 12:51
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 !
15 avril 2003 à 11:44
mot: ANAGRAMME
compilé (0.94 s)
ide (2.42 s)
hehe ;)
14 avril 2003 à 21:16
Still have a little idea , working on it ... Maybe even faster !
14 avril 2003 à 20:51
14 avril 2003 à 20:27
14 avril 2003 à 20:26
GOGOGO de plus en plus vite.
14 avril 2003 à 20:11
14 avril 2003 à 19:52
14 avril 2003 à 19:43
14 avril 2003 à 19:24
14 avril 2003 à 19:05
Dla balle.
14 avril 2003 à 15:20
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
14 avril 2003 à 10:33
Comme vous pourrez le voir le code est totalement différent