J'ai une variable qui contient le contenu triés des six dés. Exemple :
Code : Tout sélectionner
Roll = "133355"
Code : Tout sélectionner
Roll = "133355"
Code : Tout sélectionner
Procedure R0(Roll.s)
Protected Result, n, p
For n = 1 To 6
If FindString(Roll, LSet(Str(n), 3, Str(n)))
p = n
Break
EndIf
Next
If p <> 0
For n = 1 To 6
If n <> p
If FindString(Roll, LSet(Str(n), 2, Str(n)))
Result = #True
EndIf
EndIf
Next
EndIf
ProcedureReturn Result
EndProcedure
Debug R0("222456") ;#False
Debug R0("222446") ;#True
falsam a écrit :J'ai une variable qui contient le contenu triés des six dés
Non non au contraire. Une petite procédure pour trier un string. J'en ai besoin pour mon jeu de desMarc56 a écrit :Ooops, désolé![]()
Code : Tout sélectionner
Procedure.s SortString(Buffer.s)
Protected Dim ArrayBuffer.s(0)
Protected l = Len(Buffer)-1
Protected n
ReDim ArrayBuffer(l)
For n = 0 To l
ArrayBuffer(n) = Mid(Buffer, n+1, 1)
Next
SortArray(ArrayBuffer(), #PB_Sort_Ascending)
Buffer = ""
For n = 0 To l
Buffer + ArrayBuffer(n)
Next
ProcedureReturn Buffer
EndProcedure
Debug SortString("126215")
Code : Tout sélectionner
If CreateRegularExpression(0, "([0-6])\1\1([0-6])\2")
Debug MatchRegularExpression(0, "133355")
Else
Debug RegularExpressionError()
EndIf
Dans ma structure de test, le full est testé en premier avant de passé au carré, brelan, etc ...Marc56 a écrit :Le problème est que cette expr prend aussi un carré, donc le plus simple est de la faire précéder par une autre qui recherche ce carré
Code : Tout sélectionner
"([0-6])\1\1([0-6])\1|([0-6])\1([0-6])\1\1"
Code : Tout sélectionner
Procedure.s SortString(Buffer.s)
Protected NewList Buffer.s()
ResetList( buffer() )
For i = 0 To 4
AddElement (buffer())
buffer() = Mid(Buffer, i+1, 1)
Next
SortList(buffer(),#PB_Sort_Ascending)
Buffer = ""
ForEach Buffer()
Buffer + Buffer()
Next
ProcedureReturn Buffer
EndProcedure
Debug SortString("13313")
Code : Tout sélectionner
Procedure.s SortString(Buffer.s)
Protected NewList Buffer.s()
ResetList( buffer() )
For i = 0 To 4
AddElement (buffer())
buffer() = Mid(Buffer, i, 1)
Next
SortList(buffer(),#PB_Sort_Ascending)
Buffer = ""
ForEach Buffer()
Buffer + Buffer()
Next
Debug "Buffer : " + buffer
ProcedureReturn Buffer
EndProcedure
Procedure CheckFull(t.s)
Protected.s a,b,c,d,e
a.s = Left(t,1)
b.s = Mid(t,2,1)
c.s = Mid(t,3,1)
d.s = Mid(t,4,1)
e.s = Right(t,1)
If a = b And a = c And d = e And a <> e
ProcedureReturn 1
ElseIf a = b And c = d And c = e And a <> e
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
Je suis daccord avec ce brave KCCKwai chang caine a écrit :C'est vraiment un grand malade le mec qu'a inventé les regex