#!/usr/bin/env python # producto.py # creo que es el ejercicio 26 from operator import add def producto_aux0(Cabezas, SolucionParcial): #print Cabezas, 'AUX', SolucionParcial if Cabezas == []: return [] elif SolucionParcial == []: return map( lambda x: [x], Cabezas) else: return ( map( lambda x: ([Cabezas[0]] + x) , SolucionParcial) + producto_aux(Cabezas[1:], SolucionParcial) ) def producto_aux(Cabezas, SolucionParcial): #print Cabezas, 'AUX', SolucionParcial if SolucionParcial == []: return map( lambda x: [x], Cabezas) else: return reduce( add, map( lambda y: map( lambda x: ([y] + x), SolucionParcial), Cabezas)) def producto(Lista): #print 'PROD', Lista if Lista == []: return [] elif Lista[1:] == []: return map( lambda x: [x], Lista[0]) else: return reduce( add, map( lambda y: map( lambda x: ([y] + x), producto(Lista[1:])), Lista[0])) def producto1(Lista): #print 'PROD', Lista if Lista == []: return [] else: return producto_aux( Lista[0], producto(Lista[1:]) ) def ensayo(entrada,resultado): verificacion = { True:"exito", False:"fallo" } print "entrada= %s\t%s\tresultado%s" % (entrada, '(' + verificacion[producto(entrada) == resultado] + ')', producto(entrada) ) def main(): ensayo( [['a','s','d'], ['1','2','3'], ['$','#','@']], [ ['a','1','$'], ['a','1','#'], ['a','1','@'], ['a','2','$'], ['a','2','#'], ['a','2','@'], ['a','3','$'], ['a','3','#'], ['a','3','@'], ['s','1','$'], ['s','1','#'], ['s','1','@'], ['s','2','$'], ['s','2','#'], ['s','2','@'], ['s','3','$'], ['s','3','#'], ['s','3','@'], ['d','1','$'], ['d','1','#'], ['d','1','@'], ['d','2','$'], ['d','2','#'], ['d','2','@'], ['d','3','$'], ['d','3','#'], ['d','3','@'] ] ) ensayo( [['a','b','c'], ['1','2']], [ ['a','1'], ['a','2'], ['b','1'], ['b','2'], ['c','1'], ['c','2'] ] ) ensayo( [['a','b'], ['1','2','3']], [ ['a','1'], ['a','2'], ['a','3'], ['b','1'], ['b','2'], ['b','3'] ] ) ensayo( [], [] ) ensayo( [['1','2','3']], [['1'],['2'],['3']] ) if __name__ == '__main__': main() # EOF producto.py