Yosue dijo:
Esta vez utilizamos Excel y Visual Basic para Aplicaciones por ser sencilla la búsqueda y no requiere mucho tiempo…
Public Sub Oblongo540()
Dim a(17), S1(16807), S2(16807), S3(16807), S4(16807), S5(16807), S6(16807)
t = 0
a(0) = 6: a(1) = 56: a(2) = 156: a(3) = 0: a(4) = 20: a(5) = 30: a(6) = 90: a(7) = 110
a(8) = 210: a(9) = 240: a(10) = 2: a(11) = 12: a(12) = 42: a(13) = 72: a(14) = 132: a(15) = 182
a(16) = 272
Rem primero
For i = 0 To 16
For j = 0 To 16
For k = 0 To 16
For l = 0 To 16
For m = 0 To 16
n = a(i) + a(j) + a(k) + a(l) + a(m)
DoEvents
If n = 540 Then
S1(t) = a(i)
S2(t) = a(j)
S3(t) = a(k)
S4(t) = a(l)
S5(t) = a(m)
If ((S1(t) <> S2(t)) And (S1(t) <> S3(t)) And (S1(t) <> S4(t)) And (S1(t) <> S5(t)) And (S2(t) <> S3(t)) And (S2(t) <> S4(t)) And (S2(t) <> S5(t)) And (S3(t) <> S4(t)) And (S3(t) <> S5(t)) And (S4(t) <> S5(t))) Then
t = t + 1
S6(t – 1) = (S1(t – 1) + 1) * (S2(t – 1) + 1) * (S3(t – 1) + 1) * (S4(t – 1) + 1) * (S5(t – 1) + 1)
Dist = True
For Z = 0 To t – 2
If (S6(Z) = S6(t – 1)) Then
t = t – 1
Dist = False
Exit For
End If
Next Z
If Dist Then
Rem En la Hoja 3 las soluciones
Hoja3.Cells(t + 1, 1).Value = S1(t – 1)
Hoja3.Cells(t + 1, 2).Value = S2(t – 1)
Hoja3.Cells(t + 1, 3).Value = S3(t – 1)
Hoja3.Cells(t + 1, 4).Value = S4(t – 1)
Hoja3.Cells(t + 1, 5).Value = S5(t – 1)
End If
End If
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Easy, verdad.




Deja un comentario