Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions 2001_juan-guiza_v1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
class Contact:
def __init__(self,nombre,apellido,email,telefono):
self.nombre=nombre
self.apellido=apellido
self.email=email
self.telefono=telefono


class ContactBook:
def __init__(self):
self.contactos=list()
self.numero_de_contactos=0
def add(self,datos):
nuevo_contacto= Contact(datos[0],datos[1],datos[2],datos[3])
posicion=0
for i in range(0,self.numero_de_contactos,1):
if(self.contactos[i].apellido<nuevo_contacto.apellido):
posicion+=1
if(nuevo_contacto.email.lower()==self.contactos[i].email.lower()):
print("ERROR:DUP")
return
self.contactos.insert(posicion,nuevo_contacto)
self.numero_de_contactos+=1
return
def delete(self,dato):
dato_encontrado=self.find(dato)
if(dato_encontrado==-1):
print("Usuario no encontrado; no puede ser eliminado")
else:
self.contactos.pop(dato_encontrado)
print("Usuario eliminado con exito")
self.numero_de_contactos-=1
return
def find(self,dato):
dato=dato[0].lower()
for i in range(0,self.numero_de_contactos,1):
if((dato==self.contactos[i].email.lower())or((dato==self.contactos[i].nombre.lower()))):
return i
return -1
def list(self):
for i in range(0,self.numero_de_contactos,1):
print(f"{self.contactos[i].apellido},{self.contactos[i].nombre} <{self.contactos[i].email}> {self.contactos[i].telefono}")
return


def main():
Directorio = ContactBook()
datos=int(input("Ingresa el numero de operaciones a realizar: "))
cuenta=0
while (cuenta<datos):
entrada=input()
entrada=entrada.split()
datos_a_utilizar= entrada[1:]
if(entrada[0]=="ADD"):
Directorio.add(datos_a_utilizar)
elif(entrada[0]=="DEL"):
Directorio.delete(datos_a_utilizar)
elif(entrada[0]=="FIND"):
busqueda=Directorio.find(datos_a_utilizar)
if(busqueda==-1):
print(f"El usuario identificado por {datos_a_utilizar[0]} NO se encuentra en el contact_book")
else:
print(f"El usuario identificado por {datos_a_utilizar[0]} se encuentra en el contact_book")
elif(entrada[0]=="LIST"):
Directorio.list()
cuenta+=1


main()
"""
TESTCASE #1:
Entradas:

6
ADD Juan Florez aaa@gmail.com 328732
ADD Juan Florez aaa@gmail.com 328732
ADD Jhon Sanchez bbb@gmail.com 237423
LIST
DEL aaa@gmail.com
LIST

Salidas:
ERROR:DUP

Florez,Juan <aaa@gmail.com> 328732
Sanchez,Jhon <bbb@gmail.com> 237423

Usuario eliminado con exito

Sanchez,Jhon <bbb@gmail.com> 237423

TESTCASE#2

Entradas:

6
ADD Juan Florez aaa@gmail.com 328732
ADD Valentina Giraldo hshs@gmail.com 739823
LIST
ADD Andres Fernandez jdhsu@gmail.com 32424
LIST
FIND Andres

Salidas:
Florez,Juan <aaa@gmail.com> 328732
Giraldo,Valentina <hshs@gmail.com> 739823

Fernandez,Andres <jdhsu@gmail.com> 32424
Florez,Juan <aaa@gmail.com> 328732
Giraldo,Valentina <hshs@gmail.com> 739823

El usuario identificado por Andres se encuentra en el contact_book

TESTCASE#3:

Entradas:
7
ADD Juan Florez aaa@gmail.com 328732
ADD Valentina Giraldo hshs@gmail.com 739823
ADD Andres Fernandez jdhsu@gmail.com 32424
FIND jdhsu@gmail.com
FIND Horacio
DEL hshs@gmail.com
LIST

Salidas:

El usuario identificado por jdhsu@gmail.com se encuentra en el contact_book

El usuario identificado por Horacio NO se encuentra en el contact_book

Usuario eliminado con Exito

Fernandez,Andres <jdhsu@gmail.com> 32424
Florez,Juan <aaa@gmail.com> 328732

"""
110 changes: 110 additions & 0 deletions 2002_juan-guiza_v1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
class Course:
def __init__(self,nombre,creditos,nota):
self.nombre=nombre
self.creditos=creditos
self.nota=nota

