Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: _katze_ en 16 Junio 2011, 05:43 am



Título: [Simple - reto] Iteraciones
Publicado por: _katze_ en 16 Junio 2011, 05:43 am
Hola a todo bueno para que agamos algo y sea mas divertido propongo lo siguiente solo con iteraciones....

dado dicha secuencia de numeros
Código:
1 15 10 5 0 2 15 10 5 0 3
devemos realizar una iteracion que nos de esa secuencia...simple pero al que se le valla ocurriendo mas lo vamos haciendo,, espero que tenga futuro el pos ::)


Título: Re: [Simple - reto] Iteraciones
Publicado por: 79137913 en 16 Junio 2011, 14:05 pm
HOLA!!!

Código
  1. Private Function RetoIteraciones(Items As Long) As Long()
  2.    Dim AuxArr() As Long
  3.    Dim CT       As Long
  4.    Dim X        As Long
  5.  
  6.    ReDim AuxArr(Items - 1)
  7.  
  8.    X = Items - 1
  9.  
  10.    Do Until X < 4
  11.        CT = CT + 1
  12.        AuxArr(Items - X - 1) = CT
  13.        AuxArr(Items - X) = 15
  14.        AuxArr(Items - X + 1) = 10
  15.        AuxArr(Items - X + 2) = 5
  16.        AuxArr(Items - X + 3) = 0
  17.        X = X - 5
  18.    Loop
  19.  
  20.    If Not X < 0 Then
  21.        CT = CT + 1
  22.        AuxArr(Items - X - 1) = CT
  23.        If X > 3 Then
  24.            AuxArr(Items - X + 3) = 0
  25.            AuxArr(Items - X + 2) = 5
  26.            AuxArr(Items - X + 1) = 10
  27.            AuxArr(Items - X) = 15
  28.        ElseIf X > 2 Then
  29.            AuxArr(Items - X + 2) = 5
  30.            AuxArr(Items - X + 1) = 10
  31.            AuxArr(Items - X) = 15
  32.        ElseIf X > 1 Then
  33.            AuxArr(Items - X + 1) = 10
  34.            AuxArr(Items - X) = 15
  35.        ElseIf X > 0 Then
  36.            AuxArr(Items - X) = 15
  37.        End If
  38.    End If
  39.  
  40.    RetoIteraciones = AuxArr
  41.  
  42. End Function

GRACIAS POR LEER!!!


Título: Re: [Simple - reto] Iteraciones
Publicado por: _katze_ en 16 Junio 2011, 19:09 pm
un poco mas simple pero funciona de igual manera....aver si tienes otra man

Código
  1. '1 15 10 5 0 2 15 10 5 0 3
  2. Dim i As Integer
  3. Dim j As Integer
  4.  
  5. For i = 1 To 3
  6.  
  7. Debug.Print i
  8. If i = 3 Then Exit For
  9. For j = 15 To 0 Step -5
  10. Debug.Print j
  11. Next j
  12.  
  13. Next i
  14.  


Título: Re: [Simple - reto] Iteraciones
Publicado por: 79137913 en 16 Junio 2011, 19:25 pm
HOLA!!!

un poco mas simple pero funciona de igual manera....aver si tienes otra man

Código
  1. '1 15 10 5 0 2 15 10 5 0 3
  2. Dim i As Integer
  3. Dim j As Integer
  4.  
  5. For i = 1 To 3
  6.  
  7. Debug.Print i
  8. If i = 3 Then Exit For
  9. For j = 15 To 0 Step -5
  10. Debug.Print j
  11. Next j
  12.  
  13. Next i
  14.  

 :¬¬ Ese codigo no continua la secuencia, solo escribe lo que esta arriba.

Aca una manera mas simple:
debug.print "1 15 10 5 0 2 15 10 5 0 3"            '           :¬¬ :¬¬ :¬¬ :¬¬

Vos hiciste el reto, pero creo que deberiamos armar una funcion que funcione con la formula de la secuencia indicada, no que escriba solo eso....

Osea tu codigo devuelve solo 11 items de la secuencia.
El codigo que arme devuelve de 1 a 162447352 items.

Entendes¿?

GRACIAS POR LEER!!!


Título: Re: [Simple - reto] Iteraciones
Publicado por: BlackZeroX en 16 Junio 2011, 20:45 pm
.

Este codigo sigue la secuencia hasta n Longitud dada.

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim v As Variant
  6.    For Each v In iteraccion(20)
  7.        Debug.Print v
  8.    Next
  9. End Sub
  10.  
  11. Public Function iteraccion(ByVal llen As Long) As Long()
  12. Dim i       As Long
  13. Dim c       As Long
  14. Dim t       As Long
  15. Dim vares() As Long
  16.    llen = (llen - 1)
  17.    ReDim vares(0 To llen)
  18.    c = 1
  19.    For i = 0 To llen Step 5
  20.        vares(i) = c: t = i + 1
  21.        If (t < llen) Then
  22.            vares(t) = 15: t = t + 1
  23.            If (t < llen) Then
  24.                vares(t) = 10: t = t + 1
  25.                If (t < llen) Then
  26.                    vares(t) = 5: t = t + 1
  27.                    If (t < llen) Then
  28.                        vares(t) = 0: c = c + 1
  29.                    End If
  30.                End If
  31.            End If
  32.        End If
  33.    Next i
  34.    iteraccion = vares()
  35. End Function
  36.  
  37.  

... de una manera mas simple.

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim v As Variant
  6.    For Each v In iteraccion(21)
  7.        Debug.Print v
  8.    Next
  9. End Sub
  10. Public Function sets(ByVal lval As Long, ByRef vaArr() As Long, ByVal index As Long, ByVal lub As Long) As Long
  11.    If Not ((index And &H80000000) = &H80000000) Then
  12.        If (index <= lub) Then
  13.            vaArr(index) = lval
  14.            sets = (index + 1)
  15.            Exit Function
  16.        End If
  17.    End If
  18.    sets = &H80000000
  19. End Function
  20. Public Function iteraccion(ByVal llen As Long) As Long()
  21. Dim i       As Long
  22. Dim c       As Long
  23. Dim vares() As Long
  24.    llen = (llen - 1)
  25.    ReDim vares(0 To llen)
  26.    c = 1
  27.    For i = 0 To llen Step 5
  28.        vares(i) = c
  29.        sets 5, vares(), sets(10, vares(), sets(15, vares(), (i + 1), llen), llen), llen
  30.        c = c + 1
  31.    Next i
  32.    iteraccion = vares()
  33. End Function
  34.  
  35.  

Dulces Lunas!¡.


Título: Re: [Simple - reto] Iteraciones
Publicado por: _katze_ en 17 Junio 2011, 03:48 am
si pero tenias que llegar a esa secuencia de numeros.... es como que yo te diga que formes esto solo con iteraciones pero lo agamos asi como dicen si se te ocurre otra secuencia lo hacemos ya armo la mia y subo
   
Código:
1
12
123
1234
123456
1234567