#!/usr/bin/python -tt

# Ejercicios de listas
# Rellena el codigo en las funciones mostradas abajo main() esta
# configurado para probar lo que hagas con varias entradas,
# va a imprimir 'OK' cuando cada funcion este correcta.

# El codigo en cada funcion solamente incluye 'return'
# que esta ahi para que pongas tu codigo encima.

# A. match_ends
# Dada una lista de strings, devuelve la cuenta del numero de strings
# que tienen longitud de 2 o mas y en los que el primero y el ultimo
# caracter son iguales.
def match_ends(words):
  # +++tu codigo aqui+++
  return


# B. front_x
# Dada una lista de strings, devuelve una lista con los strings
# ordenados, devuelve una lista con los strings ordenados, pero
# poniendo de primeros los que tengan la 'x' como primer caracter.
# e.g. ['mix', 'xyz', 'apple', 'xanadu', 'aardvark'] devuelve:
# ['xanadu', 'xyz', 'aardvark', 'apple', 'mix']
# Pista: Esto puede hacerse creando dos listas y ordenando cada una 
# antes de combinarlas.
def front_x(words):
  # +++tu codugo aqui+++
  return



# C. sort_last
# Dada una lista de tuplas no vacias, devuelve una lista ordenada
# por el ultimo elemento de cada tupla.
# e.g. [(1, 7), (1, 3), (3, 4, 5), (2, 2)] devuelve
# [(2, 2), (1, 3), (3, 4, 5), (1, 7)]
# Pista, utiliza una funcion key= para extraer el ultimo elemento de cada tupla
def sort_last(tuples):
  # +++tu codigo aqui+++
  return

# Fin de los ejercicios.

# NO MIRAR ESTA FUNCION
# Simple provided test() function used in main() to print
# what each function returns vs. what it's supposed to return.
def test(got, expected):
  if got == expected:
    prefix = ' OK '
  else:
    prefix = '  X '
  print '%s got: %s expected: %s' % (prefix, repr(got), repr(expected))


# Calls the above functions with interesting inputs.
def main():
  print 'match_ends'
  test(match_ends(['aba', 'xyz', 'aa', 'x', 'bbb']), 3)
  test(match_ends(['', 'x', 'xy', 'xyx', 'xx']), 2)
  test(match_ends(['aaa', 'be', 'abc', 'hello']), 1)

  print
  print 'front_x'
  test(front_x(['bbb', 'ccc', 'axx', 'xzz', 'xaa']),
       ['xaa', 'xzz', 'axx', 'bbb', 'ccc'])
  test(front_x(['ccc', 'bbb', 'aaa', 'xcc', 'xaa']),
       ['xaa', 'xcc', 'aaa', 'bbb', 'ccc'])
  test(front_x(['mix', 'xyz', 'apple', 'xanadu', 'aardvark']),
       ['xanadu', 'xyz', 'aardvark', 'apple', 'mix'])

       
  print
  print 'sort_last'
  test(sort_last([(1, 3), (3, 2), (2, 1)]),
       [(2, 1), (3, 2), (1, 3)])
  test(sort_last([(2, 3), (1, 2), (3, 1)]),
       [(3, 1), (1, 2), (2, 3)])
  test(sort_last([(1, 7), (1, 3), (3, 4, 5), (2, 2)]),
       [(2, 2), (1, 3), (3, 4, 5), (1, 7)])


if __name__ == '__main__':
  main()