Autor: Daniel Limón
Email: dani@dlimon.net
Prueba de código en Python, compuesta por dos ejercicios, donde se evalúa:
- Nivel Técnico
- Lógica de programación
- Convenciones PEP8
Mi solución fue pre-procesar el texto para eliminar signos de puntuación utilizando expresiones regulares, hacer split del texto, almacenando las palabras en una tupla y finalmente iterar sobre esa tupla buscando coincidencias con la palabra objetivo.
Dada una palabra, contar las veces que se repite en un texto dado. No usar funciones nativas de Python, p/e: cotains, in, find, refind, index, etc..
Mi solución fue crear una clase con dos métodos privados y uno público: Uno para validar si un elemento del array cumple los criterios de búsqueda establecidos, devolviendo true o false, otro para ordenar la lista que cumple con los criterios de búsqueda según la key objetivo, que es "priority". Estos dos métodos son privados. Finalmente, el tercer método implementa los dos métodos privados para retornar el array final requerido por la prueba Dada una lista de entrada, ordenar por priority únicamente los elementos que cumplan los criterios establecidos por los siguientes parámetros: width, height, lenght, weight.
El ordenamiento debe de ser como el descrito por éstos paráemtros y además, en base a la propiedad priority en modo descendente. Ordenar primero los elementos que cumplan con las condiciones y después los elementos restantes, sin alterarlos.
Restricción. No utilizar funciones nativas como sort o find
Representación de criterio de ordenamiento que puede recibir el algoritmo:
criteria1 = [
('weight', '=', 3) ]
criteria2 = [
('width', '>=', 2),
('lenght', '<=', 20) ]
Muestra de entrada:
data_ordenamiento_array = [
{"id": 12340, "weight": 1, "width": 1, "height": 1, "length": 1, "cost": 125, "priority": 2},
{"id": 12341, "weight": 1, "width": 1, "height": 1, "length": 1, "cost": 127, "priority": 4},
...
Para ejecutar las soluciones de esta prueba, usar los siguientes comandos:
$ git clone https://github.com/dlimon2/python-skill-test
$ cd python-skill-test
$ python3 main.py
Para salir del programa, presionar Ctrl+C
Esta prueba técnica implementa UnitTests para ambos ejercicios, que pueden ser ejecutados con el siguiente comando (en el directorio raíz del proyecto):
$ python3 -m unittest discover tests