Les Snippets

Connexion

Tester si un (ou plusieurs) mot peut être composé à partir d'un jeu de lettres donné

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 23/06/2008 09:47:00 et initié par Renfield [Liste]
Date de mise à jour : 24/06/2008 14:36:23
Vue : 5590
Catégorie(s) : Chaîne de caractères, Regex
Langage sélectionné : VB6
Langages dispo pour ce code :
- VB6, VBA
- Voir tous les langages pour ce code snippet



Langage : VB6 , VBA
Date ajout : 23/06/2008
Posté par Renfield [Liste]
DateMAJ : 24/06/2008

Option Explicit
    
Private Type SafeArray1
   cDims As Integer
   fFeatures As Integer
   cbElements As Long
   cLocks As Long
   pvData As Long
   cElements As Long
   lLbound As Long
End Type
    
Private Const FADF_AUTO = &H1
Private Const FADF_STATIC = &H2
Private Const FADF_FIXEDSIZE = &H10
    
Private Declare Function ArrPtr Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
     
Private Function IsWordCoumpoundOf(ByRef vsWord As String, ByRef vsLetters As String, Optional ByVal vbCanReuseLetters As Boolean = False) As Boolean
Dim xbCount(128) As Integer
Dim xbBuffer() As Byte
Dim tArray As SafeArray1
Dim i As Long
   With tArray
       .cDims = 1
       .cbElements = 1
       .fFeatures = FADF_AUTO Or FADF_STATIC Or FADF_FIXEDSIZE
       CopyMemory ByVal ArrPtr(xbBuffer), VarPtr(tArray), 4

       .cElements = LenB(vsWord)
       .pvData = StrPtr(vsWord)
       For i = 0 To .cElements - 1 Step 2
           If vbCanReuseLetters Then
               xbCount(xbBuffer(i)) = -1
           Else
               xbCount(xbBuffer(i)) = xbCount(xbBuffer(i)) - 1
           End If
       Next i
          
       .cElements = LenB(vsLetters)
       .pvData = StrPtr(vsLetters)
       For i = 0 To .cElements - 1 Step 2
           If vbCanReuseLetters Then
               xbCount(xbBuffer(i)) = 0
           Else
               xbCount(xbBuffer(i)) = xbCount(xbBuffer(i)) + 1
           End If
       Next i
       CopyMemory ByVal ArrPtr(xbBuffer), 0&, 4
   End With
      
   IsWordCoumpoundOf = True
   For i = 0 To UBound(xbCount)
       If xbCount(i) < 0 Then
           IsWordCoumpoundOf = False
           Exit For
       End If
   Next i
End Function 
Remarque :
MsgBox IsWordCoumpoundOf("HERITIERE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", True)
MsgBox IsWordCoumpoundOf("HERITIERE", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ")
MsgBox IsWordCoumpoundOf("HERITIERE", "ANORRENHEUTQDEIIS")

Snippets en rapport avec : Mots, Composer, Ensemble, Tester, Lettres



Codes sources en rapport avec : Mots, Composer, Ensemble, Tester, Lettres

{Delphi} CONVERTION DE CHIFFRES EN LETTRES
ce n'est pas une grande application ..bien sure !, mais un petit exemple particulier qui peut etre u...

{C# / C#.NET} RESOLVER DU JEUX DE L'EMISSION DES CHIFFRES ET DES LETTRES DE FRANCE 2
Inspiré de l'emission des chiffres et des lettres. Ce programme est capable de trouver la combinaiso...

{Javascript / DHTML} COMPTEUR DE MOTS
J'ai fait ceci un peu à la va-vite, vous m'en excuserez. Il s'agit donc vraiment d'une application e...

{Visual Basic, VB6, VB.NET, VB 2005} COMPTEUR DE LETTRES ALPHABÉTIQUES
Cette application permet de compter les lettres de l'alphabet utilisé dans un texte quelconque. Et c...

{Visual Basic, VB6, VB.NET, VB 2005} DONNER LE NOMBRE DE CARACTÈRES DE L'ALPHABET CONTENU DANS UN TEXTE
ce code n'a rien d'extraordinnaire il donne le nombre de caractères contenu dans un texte successive...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHE DE MOTS DANS UN DICTIONNAIRE
Ce petit code permet de trouver un mot dans un fichier contenant le dictionnaire et ensuite en tapan...

{Visual Basic, VB6, VB.NET, VB 2005} GÉNÉRATEUR DE GRILLES DE MOTS MÉLÉS
Il s'agit de chercher des mots (français ou anglais) cachés dans une grille générée aléatoirement. ...

{Visual Basic, VB6, VB.NET, VB 2005} COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE
Ce petit programme donne le nombre de mots qui se trouvent dans un texte et ensuite affiche les mots...

{Visual Basic, VB6, VB.NET, VB 2005} [VBA] CHRONOMOTS
Jeu de lettres en français. A la façon du Boggle, vous devez trouver un max de mots à partir d'un ti...

{C# / C#.NET} ENSEMBLE D'ENTIERS NATURELS (MANIPULATION ET OPÉRATIONS ARITHMÉTIQUES)
voici ici la version finale de mon programme pour la manipulation des entiers naturels ... j'ai es...