Está en la página 1de 27

Reto 2 - Variante 2

Misión Tic 2022

June 17, 2021


Universidad de Antioquia.
Descripción

Dada una lista a de Python de longitud L que guarda L números enteros,


considere una matriz A nula con tamaño n × n sean 0 ≤ i ≤ n − 1 la
i-ésima fila de la matriz A y 0 ≤ j ≤ n − 1 i-ésima columna de la matriz
A, se expresa la longitud de la lista dada en función del tamaño de la
matriz A el siguiente modo: L = n(n+1)2 .

1
Descripción

2
Descripción

Matrı́z cuadrada en python:

 
a00 a01 a02 (
0≤i ≤n−1
An×n = a10 a11 a12  , An×n = (aij ) donde (1)
 
0≤j ≤n−1
a20 a21 a22

3
Objetivo

Llenar las casillas descritas anteriormente con los elementos de la lista de


Python dada de la siguiente forma:

• En la única casilla disponible en la primera fila irá el primer elemento


de la lista (El elemento que está en la posición 0).
• En las 2 casillas disponibles en la segunda fila irán los elementos que
hay en los ı́ndices 1 y 2 de la lista en ese orden.

4
Objetivo

• En las i + 1 asillas que hay disponibles en la fila i irán los elementos


de la lista quehestán ubicados i en un ı́ndice k este ı́ndice varı́a entre
i(i+1) i(i+3)
este intervalo 2 , 2 y se debe respetar el orden en que
aparezcan en la lista. Es decir, en la primera casilla disponible de la
fila i irá el número que se encuentra en el ı́ndice i(i+1)2 de la lista a
en la segunda casilla disponible de la fila i irá el número que se
encuentra en el ı́ndice i(i+1) 2 + 1 de la lista a y ası́ sucesivamente
hasta ubicar en la casilla i + 1 de la fila i el número que se
encuentra ı́ndice i(i+3)2 de la lista a.

5
Entradas

• Vector unidimensional a de numpy de longitud L

Restricciones:

• El tamaño del vector unidimensional se escribe como una función del


tamaño de la matriz que usted debe crear: L = n(n+1)
2 , con L ∈ N y
n ∈ N (L y n son números naturales).

6
Salidas

La función solucion(a) debe retornar la matriz que usted llenó (Puede ser
una lista de listas o una matriz de numpy).

7
Solución

Pasos a realizar:

• Determinar el tamaño de la matriz


• Crear matriz de ceros
• Rellenar la matriz con los datos de la lista en el orden indicado

8
Solución

Determinar el tamaño de la matriz: Para determinar el valor n que


nos permite definir las dimensiones del vector An×n , debemos despejar el
valor de este, de la ecuación dada para definir el tamaño de la lista L:

n(n + 1)
L=
2

9
n(n + 1)
L=
2

10
2L = n(n + 1)

11
2L = n2 + n

12
0 = n2 + n − 2L

13
n2 + n − 2L = 0

14
Ecuación cuadrática:

ax 2 + bx + c = 0

15
Formula general: √
−b ± b 2 − 4ac
x=
2a

16
x=n
a=1
b=1
c = -2L

17
Formula general:
p
−(1) ± (1)2 − 4(1)(−2L)
n=
2(1)

18
Formula general: √
−1 + 1 + 8L
n=
2

19
Función solución():

from math import s q r t


import numpy a s np

def s o l u c i o n ( a ) :
L = len ( a )
n = i n t (( −1 + s q r t ( 1 + 8∗L ) ) / / 2 )

return matriz

20
Solución

Creación de la matriz A, de tamaño n x n : Para crear la matriz de


ceros utilizaremos la función Zeros() de la libreria numpy.

21
Función solución():

from math import s q r t


import numpy a s np

def s o l u c i o n ( a ) :
L = len ( a )
n = i n t (( −1 + s q r t ( 1 + 8∗L ) ) / / 2 )
m a t r i z = np . z e r o s ( ( n , n ) )

return matriz

22
Solución

Rellenado de la matriz A, de tamaño n x n con los datos de la lista


a de tamaño L: Para poder rellenar una matriz debemos primero saber
cómo recorrerla.

23
Descripción

Matrı́z cuadrada en python:

 
a00 a01 a02 (
0≤i ≤n−1
An×n = a10 a11 a12  , An×n = (aij ) donde (2)
 
0≤j ≤n−1
a20 a21 a22

24
Recorrer matriz:

import numpy a s np

def r e c o r r e r M a t r i z ( M a t r i z ) :
f o r i i n range ( n ) :
f o r j i n range ( n ) :
x = matriz [ i ] [ j ]

return x

25
Función solución():

from math import s q r t


import numpy a s np

def s o l u c i o n ( a ) :
L = len ( a )
n = i n t (( −1 + s q r t ( 1 + 8∗L ) ) / / 2 )
m a t r i z = np . z e r o s ( ( n , n ) )
k = 0
f o r i i n range ( n ) :
f o r j i n range ( i +1):
matriz [ i ] [ j ] = a [ k ]
k += 1

return matriz

26

También podría gustarte