monorepo
This commit is contained in:
20
PI1/.classpath
Normal file
20
PI1/.classpath
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry excluding="adda/ejemplos" kind="src" path="src/main/java"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-20">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/DatosCompartidos">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/ParteComun">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
17
PI1/.project
Normal file
17
PI1/.project
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>PI1</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
2
PI1/.settings/org.eclipse.core.resources.prefs
Normal file
2
PI1/.settings/org.eclipse.core.resources.prefs
Normal file
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
||||
15
PI1/.settings/org.eclipse.jdt.core.prefs
Normal file
15
PI1/.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,15 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=20
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=20
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=20
|
||||
6
PI1/data/PI1Ej1DatosEntrada.txt
Normal file
6
PI1/data/PI1Ej1DatosEntrada.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
32,55
|
||||
15,140
|
||||
82,120
|
||||
26,89
|
||||
35,54
|
||||
3,126
|
||||
6
PI1/data/PI1Ej2DatosEntrada.txt
Normal file
6
PI1/data/PI1Ej2DatosEntrada.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
93,24
|
||||
250,43
|
||||
331,473
|
||||
210,56
|
||||
345,68
|
||||
75,5009
|
||||
14
PI1/data/PI1Ej3DatosEntrada1A.txt
Normal file
14
PI1/data/PI1Ej3DatosEntrada1A.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Apple
|
||||
Banana
|
||||
Cherries
|
||||
Grapes
|
||||
Lemon
|
||||
Orange
|
||||
Peach
|
||||
Pear
|
||||
Pineapple
|
||||
Plum
|
||||
Pomegranate
|
||||
Strawberry
|
||||
Apricot
|
||||
Blueberries
|
||||
10
PI1/data/PI1Ej3DatosEntrada1B.txt
Normal file
10
PI1/data/PI1Ej3DatosEntrada1B.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Dolphin
|
||||
Fish
|
||||
Cat
|
||||
Crab
|
||||
Pig
|
||||
Elephant
|
||||
Butterfly
|
||||
Whale
|
||||
Dog
|
||||
Chicken
|
||||
12
PI1/data/PI1Ej3DatosEntrada2A.txt
Normal file
12
PI1/data/PI1Ej3DatosEntrada2A.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Red
|
||||
Blue
|
||||
Green
|
||||
Yellow
|
||||
Purple
|
||||
Orange
|
||||
Pink
|
||||
Brown
|
||||
Black
|
||||
White
|
||||
Gray
|
||||
Silver
|
||||
17
PI1/data/PI1Ej3DatosEntrada2B.txt
Normal file
17
PI1/data/PI1Ej3DatosEntrada2B.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
Carrot
|
||||
Broccoli
|
||||
Cauliflower
|
||||
Tomato
|
||||
Cucumber
|
||||
Spinach
|
||||
Lettuce
|
||||
Potato
|
||||
Onion
|
||||
Garlic
|
||||
Peas
|
||||
Beans
|
||||
Asparagus
|
||||
Zucchini
|
||||
Eggplant
|
||||
Celery
|
||||
Radish
|
||||
23
PI1/data/PI1Ej3DatosEntrada3A.txt
Normal file
23
PI1/data/PI1Ej3DatosEntrada3A.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
Jeans
|
||||
Jacket
|
||||
Dress
|
||||
Sweater
|
||||
Skirt
|
||||
Pants
|
||||
Blouse
|
||||
Shorts
|
||||
Socks
|
||||
Hat
|
||||
Coat
|
||||
Gloves
|
||||
Scarf
|
||||
Underwear
|
||||
Belt
|
||||
Boots
|
||||
Sneakers
|
||||
Sandals
|
||||
Blazer
|
||||
Pajamas
|
||||
Hoodie
|
||||
Vest
|
||||
Tights
|
||||
18
PI1/data/PI1Ej3DatosEntrada3B.txt
Normal file
18
PI1/data/PI1Ej3DatosEntrada3B.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Doctor
|
||||
Teacher
|
||||
Engineer
|
||||
Lawyer
|
||||
Nurse
|
||||
Scientist
|
||||
Artist
|
||||
Chef
|
||||
Firefighter
|
||||
Police officer
|
||||
Dentist
|
||||
Architect
|
||||
Musician
|
||||
Actor
|
||||
Accountant
|
||||
Electrician
|
||||
Writer
|
||||
Farmer
|
||||
6
PI1/data/PI1Ej4DatosEntrada.txt
Normal file
6
PI1/data/PI1Ej4DatosEntrada.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
10,6
|
||||
9,11
|
||||
16,7
|
||||
21,5
|
||||
8,10
|
||||
22,12
|
||||
57
PI1/src/main/java/adda/ejercicios/Ejercicio1.java
Normal file
57
PI1/src/main/java/adda/ejercicios/Ejercicio1.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package adda.ejercicios;
|
||||
|
||||
import java.util.function.UnaryOperator;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import adda.util.EnteroCadena;
|
||||
|
||||
public class Ejercicio1 {
|
||||
public static String ej1Func(Integer varA, Integer varB) {
|
||||
UnaryOperator<EnteroCadena> nx = elem -> {
|
||||
return EnteroCadena.of(elem.a() + 3,
|
||||
elem.a() % 2 == 0 ? elem.a() + "*" : elem.a() + "!");
|
||||
};
|
||||
|
||||
return Stream.iterate(EnteroCadena.of(varA, "A"), elem -> elem.a() < varB, nx)
|
||||
.filter(elem -> elem.a() % 10 != 0)
|
||||
.map(elem -> elem.s())
|
||||
.collect(Collectors.joining("-"));
|
||||
}
|
||||
|
||||
public static String ej1Iter(Integer varA, Integer varB) {
|
||||
EnteroCadena seed = EnteroCadena.of(varA, "A");
|
||||
StringBuilder res = new StringBuilder();
|
||||
int ac = varA;
|
||||
res.append(seed.s());
|
||||
while(ac < varB) {
|
||||
EnteroCadena ec = EnteroCadena.of(ac+3, ac % 2 == 0 ? ac + "*" : ac + "!");
|
||||
if(ec.a() % 10 != 0 && ec.a() < varB) {
|
||||
res.append("-").append(ec.s());
|
||||
}
|
||||
ac+=3;
|
||||
}
|
||||
return res.toString();
|
||||
}
|
||||
|
||||
public static String ej1RecF(Integer varA, Integer varB) {
|
||||
EnteroCadena seed = EnteroCadena.of(varA, "A");
|
||||
StringBuilder res = new StringBuilder();
|
||||
int ac = varA;
|
||||
res.append(seed.s());
|
||||
return ej1RecFAux(varA, varB, res, ac);
|
||||
}
|
||||
|
||||
public static String ej1RecFAux(Integer varA, Integer varB, StringBuilder res, Integer ac) {
|
||||
if(ac < varB) {
|
||||
EnteroCadena ec = EnteroCadena.of(ac+3, ac % 2 == 0 ? ac + "*" : ac + "!");
|
||||
if(ec.a() % 10 != 0 && ec.a() < varB) {
|
||||
res.append("-").append(ec.s());
|
||||
}
|
||||
ac+=3;
|
||||
return ej1RecFAux(varA, varB, res, ac);
|
||||
} else {
|
||||
return res.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
83
PI1/src/main/java/adda/ejercicios/Ejercicio2.java
Normal file
83
PI1/src/main/java/adda/ejercicios/Ejercicio2.java
Normal file
@@ -0,0 +1,83 @@
|
||||
package adda.ejercicios;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.UnaryOperator;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import adda.util.TuplaEjercicio2;
|
||||
|
||||
public class Ejercicio2 {
|
||||
public static List<Integer> ejercicio2RecNF(Integer a, Integer b) {
|
||||
List<Integer> ls = new ArrayList<>();
|
||||
if(a < 2 || b < 2) {
|
||||
return List.of(a*b);
|
||||
} else if(a > b) {
|
||||
ls.addAll(ejercicio2RecNF(a%b, b-1));
|
||||
ls.add(a);
|
||||
} else {
|
||||
ls.addAll(ejercicio2RecNF(a-2, b/2));
|
||||
ls.add(b);
|
||||
}
|
||||
return ls;
|
||||
}
|
||||
|
||||
public static List<Integer> ejercicio2RecF(Integer a, Integer b) {
|
||||
List<Integer> ls = new ArrayList<>();
|
||||
return ejercicio2RecFAux(a, b, ls);
|
||||
}
|
||||
|
||||
public static List<Integer> ejercicio2RecFAux(Integer a, Integer b, List<Integer> ls) {
|
||||
if (a < 2 || b < 2) {
|
||||
ls.add(a * b);
|
||||
} else if (a > b) {
|
||||
ls.addAll(ejercicio2RecFAux(a % b, b - 1, new ArrayList<>()));
|
||||
ls.add(a);
|
||||
} else {
|
||||
ls.addAll(ejercicio2RecFAux(a - 2, b / 2, new ArrayList<>()));
|
||||
ls.add(b);
|
||||
}
|
||||
return ls;
|
||||
}
|
||||
|
||||
public static List<Integer> ejercicio2Iter(Integer a, Integer b) {
|
||||
List<Integer> ls = new ArrayList<>();
|
||||
while (a >= 2 && b >= 2) {
|
||||
if (a > b) {
|
||||
ls.add(a);
|
||||
a %= b;
|
||||
b--;
|
||||
} else {
|
||||
ls.add(b);
|
||||
b /= 2;
|
||||
a -= 2;
|
||||
}
|
||||
}
|
||||
ls.add(a * b);
|
||||
Collections.reverse(ls);
|
||||
return ls;
|
||||
}
|
||||
|
||||
public static List<Integer> ejercicio2Func(Integer a, Integer b) {
|
||||
UnaryOperator<TuplaEjercicio2> next = x -> {
|
||||
if(x.a() < 2 || x.b() < 2) {
|
||||
x.ac().add(x.a()*x.b());
|
||||
return TuplaEjercicio2.of(0, 0, x.ac());
|
||||
} else if (x.a() > x.b()) {
|
||||
x.ac().add(x.a());
|
||||
return TuplaEjercicio2.of(x.a() % x.b(), x.b() - 1, x.ac());
|
||||
} else {
|
||||
x.ac().add(x.b());
|
||||
return TuplaEjercicio2.of(x.a() - 2, x.b() / 2, x.ac());
|
||||
}
|
||||
};
|
||||
List<Integer> res = Stream.iterate(
|
||||
TuplaEjercicio2.of(a, b, new ArrayList<Integer>()),
|
||||
x -> x.hasNext(),
|
||||
x -> next.apply(x)).toList().get(0).ac();
|
||||
Collections.sort(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
74
PI1/src/main/java/adda/ejercicios/Ejercicio3.java
Normal file
74
PI1/src/main/java/adda/ejercicios/Ejercicio3.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package adda.ejercicios;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import adda.util.TuplaEjercicio3;
|
||||
import us.lsi.streams.Stream2;
|
||||
|
||||
public class Ejercicio3 {
|
||||
public static List<String> ejercicio3Iter(String fichA, String fichB) {
|
||||
List<String> ac = new ArrayList<>();
|
||||
Iterator<String> iterA = Stream2.file(fichA).iterator();
|
||||
Iterator<String> iterB = Stream2.file(fichB).iterator();
|
||||
while(iterA.hasNext() || iterB.hasNext()) {
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
}
|
||||
}
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
}
|
||||
}
|
||||
}
|
||||
return ac;
|
||||
}
|
||||
|
||||
public static List<String> ejercicio3RecF(String fichA, String fichB) {
|
||||
List<String> ac = new ArrayList<>();
|
||||
Iterator<String> iterA = Stream2.file(fichA).iterator();
|
||||
Iterator<String> iterB = Stream2.file(fichB).iterator();
|
||||
return ejercicio3RecFAux(fichA, fichB, iterA, iterB, ac);
|
||||
}
|
||||
|
||||
public static List<String> ejercicio3RecFAux(String fichA, String fichB,
|
||||
Iterator<String> iterA, Iterator<String> iterB, List<String> ac) {
|
||||
List<String> res = new ArrayList<>();
|
||||
if(iterA.hasNext() || iterB.hasNext()) {
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
}
|
||||
}
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
}
|
||||
}
|
||||
res = ejercicio3RecFAux(fichA, fichB, iterA, iterB, ac);
|
||||
} else {
|
||||
res = ac;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public static List<String> ejercicio3Func(String fichA, String fichB) {
|
||||
return Stream.iterate(TuplaEjercicio3.of(
|
||||
Stream2.file(fichA).iterator(),
|
||||
Stream2.file(fichB).iterator(),
|
||||
new ArrayList<>()),
|
||||
x -> x.next())
|
||||
.filter(x -> !x.hasNext())
|
||||
.findFirst()
|
||||
.get()
|
||||
.ac();
|
||||
}
|
||||
}
|
||||
66
PI1/src/main/java/adda/ejercicios/Ejercicio4.java
Normal file
66
PI1/src/main/java/adda/ejercicios/Ejercicio4.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package adda.ejercicios;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import us.lsi.common.Pair;
|
||||
|
||||
public class Ejercicio4 {
|
||||
public static String ejercicio4RecSinMem(Integer a, Integer b) {
|
||||
if(a <= 4) {
|
||||
return a+"."+b;
|
||||
} else if(b <= 4) {
|
||||
return b+"-"+a;
|
||||
} else {
|
||||
return ejercicio4RecSinMem(a/2, b-2)+","+ejercicio4RecSinMem(a-2, b/2)+","+ejercicio4RecSinMem(a-1, b-1);
|
||||
}
|
||||
}
|
||||
|
||||
public static String ejercicio4RecConMem(Integer a, Integer b) {
|
||||
return ejercicio4RecConMemAux(a,b,new HashMap<>());
|
||||
}
|
||||
|
||||
public static String ejercicio4RecConMemAux(Integer a, Integer b, Map<Pair<Integer,Integer>,String> map) {
|
||||
Pair<Integer,Integer> pair = Pair.of(a, b);
|
||||
String res = null;
|
||||
if(map.containsKey(pair)) {
|
||||
return map.get(pair);
|
||||
} else {
|
||||
if(a <= 4) {
|
||||
res = a+"."+b;
|
||||
map.put(pair, res);
|
||||
} else if(b <= 4) {
|
||||
res = b+"-"+a;
|
||||
map.put(pair, res);
|
||||
} else {
|
||||
res = ejercicio4RecConMemAux(a/2, b-2,map)+","+ejercicio4RecConMemAux(a-2, b/2,map)+","+ejercicio4RecConMemAux(a-1, b-1,map);
|
||||
map.put(pair, res);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public static String ejercicio4Iter(Integer a, Integer b) {
|
||||
Map<Pair<Integer,Integer>, String> map = new HashMap<>();
|
||||
for(int i = 0; i <= a; i++) {
|
||||
for(int j = 0; j <= b; j++) {
|
||||
Pair<Integer,Integer> pair = Pair.of(i, j);
|
||||
String res = null;
|
||||
if(map.containsKey(pair)) {
|
||||
return map.get(pair);
|
||||
}
|
||||
if(i <= 4) {
|
||||
res = i+"."+j;
|
||||
map.put(pair, res);
|
||||
} else if(j <= 4) {
|
||||
res = j+"-"+i;
|
||||
map.put(pair, res);
|
||||
} else {
|
||||
res = map.get(Pair.of(i/2, j-2))+","+map.get(Pair.of(i-2, j/2))+","+map.get(Pair.of(i-1, j-1));
|
||||
map.put(pair, res);
|
||||
}
|
||||
}
|
||||
}
|
||||
return map.get(Pair.of(a, b));
|
||||
}
|
||||
}
|
||||
128
PI1/src/main/java/adda/tests/Tests.java
Normal file
128
PI1/src/main/java/adda/tests/Tests.java
Normal file
@@ -0,0 +1,128 @@
|
||||
package adda.tests;
|
||||
|
||||
import adda.ejercicios.Ejercicio1;
|
||||
import adda.ejercicios.Ejercicio2;
|
||||
import adda.ejercicios.Ejercicio3;
|
||||
import adda.ejercicios.Ejercicio4;
|
||||
import us.lsi.common.Files2;
|
||||
|
||||
public class Tests {
|
||||
public static void testEjercicio1 () {
|
||||
System.out.println("================ EJERCICIO 1 ================");
|
||||
StringBuilder sbFun = new StringBuilder("Funcional: \n");
|
||||
StringBuilder sbIter = new StringBuilder("Iterativo: \n");
|
||||
StringBuilder sbRecF = new StringBuilder("Recursivo Final: \n");
|
||||
for(String linea: Files2.linesFromFile("data/PI1Ej1DatosEntrada.txt")) {
|
||||
String[] partes = linea.split(",");
|
||||
Integer a = Integer.valueOf(partes[0]);
|
||||
Integer b = Integer.valueOf(partes[1]);
|
||||
sbFun.append(Ejercicio1.ej1Func(a, b));
|
||||
sbFun.append("\n");
|
||||
sbIter.append(Ejercicio1.ej1Iter(a, b));
|
||||
sbIter.append("\n");
|
||||
sbRecF.append(Ejercicio1.ej1RecF(a, b));
|
||||
sbRecF.append("\n");
|
||||
}
|
||||
System.out.println(sbFun.toString());
|
||||
System.out.println(sbIter.toString());
|
||||
System.out.println(sbRecF.toString());
|
||||
System.out.println("=============================================");
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public static void testEjercicio2 () {
|
||||
System.out.println("================ EJERCICIO 2 ================");
|
||||
StringBuilder sbFun = new StringBuilder("Funcional: \n");
|
||||
StringBuilder sbIter = new StringBuilder("Iterativo: \n");
|
||||
StringBuilder sbRecF = new StringBuilder("Recursivo Final: \n");
|
||||
StringBuilder sbRecNF = new StringBuilder("Recursivo No Final: \n");
|
||||
|
||||
for(String linea: Files2.linesFromFile("data/PI1Ej2DatosEntrada.txt")) {
|
||||
String[] partes = linea.split(",");
|
||||
Integer a = Integer.valueOf(partes[0]);
|
||||
Integer b = Integer.valueOf(partes[1]);
|
||||
|
||||
sbFun.append(Ejercicio2.ejercicio2Func(a, b));
|
||||
sbFun.append("\n");
|
||||
|
||||
sbIter.append(Ejercicio2.ejercicio2Iter(a, b));
|
||||
sbIter.append("\n");
|
||||
|
||||
sbRecF.append(Ejercicio2.ejercicio2RecF(a, b));
|
||||
sbRecF.append("\n");
|
||||
|
||||
sbRecNF.append(Ejercicio2.ejercicio2RecNF(a, b));
|
||||
sbRecNF.append("\n");
|
||||
}
|
||||
|
||||
System.out.println(sbFun.toString());
|
||||
System.out.println(sbIter.toString());
|
||||
System.out.println(sbRecF.toString());
|
||||
System.out.println(sbRecNF.toString());
|
||||
System.out.println("=============================================");
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public static void testEjercicio3 () {
|
||||
String file1A = "./data/PI1Ej3DatosEntrada1A.txt";
|
||||
String file1B = "./data/PI1Ej3DatosEntrada1B.txt";
|
||||
String file2A = "./data/PI1Ej3DatosEntrada2A.txt";
|
||||
String file2B = "./data/PI1Ej3DatosEntrada2B.txt";
|
||||
String file3A = "./data/PI1Ej3DatosEntrada3A.txt";
|
||||
String file3B = "./data/PI1Ej3DatosEntrada3B.txt";
|
||||
|
||||
System.out.println("================ EJERCICIO 3 ================");
|
||||
System.out.println("Iterativo: ");
|
||||
System.out.println(Ejercicio3.ejercicio3Iter(file1A, file1B));
|
||||
System.out.println(Ejercicio3.ejercicio3Iter(file2A, file2B));
|
||||
System.out.println(Ejercicio3.ejercicio3Iter(file3A, file3B));
|
||||
System.out.println("\n");
|
||||
System.out.println("Recursivo Final: ");
|
||||
System.out.println(Ejercicio3.ejercicio3RecF(file1A, file1B));
|
||||
System.out.println(Ejercicio3.ejercicio3RecF(file2A, file2B));
|
||||
System.out.println(Ejercicio3.ejercicio3RecF(file3A, file3B));
|
||||
System.out.println("\n");
|
||||
System.out.println("Funcional: ");
|
||||
System.out.println(Ejercicio3.ejercicio3Func(file1A, file1B));
|
||||
System.out.println(Ejercicio3.ejercicio3Func(file2A, file2B));
|
||||
System.out.println(Ejercicio3.ejercicio3Func(file3A, file3B));
|
||||
System.out.println("=============================================");
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public static void testEjercicio4 () {
|
||||
System.out.println("================ EJERCICIO 4 ================");
|
||||
StringBuilder sbSinMem = new StringBuilder("Sin memoria: \n");
|
||||
StringBuilder sbConMem = new StringBuilder("Con memoria: \n");
|
||||
StringBuilder sbIter = new StringBuilder("Iterativo: \n");
|
||||
|
||||
for(String linea: Files2.linesFromFile("data/PI1Ej4DatosEntrada.txt")) {
|
||||
String[] partes = linea.split(",");
|
||||
Integer a = Integer.valueOf(partes[0]);
|
||||
Integer b = Integer.valueOf(partes[1]);
|
||||
|
||||
sbSinMem.append(Ejercicio4.ejercicio4RecSinMem(a, b));
|
||||
sbSinMem.append("\n");
|
||||
|
||||
sbConMem.append(Ejercicio4.ejercicio4RecConMem(a, b));
|
||||
sbConMem.append("\n");
|
||||
|
||||
sbIter.append(Ejercicio4.ejercicio4Iter(a, b));
|
||||
sbIter.append("\n");
|
||||
}
|
||||
|
||||
System.out.println(sbSinMem.toString());
|
||||
System.out.println(sbConMem.toString());
|
||||
System.out.println(sbIter.toString());
|
||||
System.out.println("=============================================");
|
||||
System.out.println("\n\n");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
testEjercicio1();
|
||||
testEjercicio2();
|
||||
testEjercicio3();
|
||||
testEjercicio4();
|
||||
}
|
||||
|
||||
}
|
||||
7
PI1/src/main/java/adda/util/EnteroCadena.java
Normal file
7
PI1/src/main/java/adda/util/EnteroCadena.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package adda.util;
|
||||
|
||||
public record EnteroCadena(Integer a, String s) {
|
||||
public static EnteroCadena of(Integer a, String s) {
|
||||
return new EnteroCadena(a,s);
|
||||
}
|
||||
}
|
||||
13
PI1/src/main/java/adda/util/TuplaEjercicio2.java
Normal file
13
PI1/src/main/java/adda/util/TuplaEjercicio2.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package adda.util;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record TuplaEjercicio2(Integer a, Integer b, List<Integer> ac) {
|
||||
public static TuplaEjercicio2 of(Integer a, Integer b, List<Integer> ac) {
|
||||
return new TuplaEjercicio2(a,b,ac);
|
||||
}
|
||||
|
||||
public boolean hasNext() {
|
||||
return a >= 2 || b >= 2;
|
||||
}
|
||||
}
|
||||
30
PI1/src/main/java/adda/util/TuplaEjercicio3.java
Normal file
30
PI1/src/main/java/adda/util/TuplaEjercicio3.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package adda.util;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public record TuplaEjercicio3(Iterator<String> iterA, Iterator<String> iterB, List<String> ac) {
|
||||
public static TuplaEjercicio3 of(Iterator<String> iterA, Iterator<String> iterB, List<String> ac) {
|
||||
return new TuplaEjercicio3(iterA, iterB, ac);
|
||||
}
|
||||
|
||||
public boolean hasNext() {
|
||||
return iterA.hasNext() || iterB.hasNext();
|
||||
}
|
||||
|
||||
public TuplaEjercicio3 next() {
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
if(iterA.hasNext()) {
|
||||
ac.add(iterA.next());
|
||||
}
|
||||
}
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
if(iterB.hasNext()) {
|
||||
ac.add(iterB.next());
|
||||
}
|
||||
}
|
||||
return TuplaEjercicio3.of(iterA, iterB, ac);
|
||||
}
|
||||
}
|
||||
4
PI1/src/main/java/module-info.java
Normal file
4
PI1/src/main/java/module-info.java
Normal file
@@ -0,0 +1,4 @@
|
||||
module pi1 {
|
||||
requires datos_compartidos;
|
||||
requires partecomun;
|
||||
}
|
||||
Reference in New Issue
Block a user