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 : 3034
Catégorie(s) : Chaîne de caractères, Regex
Langages dispo pour ce code :
- VB6, VBA



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...

{PHP} CHIFFRES EN LETTRES
cette source converti des chiffres en des chaines de caractère en toute lettre supporte jusqu'à 999...

{Python} PROGRAMME POUR LES MOTS CROISÉS
voici un petit programme très simple qui ouvre un dico et demande à l'utilisateur un mot avec des es...

{C / C++ / C++.NET} RECHERCHE D'ANNAGRAMMES
Un programme qui retrouve des mots à partir de lettres qu'on lui donne. Ca fait longtemps que je ne...

{C# / C#.NET} YREGEXTER - THE REGEX TESTER
Bon voilà après une petite pause une source que je pense utile a la publication par ici ;) En-fai...

{JAVA / J2EE} NOMBRES PREMIERS PAR LE CRIBLE D'ERATOSTHÈNE VERSION OPTIMISÉE
Pour trouver tous les nombres premiers de 2 à Max, le principe est le suivant : 1. Construire l'ens...

{Visual Basic, VB6, VB.NET, VB 2005} TRADUIRE DES GROS CHIFFRES EN LETTRES AVEC CORRECTION ORTOGRAPHIQUE
Encore une version, mais celle-ci accepte des valeures jusqu'aux quadrillions et la correction orto...

{Visual Basic, VB6, VB.NET, VB 2005} TESTER LE NIVEAU DE SÉCURITÉ D'UN MOT DE PASSE
Bonjour à toutes et tous, Présentation : Dans une partie de mon TFE, lorsqu'un utilisateur cré...

{Delphi} UN RAMI AVEC DES LETTRES
nspiré par un jeu de table (sans plateau), ce jeu, qui se joue soit en solitaire soit contre l'ordin...

{Flash} - STARWORDS -
StarWords est un jeu de réflexion dont le but est de trouver des mots français rapidement dans la gr...