Programación Funcional en Python, Haskell y Java
Programación Funcional en Python, Haskell y Java
INTEGRANTES DE EQUIPO:
RODRGUEZ HERNNDEZ JOS
ANTONIO
NO.
CONTROL:
13400484
Java:
//1.- Funcin que reciba un nmero n entero y retorne el ltimo dgito de
n.
public static int P1(int n){
System.out.println("El nmero ingresado es: "+n+"\nEl ltimo dgito
es: "+(n%10));
return n%10;
}
*Ejecutando en el main:
P1(123123121);
Haskell:
--1.- Funcin que reciba un nmero n entero y retorne el ltimo dgito de
n.
p1 x= mod x 10
de
nmeros
def P2(n,list):
print (any(x=n for x in list))
Java:
//2.- Funcin que reciba un nmero entero n y una lista de nmeros
enteros; y que determine si n se encuentra en la lista o no.
public static boolean P2(int n, List<Integer> l){
System.out.println("Lista: "+l);
System.out.println("Numero: "+n);
return l.contains(n);
}
Ejecutando en el main:
List<Integer> l = new ArrayList<Integer>();
l.add(4);
l.add(5);
l.add(6);
l.add(2);
l.add(45);
l.add(7);
l.add(73);
l.add(82);
Haskell:
--2.- Funcin que reciba un nmero entero n y una lista de nmeros
enteros y que determine si n se encuentra en la lista o no.
p2 n l = or(map (==n)l)
Java:
//3.- Funcin que reciba un nmero entero n y una lista de nmeros
enteros; y que 'rote' n elementos de dicha lista y regrese la lista
'rotada'.
public static List<Integer> P3(int n, List<Integer> l){
List<Integer> nueva= new ArrayList<Integer>();
nueva.addAll(l.subList(n, l.size()));
nueva.addAll(l.subList(0,n));
System.out.println("Matriz original: "+l);
return nueva;
}
Ejecutando en el main:
4
Haskell:
--3.- Funcin que reciba un nmero entero n y una lista de nmeros
enteros y que 'rote' n elementos de dicha lista y regrese la
P4(lista[1:])
if
Java:
// 4.- Funcin que reciba una lista de nmeros enteros, que eleve al cubo
los nmeros pares de la lista y al cuadrado los nmeros impares; y
regrese nueva lista.
public static Object[] P4(List<Integer> l){
System.out.println(l);
return l.stream().map(num
2):Math.pow(num, 3)).toArray();
->
(num%2==0)?Math.pow(num,
Ejecutando en el main:
List<Integer> l = new ArrayList<Integer>();
l.add(4);
l.add(5);
l.add(6);
l.add(2);
l.add(45);
l.add(7);
l.add(73);
l.add(82);
imprimirOb(P4(l));
Haskell:
--4.- Funcin que reciba una lista de nmeros enteros, que eleve al cubo
los nmeros pares de la lista y al cuadrado los nmeros
pot num= if even num then num^2 else num^3
p4 n = [pot num | num<- n]
def P5Val(num,n,i):
return False if n>2 else P5Val(num,n+1,i+1)
P5Val(num,n,i+1) if num>i else True
if
num%i==0
else
Java:
//5.- Funcin que reciba una lista de nmeros enteros y regrese una lista
slo con los primos de la primer lista.
public static List<Integer> P5(List<Integer> l){
List<Integer> nueva= new ArrayList<Integer>();
if(l.size()==0) return nueva;
else if(P5Val(l.get(0),0,1)){
nueva.add(l.get(0));
nueva.addAll(P5(l.subList(1,l.size())));
return
nueva;
}
else return P5(l.subList(1,l.size()));
}
n,int i){
Ejecutando en el main:
List<Integer> l = new ArrayList<Integer>();
l.add(4);
l.add(5);
l.add(6);
l.add(2);
l.add(45);
l.add(7);
l.add(73);
l.add(82);
System.out.println(P5(l));
Haskell:
--5.- Funcin que reciba una lista de nmeros enteros y regrese una lista
slo con los primos de la primer lista.
def P6Val(n,i,l):
return l+[n]
P6Val(n,i+1,l)
if
n==i
else
(P6Val(n,i+1,l+[i]))
if
n%i==0
else
Java:
//6.- Funcin que reciba un nmero entero (positivo) y retorne una lista
de nmeros enteros entre 1 y n que sean divisores "exactos" de n.
public static List<Integer> P6(int n){
List<Integer> l = new ArrayList<Integer>();
return P6Val(n,l,1);
}
public static List<Integer> P6Val(int n,List<Integer> lista, int i){
if(i==n){
lista.add(n);
return lista;
}
if(n%i==0)lista.add(i);
return P6Val(n,lista,++i);
}
Ejecutando en el main:
System.out.println(P6(5000));
Haskell:
--6.- Funcin que reciba un nmero entero (positivo) y retorne una lista
de nmeros enteros entre 1 y n que sean divisores "exactos" de n.
Python:
def P7(l):
return quicksort(l,0,len(l)-1)
Java:
10
while(i<j){
while(A[i]<=pivote && i<j) i++;
while(A[j]>pivote) j--;
if (i<j) {
aux= A[i];
A[i]=A[j];
A[j]=aux;
}
}
A[izq]=A[j];
A[j]=pivote;
if(izq<j-1) quicksort(A,izq,j-1);
if(j+1 <der) quicksort(A,j+1,der);
}
11
Ejecutando en el main:
int Array[]={2,35,6,8,54,17,33,4,5};
System.out.println("Matriz Original: ");
imprimirInt(Array);
System.out.println("Matriz Ordenada: ");
imprimirInt(P7(Array));
Haskell:
--7.- Funcin que reciba una lista de nmeros enteros, implemente el
ordenamiento Quick Sort y que retorne la lista ordenada.
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
12