Conversion python en vb

Signaler
Messages postés
5
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
28 janvier 2010
-
chessman2
Messages postés
1
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
13 décembre 2008
-
je suis stupide ou j'ai des vers ou les deux, et peut-être même davantage
ça fait une journée que je tente de convertir ce pg python en VB avec un insuccès notoire et récurrent
HELP
merci

le corpus delicti est l'Algorithme de Karatsuba que j'ai trouvé en python et en serpentant sur le net.
j'aime déjà ce génial informaticien bilingue (python-VB) qui pourra m'aider à traduire

les def , % et == ne posent pas de pb, ce sont les calculs, parfois alphanumériques, parfois numériques, qui m'insupportent.

'max = 5

'def Split(l):
'  if l % 2 == 0:
'    return l / 2
'  Else:
'    return (l + 1) / 2

'def max(a, b):
'  if a > b:
'    return a
'  Else:
'    return b

'def mult(x, y):
 ' x = long(x)
'  y = long(y)
'  x_str = Str(x)
'  y_str = Str(y)
'  l1 = Len(x_str)
'  l2 = Len(y_str)
'  if (l1 < max and l2 < max):
'    return x * y
'  Else:
'    x_split = Split(l1)
'    y_split = Split(l2)
'    x1 = x[0,x_split]
'    x2 = x[x_split + 1,l1 - 1]
'    y1 = y[0,y_split]
'    y2 = y[y_split + 1,l2 - 1]
'    a = mult(x1, y1)
'    b = mult(x2, y2)
'    c = mult(x1 + x2, y1 + y2)
'    m = max(l1, l2)
'    d = (c - a - b) * 10**m
'    e = b**(2 * m)
'    Z = a + d + e
'    return z

'f = mult(x, y)

'Print '''The product of''',x,'''and''',y,'''is''',f,'''.'''

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
en gros (a affiner)

Private Function Mult(ByRef vsX As String, ByRef vsY As String) As String
Dim nLx As Long
Dim nLy As Long
Dim sX1 As String
Dim sX2 As String
Dim sY1 As String
Dim sY2 As String
Dim nA As Double
Dim nB As Double
Dim nC As Double
Dim nD As Double
Const K = 4
nLx = Len(vsX)
nLy = Len(vsY)
If (nLx <= K) Then
sX1 = "0"
sX2 = vsX
Else
sX1 = Left$(vsX, nLx - K)
sX2 = Right$(vsX, K)
If sX1 = "-" Then
sX1 = "0"
sX2 = "-" & sX2
End If
End If

If (nLy <= K) Then
sY1 = "0"
sY2 = vsY
Else
sY1 = Left$(vsY, nLy - K)
sY2 = Right$(vsY, K)
If sY1 = "-" Then
sY1 = "0"
sY2 = "-" & sY2
End If
End If

If sX1 "0" And sY1 "0" Then
nD = Val(vsX) * Val(vsY)
Else
nA = Mult(sX1, sY1)
nB = Mult(sX2, sY2)
nC = Mult(Val(sX1) - Val(sX2), Val(sY1) - Val(sY2))
nD = nA * 10 ^ (K * 2) + (nA + nB - nC) * 10 ^ K + nB
End If
Mult = FormatNumber(nD, 0, GroupDigits:=vbFalse)
End Function
Messages postés
5
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
28 janvier 2010

mille mercis
Messages postés
1
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
13 décembre 2008

top