AW: Kleines Problem mir VBA
25.09.2014 10:02:56
Alifa
Hi,
hier mein Ansatz, irgendwie klappt das noch nicht.
Gruß, Erhard
Option Explicit
'Von der Zahl N = 8 aus, kann man drei Operationen ausführen:
'N durch 2 teilen, (darf nur gewählt werden wenn N gerade ist),
'N mit 10 multiplizieren,
'N mit 10 multiplizieren und 8 zum Produkt zählen.
'Ziel ist es von der 8 aus zu jeder andere Zahl zu gelangen.
'Z.B: zu der 91:
'8, 4, 2, 28, 288, 144, 72, 728, 364,182, 91
'Wie erreicht man nun a) 58 und b) 59?
Sub Test2509014()'hier wird das Beispiel behandelt
Dim n0, n1, n2, n3, n4, n5, n6, n7, n8, n9
Dim z%, t!, p
Dim i0&, i1&, i2&, i3&, i4&, i5&, i6&, i7&, i8&, i9&
Cells.ClearContents
t = Timer
For i0 = 0 To 2
For i1 = 0 To 2
For i2 = 0 To 2
For i3 = 0 To 2
For i4 = 0 To 2
For i5 = 0 To 2
For i6 = 0 To 2
For i7 = 0 To 2
For i8 = 0 To 2
For i9 = 0 To 2
p = Array("/2", "*10", "*10+8")
n0 = Evaluate(8 & p(i1))
n1 = Evaluate(n0 & p(i2))
n2 = Evaluate(n1 & p(i3))
If n2 Mod 2 = 0 Then
n3 = Evaluate(n2 & p(i4))
ElseIf n3 Mod 2 = 0 Then
n4 = Evaluate(n3 & p(i5))
ElseIf n4 Mod 2 = 0 Then
n5 = Evaluate(n4 & p(i6))
ElseIf n5 Mod 2 = 0 Then
n6 = Evaluate(n5 & p(i3))
ElseIf n6 Mod 2 = 0 Then
n7 = Evaluate(n6 & p(i4))
ElseIf n7 Mod 2 = 0 Then
n8 = Evaluate(n7 & p(i5))
ElseIf n8 Mod 2 = 0 Then
n9 = Evaluate(n8 & p(i6))
If n8 = 91 Then
z = z + 1
Cells(1, 1).Resize(, 8) = Array("n0", "n1", "n2", "n3", "n4", "n5", "n6", _
"n7", "n8", "n9")
Cells(z + 2, 1).Resize(, 8) = Array(n0, n1, n2, n3, n4, n5, n6, n7, n8, n9)
End If: End If
Next: Next: Next: Next: Next: Next: Next: Next: Next: Next:
MsgBox Round(Timer - t, 1)
End Sub