class Semester:
def __init__(self):
self.cursos=list()
self.No_cursos=0
self.suma_total=0
def add(self,datos):
nuevo_curso= Course(datos[0],int(datos[1]),float(datos[2]))
for i in range(0,self.No_cursos,1):
if(nuevo_curso.nombre.lower()==self.cursos[i].nombre.lower()):
print("ERROR:DUP")
return
self.suma_total+=nuevo_curso.nota
self.cursos.append(nuevo_curso)
self.No_cursos+=1
return
def avg(self):
promedio = self.suma_total/self.No_cursos
promedio=round(promedio,2)
return promedio
def list(self):
for i in range(0,self.No_cursos,1):
print(f"Creditos: {self.cursos[i].creditos}, Nombre: {self.cursos[i].nombre}")
return

def main():
Semestre = Semester()
datos=int(input("Ingresa el numero de operaciones a realizar: "))
cuenta=0
while (cuenta<datos):
entrada=input()
entrada=entrada.split()
datos_a_utilizar= entrada[1:]
if(entrada[0]=="ADD"):
Semestre.add(datos_a_utilizar)
elif(entrada[0]=="AVG"):
print(f"Prom={Semestre.avg()}")
elif(entrada[0]=="LIST"):
Semestre.list()
cuenta+=1
main()

"""
TESTCASES

TESTCASE#1
Entradas:
4
ADD Probabilidad 4 5
ADD Estructuras_de_datos 3 4.7
AVG
LIST

Salidas:

prom=4.85
Creditos: 4, Nombre: Probabilidad
Creditos: 3, Nombre: Estructuras_de_datos

TESTCASE#2
Entradas:
5
ADD Calculo_Vectorial 4 4.2
ADD Calculo_Integral 4 3.2
ADD Algebra_Matricial 3 2.8
LIST
AVG

Salidas:
Creditos: 4, Nombre: Calculo_Vectorial
Creditos: 4, Nombre: Calculo_Integral
Creditos: 3, Nombre: Algebra_Matricial
Prom=3.37

TESTCASE#3
Entradas:
10
ADD Probabilidad 4 5
ADD Estructuras_de_datos 3 4.7
ADD Probabilidad 4 5
ADD Estructuras_de_datos 3 4.7
ADD Calculo_Vectorial 4 4.2
AVG
ADD Calculo_Integral 4 3.2
ADD Algebra_Matricial 3 2.8
LIST
AVG

Salidas:
ERROR:DUP
ERROR:DUP

Prom=4.63

Creditos: 4, Nombre: Probabilidad
Creditos: 3, Nombre: Estructuras_de_datos
Creditos: 4, Nombre: Calculo_Vectorial
Creditos: 4, Nombre: Calculo_Integral
Creditos: 3, Nombre: Algebra_Matricial

Prom=3.98


"""

111 changes: 111 additions & 0 deletions 2003_juan-guiza_v1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
class Node():
def __init__(self,valor):
self.valor=valor
self.siguiente=None

class Stack():
def __init__(self):
self.top= None
self.tamano=0
def push(self,nodo):
if(self.tamano==0):
self.top=nodo
self.tamano+=1
else:
nodo.siguiente=self.top
self.top= nodo
self.tamano+=1
return
def pop(self):
if(self.tamano==0):
print("ERROR:EMPTY")
else:
print(f"El valor {self.top.valor} fue eliminado")
self.top=self.top.siguiente
self.tamano-=1

return
def peek(self):
if(self.tamano==0):
print("ERROR:EMPTY")
return
else:
print(self.top.valor)
return
def size(self):
print(self.tamano)


def main():
Pila=Stack()
datos=int(input("Ingresa el numero de operaciones a realizar: "))
cuenta=0
while (cuenta<datos):
entrada=input()
entrada=entrada.split()
if(entrada[0]=="PUSH"):
datos_a_utilizar= entrada[1]
nuevo_nodo = Node(datos_a_utilizar)
Pila.push(nuevo_nodo)
elif(entrada[0]=="POP"):
Pila.pop()
elif(entrada[0]=="PEEK"):
Pila.peek()
elif(entrada[0]=="SIZE"):
Pila.size()
cuenta+=1
main()

"""TESTCASES

TESTCASE#1
Entradas:
7
PUSH Pera
PUSH 45
PUSH 377.34
POP
POP
PEEK
SIZE

Salidas:
El valor 377.34 fue eliminado
El valor 45 fue eliminado
Pera
1

TESTCASE#2
Entradas:
7
POP
PEEK
PUSH Banano
SIZE
PUSH Rabano
PUSH 7
PEEK

Salidas:
ERROR:EMPTY
ERROR:EMPTY
1
7

TESTCASE#3
Entradas:
4
PUSH 63673.3
PUSH 323
POP
PEEK

Salidas:
El valor 323 fue eliminado
63673.3

Analisis de Complejidad:
Todas las operaciones son O(1) ya que ninguna depende de la cantidad de datos entrantes, todas las operaciones se hacen en tiempo constante
"""