Nicolás David Prieto Ramos
Documento Técnico Función Ordenar Arreglo
Requisitos
Especificación
Dado un arreglo de números enteros ordenarlo encontrando el mínimo del arreglo,
ubicándolo en la primera posición creando un nuevo arreglo de forma ascendente,
realizándolo de manera recursiva.
Entrada
La primera línea presenta un arreglo que debe ser procesado hasta que la línea se
encuentre vacía, la entrada finaliza en este caso.
Salida
El arreglo ordenado usando la forma especificada durante la presentación del
problema.
Estrategia
La estrategia usada fue buscar el mínimo de un arreglo completo con ayuda de la
función integrada “min” de Python, para luego colocarlo al inicio de un arreglo
modificado; luego se realiza un llamado recursivo sin el mínimo ya encontrado
para encontrar de esta forma el siguiente y así sucesivamente hasta obtener como
resultado el arreglo ordenado en forma ascendente.
Invariante #1:
Iniciación: El arreglo se encuentra ordenado de forma descendente.
Estabilidad: Por cada una de las iteraciones se debe acceder a la posición en que
encuentra el mínimo, ubicándolo en la primera posición del nuevo arreglo.
Terminación: El arreglo se encuentra ordenado ascendentemente
Casos de prueba
Entrada Justificación Salida
[] Arreglo vacío
[1] Arreglo de longitud 1 [1]
[2,5,7,9,2,5,7] Caso general [2,2,5,5,7,7,9]
[9,7,7,5,5,2,2,1] Peor de los casos, debido [1,2,2,5,5,7,7,9]
a que el mínimo del
arreglo se encuentra en la
última posición
Documento Técnico Suma Subarreglo
Requisitos
Especificación
Dado un arreglo de enteros, con índices i y j, encontrar la suma del subarreglo que
se encuentra limitado por los índices i y j.
Entrada
La primera línea presenta los índices i y j que se encargaran de delimitar el
arreglo, luego se muestra el arreglo de números separados por comas y se debe
procesar la entrada hasta que se presente alguna línea vacía, este último caso no
se debe procesar.
Salida
La suma del subarreglo dado con la limitación de los índices i y j.
Estrategia
La estrategia usada fue el uso de los límites dados como caso general y caso
base, mientras el índice i sea menor que j se procesará la suma, sumando los
extremos del arreglo gracias a los límites dados y reduciendo el tamaño del
subarreglo hasta la mitad, al presentarse alguno de los dos casos base, i = j o i > j,
se retornará el último valor necesario para finalizar con la suma del subarreglo.
Invariante #1:
Iniciación: Se identifican los índices del arreglo y donde están ubicados.
Estabilidad: A partir del primer índice y ultimo índice, se comienzan a sumar los
números del subarreglo hasta que se presente algún caso base.
Terminación: Se retorna la suma del subarreglo.
Casos de prueba
Entrada Justificación Salida
(2,5, Arreglo de longitud par, 18
[1,2,3,4,5,6]) caso i > j
(2,4, Arreglo de longitud 12
[1,2,3,4,5,6]) impar, caso i=j
(0,5, Peor de los casos, donde 21
[1,2,3,4,5,6]) se suma todo el arreglo
dado
Documento Técnico Suma Pares
Requisitos
Especificación
Dado un número N, se debe encontrar la suma de los números pares desde el
número par N hasta 2.
Entrada
Dado un número N se debe retornar la suma de los números pares desde N hasta
2, la entrada se procesa hasta encontrar una línea vacía.
Salida
Por cada caso se debe imprimir la suma indicada.
Estrategia
La estrategia usada fue usar el valor inicial 2 como punto de partida para hacer un
uso de la función recursiva suma incrementando cada vez el valor que se retorna
en 2 hasta llegar al límite dado por el valor N para finalmente retornar el total de la
suma de los números pares hasta el límite establecido.
Invariante #1:
Iniciación: Ingresa el valor N de la suma de pares.
Estabilidad: Se suman los números pares hasta que la variable num supere el
límite establecido.
Terminación: Se retorna la suma de los números pares de 2 hasta N.
Casos de prueba
Entrada Justificación Salida
2 Caso Base 2
11 Caso donde N es un 30
valor impar
10 Caso donde N es un 30
valor par
Documento Técnico MCD
Requisitos
Especificación
Dado dos valores enteros encontrar el máximo común divisor de estos dos.
Entrada
Dados dos números enteros, se procesa el caso hasta encontrar una línea vacía.
Salida
Se retorna el máximo común divisor de los números ingresados.
Estrategia
Teniendo en cuenta el algoritmo de Euclides, se plantea una función recursiva
haciendo uso del modulo para conocer el residuo de los números y determinar si
se presenta un caso base.
Invariante #1:
Iniciación: Se ingresan dos valores enteros.
Estabilidad: Se toman los valores a, b, y se determina el residuo de entre los dos
números hasta que este sea igual al caso base, que retornara el máximo común
divisor.
Terminación: Retorna máximo común divisor de los dos valores enteros.
Casos de prueba
Entrada Justificación Salida
(13,0) Caso Base 13
(2,6) Caso General 2
(3,6) Caso general 3
(5,2) Caso cuando son 1
números primos
Documento Técnico Decimal a Binario
Requisitos
Especificación
Dado un número en notación decimal, retornarlo en forma binaria.
Entrada
Dado un número n entero, procesar hasta el final del archivo.
Salida
Por cada caso de prueba retornar el número ingresado en forma binaria.
Estrategia
La estrategia usada fue el establecimiento de un caso base y un caso general en
el que se tomaba el número dado y se encontraba su módulo con respecto a dos,
luego se disminuía su tamaño con la división entera sobre 2, hasta llegar a el caso
base, a lo largo de este proceso se aprovechó la concatenación entre cadenas de
caracteres para invertir a lo largo del proceso los números binarios que se
arrojaban para finalmente obtener el número en notación binaria.
Invariante #1:
Iniciación: Se ingresa un valor entero.
Estabilidad: Se saca el residuo y la división entera del número, a su vez, se
concatena la cadena de caracteres binarios, este proceso se realiza hasta que se
presente algún caso base
Terminación: Se retorna el valor binario.
Casos de prueba
Entrada Justificación Salida
0 Caso Base 0
1 Caso Base 1
5 Caso general 101
Documento Técnico Invertir arreglo
Requisitos
Especificación
Dado un arreglo, invertir sus elementos de forma recursiva.
Entrada
Se ingresa un arreglo de caracteres.
Salida
Retorna el arreglo ingresado de forma invertida.
Estrategia
Una vez ingresado el arreglo, con ayuda de la función pop se toma el ultimo valor
del arreglo y se guarda en una variable. Esto se realiza hasta que la longitud del
arreglo sea menor o igual a 1, al mismo que se va creando un nuevo arreglo con
los valores invertidos.
Invariante #1:
Iniciación: Se ingresa el arreglo de caracteres.
Estabilidad: Se toma el ultimo valor del arreglo y se va agregando a uno nuevo.
Terminación: Se retorna el nuevo arreglo con los valores invertidos.
Casos de prueba
Entrada Justificación Salida
[] Caso Base []
[1] Caso Base [1]
[1,2,3,4,5] Caso General [5,4,3,2,1]
Documento Técnico Merge sort
Requisitos
Especificación
Dado un arreglo de enteros ordenar sus elementos de menor a mayor.
Entrada
Ingresa un arreglo de longitud n enteros.
Salida
Retorna el arreglo de longitud n de forma ascendente.
Estrategia
Se toma el arreglo ingresado y se divide por mitades, hasta que se tengan varios
arreglos de longitud 1, donde después se volverán a combinar mientras al mismo
tiempo se orden por medio de una comparación de menor a mayor.
Invariante #1:
Iniciación: se ingresa un arreglo de longitud n
Estabilidad: Se va diviendo a la mitad el arreglo, hasta tener uno de longitud 1 y
luego compararlos entre sí.
Terminación: Se tiene el arreglo ordenado
Casos de prueba
Entrada Justificación Salida
[] Caso base []
[1] Caso base [1]
[4,3,2,1] Ordena de forma [1,2,3,4]
ascendente