Versión borrador / preliminar
Este documento es una versión preliminar para uso interno. Si encuentra algún problema o error, o si tiene algún comentario por favor repórtelo a los autores.
Más algorítmica#
Objetivo de la sección
El objetivo de esta sección es …
Complexity has and will maintain a strong fascination for many people. It is true that we live in a complex world and strive to solve inherently complex problems, which often do require complex mechanisms. However, this should not diminish our desire for elegant solutions, which convince by their clarity and effectiveness. Simple, elegant solutions are more effective, but they are harder to find than complex ones, and they require more time, which we too often believe to be unaffordable
—Niklaus Wirth
Introducción a la algorítmica:
Siempre hay varias opciones
Recetas
Arsenal propio
Recorridos totales#
while, for-in
sumar todos los elementos
cuántos hay que …
Recorridos parciales#
while, no for-in
buscar un elemento
hay alguno que … Ej: hay una vocal mayúscula en esta cadena
def hay__vocal_mayuscula(cadena: str) -> bool:
hay_mayuscula = False
i = 0
while i < len(cadena) and not hay_mayuscula:
letra_i = cadena[i]
if letra_i in "AEIOU":
hay_mayuscula = True
else:
i += 1
return hay_mayuscula
Ej 2: en qué posición aparece la primera mayúscula
Recorridos dobles#
totales parciales
hay repetidos contar repetidos
Ej 2: en qué posiciones hay la vocales mayúsculas
Recorridos con acumulaciones#
promedio
mayor
histograma
Soluciones recurrentes#
Contar#
Cuál es el problema base
Sólución típica
Problemas relacionados
Buscar#
Cuál es el problema base en qué posición está el primero que cumple
Sólución típica
Problemas relacionados si hay si todos cumplen todos los que cumplen
Encontrar el mayor / menor#
Cuál es el problema base
Sólución típica
Problemas relacionados
Contar apariciones (histograma)#
Cuál es el problema base
Sólución típica
Problemas relacionados
Filtrar#
Cuál es el problema base
Sólución típica
Problemas relacionados
Map#
Cuál es el problema base
Sólución típica
Problemas relacionados
Ejercicios#
Buscar el segundo mayor
Hay dos seguidos tales que
Están ordenados
Hay dos que sumen al menos X
Hay tres que sumen exactamente X
Buscar mediana: contar cuántos menores que cada uno
Contar inversiones: distancia entre …
Es anagrama
Más allá de Python#
Además de …