Friday, October 12, 2012
0 mi entrevista de trabajo - un programa en python
://pagead2.googlesyndication.com/pagead/show_ads.js'>"+"script>"; // -->
Hoy en una entrevista de trabajo se me planteó un problema bastante peculiar. El mismo consistia en crear una funcion que reciviera un array (lista en python) con N indices y devolviera:
A- Si la suma de los elementos de la lista da 0, entonces devolver el largo de la lista – 1
B- El indice de la lista en que se cumplia que la suma de todos los elementos a la izquierde de este indice, fuera igual a la suma de todos los elementos a la derecha del mismo.
C- Si no se cumplia el punto B, agregar a la solucion -1.
Claro que todo explicado con otras palabras y en ingles, pero con varios ejemplos (que por suerte logre entender). Los nervios me comian ya que nunca estuve ante algo parecido, y me fue realmente mal… Pero bueno soy un apasionado de la programacion y al llegar a casa, tranquilo y con musica salio con fritas como decimos aqui en Uruguay
Bueno, basta de palabras, ahi va:
# A is a list object
def equi ( A ):
# solution will store all solutions to the problem
solution = list()
# the sum of all list components
A_sum = 0
# iterates for each element in the list
for index in range( len( A ) ):
A_sum += A[index]
# stores the sum of all components at left of this index position
sumaizq = 0
# stores the sum of all components at right of this index position
sumader = 0
for i in range( index ):
sumaizq += A[i]
for i in range( index + 1, len( A ) ):
sumader += A[i]
if (sumader - sumaizq) == 0:
solution.append( index )
# if no equilibrium point was found, then add -1 to solution.
if len(solution) == 0:
solution.append( -1 )
# if the sum of all elements of the list is equal to 0, then add the length-1 of the list
if A_sum == 0:
solution.append( len( A ) - 1 )
return solution
Disculpen mi ingles, como se habran dado cuenta lo hablo para el ***
Espero que a alguien le sea de interes y de ayuda...
PD: Como ven Python no es solo para niñas de secundaria, es una fuente de trabajo xD
Abrazo!!
0 comments:
Post a Comment