[RETO] Matriz de Cuenta Circular 7913

Iniciado por 79137913, 10 Enero 2011, 16:57 PM

0 Miembros y 2 Visitantes están viendo este tema.

79137913

HOLA!!!

Este es el primer Reto que creo, no es muy dificil, pero para pasar el rato va.

Bueno, el Reto consiste en:

Crear una funcion con esta estructura
Código (vb) [Seleccionar]
Private Function Cuenta_Circular7913(N&, M() As Integer, TIPO As Boolean)
En la variable N no aceptara numeros que no sean pares o mayores a 180 o menores a 2.

La funcion devuelva estas matrices:

Cuenta_Circular7913(2, Matriz, Verdadero)   :
   7   1   9
   4   0   2
   1   3   3

Cuenta_Circular7913(4, Matriz, Verdadero)   :
   7   1   2   3   9
   12  7   13  9   4
   11  16  0   14  5
   10  1   15  3   6
   1   9   8   7   3

Cuenta_Circular7913(6, Matriz, Verdadero)   :
   7   1   2   3   4   5   9
   20  7   21  22  23  9   6
   19  32  7   33  9   24  7
   18  31  36  0   34  25  8
   17  30  1   35  3   26  9
   16  1   29  28  27  3   10
   1   15  14  13  12  11  3

Cuenta_Circular7913(8, Matriz, Verdadero)   :
   7   1   2   3   4   5   6   7   9
   28  7   29  30  31  32  33  9   8
   27  48  7   49  50  51  9   34  9
   26  47  60  7   61  9   52  35  10
   25  46  59  64  0   62  53  36  11
   24  45  58  1   63  3   54  37  12
   23  44  1   57  56  55  3   38  13
   22  1   43  42  41  40  39  3   14
   1   21  20  19  18  17  16  15  3

Cuenta_Circular7913(2, Matriz, Falso)   :
   7   1   9
   4   0   2
   1   3   3

Cuenta_Circular7913(4, Matriz, Falso)   :
   7   1   2   3   9
   15  7   4   9   5
   14  16  0   8   6
   13  1   12  3   7
   1   11  10  9   3

Cuenta_Circular7913(6, Matriz, Falso)   :
   7   1   2   3   4   5   9
   32  7   6   7   8   9   10
   31  35  7   9   9   15  11
   30  34  36  0   18  16  12
   29  33  1   27  3   17  13
   28  1   26  25  24  3   14
   1   23  22  21  20  19  3

Cuenta_Circular7913(8, Matriz, Falso)   :
   7   1   2   3   4   5   6   7   9
   55  7   8   9   10  11  12  9   17
   54  60  7   13  14  15  9   24  18
   53  59  63  7   16  9   29  25  19
   52  58  62  64  0   32  30  26  20
   51  57  61  1   48  3   31  27  21
   50  56  1   47  46  45  3   28  22
   49  1   44  43  42  41  40  3   23
   1   39  38  37  36  35  34  33  3






GRACIAS POR LEER:
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

raul338


79137913

#2
HOLA!!!

@Raul:
Segun sea verdadero o falso el tipo lo que cambia es la manera de organizar los numeros.

Osea: Tipo = false seria Tipo1 y Tipo = true seria Tipo2

Para ver que tipo de organizacion tiene el tipo 1 y 2 estan los ejemplos.

P.D: Me voy a la playa, asi que recien mañana voy a poder responder si hay alguna duda, me quedo 10 minutos mas.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Psyke1

Yo creo que más o menos ya lo pille.
A final de esta semana intento algo que tengo examenes... :-\

DoEvents! :P

raul338

Pero en todos los ej pusiste verdadero :xD

79137913

HOLA!!!
Manana me conecto(perdon por la enie, estoy en el celular)
@Raul:
Que raro, los primeros 4 ejemplos son con verdadero y los ultimos 4 con falso fijate(ultimos 4):

Cuenta_Circular7913(2, Matriz, Falso)   :
    7   1   9
    4   0   2
    1   3   3

Cuenta_Circular7913(4, Matriz, Falso)   :
    7   1   2   3   9
    15  7   4   9   5
    14  16  0   8   6
    13  1   12  3   7
    1   11  10  9   3

