#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Documentación para la segunda tarea de la materia de Tópicos Avanzados de Programación.
Maestría GeoInteligencia Computacional a 27 de Enero del 2019.
"""

def mapLambdaSuma(l1,l2):
    '''
       Función para la suma, elemento a elemento de dos listas (vectores).
    '''

    suma=list(map(lambda x,y: x+y, l1,l2))
    return suma

def tripletaPita(valor):
    '''
	Función que genera la tripleta de Pitágoras lo cual es la suma de dos números elevados al cuadrado que resulten en un tercero elevado al cuadrado
    '''

    for i in range(4, valor + 1):
        if i % 2:
            #Impar
            valores = i**2 // 2
            yield i, valores, valores + 1
        else:
            #par
            valores = (i // 2)**2
            yield i, valores - 1, valores + 1

def sumaReduceLambda(l1):
    '''
	Función que suma, elemento a elemento, una sola lista con ayuda de la función reduce (importada de functools).
    '''

    suma=reduce((lambda x,y: x+y),l1)
    return suma

def posibildad(l1,l2):
    '''
	Función que devuelve todas las combinaciones posibilidades entre dos listas.
    '''

    posibles=[(num,letr) for num in l1 for letr in l2]
    return posibles

def listaTuplasComprension(l1):
    '''
	Función que devuelve el indice y el valor en una tupla con la estructura de una lista.
    '''
    indice=[(l1.index(i),i) for i in l1]
    return indice

def parLogico(l1):
    '''
	Función que devuelve True o False para cada elemento de una lista, si el valor del elemento es par.
    '''
    par=[True if num%2==0 else False for num in l1]
    return par