Cuenta_Circular7913(6, Matriz, Falso)   :
    7   1   2   3   4   5   9
    32  7   6   7   8   9   10
    31  35  7   9   9   15  11
    30  34  36  0   18  16  12
    29  33  1   27  3   17  13
    28  1   26  25  24  3   14
    1   23  22  21  20  19  3

Cuenta_Circular7913(8, Matriz, Falso)   :
    7   1   2   3   4   5   6   7   9
    55  7   8   9   10  11  12  9   17
    54  60  7   13  14  15  9   24  18
    53  59  63  7   16  9   29  25  19
    52  58  62  64  0   32  30  26  20
    51  57  61  1   48  3   31  27  21
    50  56  1   47  46  45  3   28  22
    49  1   44  43  42  41  40  3   23
    1   39  38  37  36  35  34  33  3


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

raul338

Ahhh cierto, no vi la barra de desplazamiento (no me acostumbro a verla) :xD

LeandroA

#7
no tiene las comprobaciones de si es Par y mayor a 2 y menor a  180 pero bueno eso ya lo tenemos por sabido.

Código (VB) [Seleccionar]

Private Function Leandro_Cuenta_Circular7913(N&, m() As Integer, TIPO As Boolean)
   Dim Max As Long
   Dim X1 As Long
   Dim X2 As Long
   Dim Y1 As Long
   Dim Y2 As Long
   Dim lCont As Long
   Dim I As Long
   Dim j As Long
   Dim Mitad As Long
   
   
   Max = N * N
   
   ReDim m(0 To N, 0 To N)
   
   If TIPO Then
   
       X2 = N
       Y2 = N

       Do While lCont < Max
           m(X1, Y1) = 7
           X1 = X1 + 1
           For I = X1 To N - X1
               lCont = lCont + 1
               m(I, Y1) = lCont
           Next
           m(I, Y1) = 9
           Y1 = Y1 + 1
           
           For I = Y1 To N - Y1
               lCont = lCont + 1
               m(X2, I) = lCont
           Next
           m(X2, I) = 3
           X2 = X2 - 1
           
           For I = X2 To X1 Step -1
               lCont = lCont + 1
               m(I, Y2) = lCont
           Next
           m(I, Y2) = 1
           Y2 = Y2 - 1
           
           For I = Y2 To Y1 Step -1
               lCont = lCont + 1
               m(X1 - 1, I) = lCont
           Next
       Loop

   Else
   
      Mitad = N / 2
     
      For I = 0 To Mitad - 1
          m(X1, I) = 7
          X1 = X1 + 1
         
          For j = X1 To N - X1
            lCont = lCont + 1
            m(j, I) = lCont
          Next
          m(j, I) = 9
      Next
         
      For I = N To Mitad + 1 Step -1
         
          Y1 = Y1 + 1
         
          For j = Y1 To N - Y1
            lCont = lCont + 1
            m(I, j) = lCont
          Next
          m(j, I) = 3
      Next
         
      For I = N To Mitad + 1 Step -1
         
          Y2 = Y2 + 1
         
          For j = N - Y2 To Y2 Step -1
            lCont = lCont + 1
            m(j, I) = lCont
          Next
          m(j, I) = 1
      Next
     
      For I = 0 To Mitad - 1
     
          X2 = X2 + 1
         
          For j = N - X2 To X2 Step -1
            lCont = lCont + 1
            m(I, j) = lCont
          Next
   
      Next
   
   End If

End Function



Código (VB) [Seleccionar]

Option Explicit

Private Sub Form_Load()
    Dim X As Long, Y As Long
    Dim m() As Integer
    Dim N As Long
   
    N = 8
     
    Leandro_Cuenta_Circular7913 N, m, False
       
    For Y = 0 To N
        For X = 0 To N
            Debug.Print m(X, Y),
        Next
        Debug.Print
    Next
   
    Debug.Print vbCrLf
    Leandro_Cuenta_Circular7913 N, m, True
       
    For Y = 0 To N
        For X = 0 To N
            Debug.Print m(X, Y),
        Next
        Debug.Print
    Next

End Sub

79137913

#8
HOLA!!!

Que bueno el primer codigo!
Y, no me extraña que viniendo de Lea me gane en velocidad  :-\.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

79137913

HOLA!!!

Bueno... parece que no va a agregarse nadie mas, falta Mr. Frog.... :silbar:
Mañana posteo mi codigo, le pisa los talones al de Lea :P.

Espero.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*