├── .gitignore
├── Ejercicios
├── Ejercicios01.pdf
├── Ejercicios02.pdf
├── Ejercicios03.pdf
└── EjerciciosExamen.pdf
├── README.md
├── Soluciones
├── BatallaMordor
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ └── runConfigurations.xml
│ ├── BatallaMordor.iml
│ └── src
│ │ └── es
│ │ └── joseluisg
│ │ └── dam
│ │ └── Main.java
├── Binarios-Kotlin
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── compiler.xml
│ │ ├── encodings.xml
│ │ ├── jarRepositories.xml
│ │ ├── libraries
│ │ │ ├── Maven__org_apiguardian_apiguardian_api_1_1_0.xml
│ │ │ ├── Maven__org_jetbrains_annotations_13_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_test_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_test_junit5_1_6_0.xml
│ │ │ ├── Maven__org_junit_jupiter_junit_jupiter_api_5_6_0.xml
│ │ │ ├── Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml
│ │ │ ├── Maven__org_junit_platform_junit_platform_commons_1_6_0.xml
│ │ │ ├── Maven__org_junit_platform_junit_platform_engine_1_6_0.xml
│ │ │ └── Maven__org_opentest4j_opentest4j_1_2_0.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── runConfigurations.xml
│ │ ├── uiDesigner.xml
│ │ └── vcs.xml
│ ├── consoleApp.iml
│ ├── pom.xml
│ ├── src
│ │ ├── main
│ │ │ └── kotlin
│ │ │ │ ├── Binary
│ │ │ │ └── Binary.kt
│ │ │ │ └── Main.kt
│ │ └── test
│ │ │ └── kotlin
│ │ │ └── BinaryTest.kt
│ └── target
│ │ ├── classes
│ │ ├── BinaryKt.class
│ │ ├── META-INF
│ │ │ └── consoleApp.kotlin_module
│ │ └── MainKt.class
│ │ └── test-classes
│ │ ├── BinaryTest.class
│ │ └── META-INF
│ │ └── consoleApp.kotlin_module
├── Binarios
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── compiler.xml
│ │ ├── discord.xml
│ │ ├── encodings.xml
│ │ ├── jarRepositories.xml
│ │ ├── misc.xml
│ │ ├── runConfigurations.xml
│ │ ├── uiDesigner.xml
│ │ ├── vcs.xml
│ │ └── workspace-FoxMacPro.xml
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── es
│ │ │ └── dam
│ │ │ └── joseluisgs
│ │ │ └── Binary.java
│ │ └── test
│ │ └── java
│ │ └── BinaryTest.java
├── LullGasol
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ └── runConfigurations.xml
│ ├── LullGasol.iml
│ └── src
│ │ └── es
│ │ └── joseluisgs
│ │ └── dam
│ │ └── Main.java
├── MavenTemplate
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── compiler.xml
│ │ ├── encodings.xml
│ │ ├── jarRepositories.xml
│ │ ├── misc.xml
│ │ └── runConfigurations.xml
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── es
│ │ │ └── joseluisgs
│ │ │ └── dam
│ │ │ └── App.java
│ │ └── test
│ │ └── java
│ │ └── es
│ │ └── joseluisgs
│ │ └── dam
│ │ └── AppTest.java
├── MoscaMatriz-Kotlin
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── compiler.xml
│ │ ├── encodings.xml
│ │ ├── jarRepositories.xml
│ │ ├── libraries
│ │ │ ├── Maven__org_apiguardian_apiguardian_api_1_1_0.xml
│ │ │ ├── Maven__org_jetbrains_annotations_13_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_test_1_6_0.xml
│ │ │ ├── Maven__org_jetbrains_kotlin_kotlin_test_junit5_1_6_0.xml
│ │ │ ├── Maven__org_junit_jupiter_junit_jupiter_api_5_6_0.xml
│ │ │ ├── Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml
│ │ │ ├── Maven__org_junit_platform_junit_platform_commons_1_6_0.xml
│ │ │ ├── Maven__org_junit_platform_junit_platform_engine_1_6_0.xml
│ │ │ └── Maven__org_opentest4j_opentest4j_1_2_0.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── runConfigurations.xml
│ ├── consoleApp.iml
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ ├── Main.kt
│ │ └── mosca
│ │ └── Mosca.kt
├── MoscaMatriz
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── runConfigurations.xml
│ │ └── vcs.xml
│ ├── MoscaVector.iml
│ └── src
│ │ └── mosca
│ │ └── Mosca.java
├── MoscaVector
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── runConfigurations.xml
│ ├── MoscaVector.iml
│ └── src
│ │ └── mosca
│ │ └── Mosca.java
├── Multiplicar
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ ├── runConfigurations.xml
│ │ └── vcs.xml
│ ├── Multiplicar.iml
│ └── src
│ │ └── es
│ │ └── joseluisg
│ │ └── dam
│ │ └── Main.java
├── OperadorTernario
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ └── runConfigurations.xml
│ ├── OperadorElvis.iml
│ └── src
│ │ └── es
│ │ └── joseluisg
│ │ └── dam
│ │ └── Main.java
├── SimuladorVuelo
│ ├── .gitignore
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ └── runConfigurations.xml
│ ├── SimuladorVuelo.iml
│ └── src
│ │ └── es
│ │ └── joseluisgs
│ │ └── dam
│ │ └── Main.java
├── StringsTokens
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── description.html
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ ├── project-template.xml
│ │ └── runConfigurations.xml
│ ├── Strings.iml
│ └── src
│ │ └── com
│ │ └── company
│ │ └── Main.java
├── UtilsPackage
│ ├── .idea
│ │ ├── .gitignore
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── runConfigurations.xml
│ ├── src
│ │ ├── Main.java
│ │ └── Utils
│ │ │ ├── Probabilidad.java
│ │ │ ├── Read.java
│ │ │ └── Vector.java
│ └── untitled.iml
└── VectoresEficiencia
│ ├── .gitignore
│ ├── .idea
│ ├── .gitignore
│ ├── description.html
│ ├── encodings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── project-template.xml
│ ├── runConfigurations.xml
│ └── vcs.xml
│ ├── Informe.pdf
│ ├── Informe.xlsx
│ ├── VectoresEficiencia.iml
│ ├── data
│ ├── bus_binaria.csv
│ ├── bus_secuencial.csv
│ ├── ord_burbuja.csv
│ ├── ord_inserccion.csv
│ ├── ord_quicksort.csv
│ ├── ord_seleccion.csv
│ └── ord_shell.csv
│ └── src
│ └── es
│ └── joseluisgs
│ └── dam
│ └── Main.java
└── UD03.pdf
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pptx
2 | .DS_Store
3 | /Ejercicios/*.docx
4 | upload.sh
5 |
--------------------------------------------------------------------------------
/Ejercicios/Ejercicios01.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Ejercicios/Ejercicios01.pdf
--------------------------------------------------------------------------------
/Ejercicios/Ejercicios02.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Ejercicios/Ejercicios02.pdf
--------------------------------------------------------------------------------
/Ejercicios/Ejercicios03.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Ejercicios/Ejercicios03.pdf
--------------------------------------------------------------------------------
/Ejercicios/EjerciciosExamen.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Ejercicios/EjerciciosExamen.pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Programación - 03 Aplicación de Estructuras de Almacenamiento
2 |
3 | Tema 03 Aplicación de Estructuras de Almacenamiento. 1DAM. Curso 2021/2022.
4 |
5 | 
6 |
7 | ## Contenidos
8 | 1. Arrays unidimensionales.
9 | 2. Arrays multidimensionales.
10 | 3. Cadenas de caracteres.
11 | 4. Expresiones regulares.
12 | 5. Métodos de ordenación
13 | 6. Métodos de búsqueda
14 |
15 | ## Recursos
16 | - Twitter: https://twitter.com/joseluisgonsan
17 | - GitHub: https://github.com/joseluisgs
18 | - Web: https://joseluisgs.github.io
19 | - Discord: https://discord.gg/uv7GcytM
20 | - Aula Virtual: https://aulavirtual33.educa.madrid.org/ies.luisvives.leganes/course/view.php?id=245
21 |
22 |
23 |
24 | ## Autor
25 |
26 | Codificado con :sparkling_heart: por [José Luis González Sánchez](https://twitter.com/joseluisgonsan)
27 |
28 | [](https://twitter.com/joseluisgonsan)
29 | [](https://github.com/joseluisgs)
30 |
31 | ### Contacto
32 |
33 | Cualquier cosa que necesites házmelo saber por si puedo ayudarte 💬.
34 |
35 |
36 |
37 |
39 |
40 |
41 |
43 |
44 |
45 |
47 |
48 |
49 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/BatallaMordor.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/BatallaMordor/src/es/joseluisg/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisg.dam;
2 |
3 | public class Main {
4 |
5 | public static void main(String[] args) {
6 | final int NUM_SOLDADOS = 2_000;
7 | final int SOLDADOS_COTIGENCIA = 20;
8 | int almacen = 39_000;
9 | int LIMITE_ALMACEN = 3_900;
10 | final int TIEMPO_MAXIMO = 7_200;
11 | final int TIEMPO_CHECK = 200;
12 | final int TOTAL_CONTINGENCIAS = NUM_SOLDADOS/SOLDADOS_COTIGENCIA;
13 | int contigenciasVivas = NUM_SOLDADOS/SOLDADOS_COTIGENCIA;
14 | int[] contigencias = new int[contigenciasVivas];
15 | boolean isUrukHai = false;
16 | int URUK_PROBABILIDAD = 20;
17 | int TIEMPO_ATAQUE = 50;
18 |
19 | int temporizador = 0;
20 | System.out.println("Batalla de Mordor");
21 |
22 | initContengicas(contigencias);
23 | printContigencias(contigencias);
24 |
25 | do {
26 | // Al final
27 | // temporizador ++; // No lo necesito porque ya espero una oleada
28 | if(temporizador % TIEMPO_CHECK == 0) {
29 | almacen = abastecerTropas(almacen, contigencias);
30 | }
31 | // Simulando batalla
32 | // ¿Que tropa esta siendo atacada?
33 | contigenciasVivas = ataqueEnemigo(contigenciasVivas, contigencias, URUK_PROBABILIDAD);
34 |
35 | // Espero otra oleada, esto opcional, comentar si no se usa
36 | esperar(TIEMPO_ATAQUE);
37 | temporizador += TIEMPO_ATAQUE;
38 | } while (temporizador < TIEMPO_MAXIMO && almacen > LIMITE_ALMACEN);
39 |
40 | printReport(almacen, LIMITE_ALMACEN, contigenciasVivas, TOTAL_CONTINGENCIAS, contigencias);
41 |
42 | }
43 |
44 |
45 |
46 | private static int abastecerTropas(int almacen, int[] contigencias) {
47 | System.out.println(" --> Merry y Pippin Comprueban estado de contiengecias");
48 | for (int i = 0; i < contigencias.length; i++) {
49 | if (contigencias[i] != 400 && contigencias[i] != -1) {
50 | almacen = restablcerContingencia(contigencias, i, almacen);
51 | }
52 | }
53 | return almacen;
54 | }
55 |
56 | private static void printReport(int almacen, int limite_almacen, int contigenciasVivas, int total_contingencias, int[] contigencias) {
57 | if(almacen< limite_almacen) {
58 | System.out.println("Has perdido la batalla, te has quedado sin suministros");
59 | } else {
60 | System.out.println("Se ha terminado el programa porque se ha alcanzado el tiempo máximo");
61 | }
62 | System.out.println("Almacen: " + almacen);
63 | System.out.println("Contingencias vivas: " + contigenciasVivas);
64 | System.out.println("Contingencias muertas: " + (total_contingencias - contigenciasVivas));
65 | System.out.println("Contingencias: ");
66 | printContigencias(contigencias);
67 | }
68 |
69 | private static int ataqueEnemigo(int contigenciasVivas, int[] contigencias, int URUK_PROBABILIDAD) {
70 | boolean isUrukHai;
71 | int numContingencia = alerta(contigenciasVivas, contigencias);
72 | int enemigos = tropasEnemigas();
73 | isUrukHai = isUruk(URUK_PROBABILIDAD);
74 | System.out.println("Contiencia: " + numContingencia + " esta siendo atacada");
75 | System.out.println("Tropas enemigas que nos atacan: " + enemigos + " y tienen UrukHai: " + isUrukHai);
76 | boolean exito = true;
77 |
78 | if(contigencias[numContingencia] > enemigos) {
79 | contigencias[numContingencia] -= enemigos;
80 | if(isUrukHai){
81 | exito = sorteo(75);
82 | } else {
83 | exito = sorteo(85);
84 | }
85 | } else if(contigencias[numContingencia] < enemigos && enemigos < 10) {
86 | contigencias[numContingencia] -= enemigos;
87 | if(isUrukHai){
88 | exito = sorteo(35);
89 | } else {
90 | exito = sorteo(45);
91 | }
92 | } else if(contigencias[numContingencia] < enemigos && enemigos >= 10) {
93 | contigencias[numContingencia] -= enemigos;
94 | exito = false;
95 | }
96 |
97 | // Ha caido la contingencia
98 | if(!exito) {
99 | contigenciasVivas--;
100 | contigencias[numContingencia] = -1;
101 | }
102 | return contigenciasVivas;
103 | }
104 |
105 | private static void initContengicas(int[] contigencias) {
106 | for (int i = 0; i < contigencias.length; i++) {
107 | contigencias[i] = 400;
108 | }
109 | }
110 |
111 | private static void printContigencias(int[] contigencia) {
112 | System.out.print("contingencia: { ");
113 | for (int j : contigencia) {
114 | System.out.print(j + " ");
115 | }
116 | System.out.println("}");
117 |
118 | }
119 |
120 | private static int restablcerContingencia(int[] contigencia, int numContingencia, int ALMACEN) {
121 | ALMACEN -= (400 - contigencia[numContingencia]);
122 | contigencia[numContingencia] = 400;
123 | return ALMACEN;
124 | }
125 |
126 | private static boolean sorteo(int probabilidad) {
127 | return (int)(Math.random() * 100) < probabilidad;
128 | }
129 |
130 | private static int alerta(int totalContingencias, int[] contigencias){
131 | int contingencia = 0;
132 | do {
133 | contingencia =(int) (Math.random() * totalContingencias);
134 | if (estadoContingencia(contigencias, contingencia) == -1) {
135 | contingencia = -1;
136 | }
137 | } while(contingencia==-1);
138 | return contingencia;
139 | }
140 |
141 | private static int estadoContingencia(int[] contigencias, int numContingencia) {
142 | return contigencias[numContingencia];
143 | }
144 |
145 | private static int tropasEnemigas() {
146 | return ((int)(Math.random() * 15)+1);
147 | }
148 |
149 | private static boolean isUruk(int probabilidad) {
150 | return (int)(Math.random() * 100) < probabilidad;
151 | }
152 |
153 | private static void esperar(int tiempo) {
154 | try {
155 | Thread.sleep(tiempo);
156 | } catch (InterruptedException e) {
157 | System.err.println("Error en temporizador");
158 | }
159 | }
160 |
161 |
162 |
163 | }
164 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_test_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_test_junit5_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/consoleApp.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | consoleApp
8 | es.joseluisgs.dam
9 | 1.0-SNAPSHOT
10 | jar
11 |
12 | consoleApp
13 |
14 |
15 | UTF-8
16 | official
17 | 11
18 |
19 |
20 |
21 |
22 | mavenCentral
23 | https://repo1.maven.org/maven2/
24 |
25 |
26 |
27 |
28 | src/main/kotlin
29 | src/test/kotlin
30 |
31 |
32 | org.jetbrains.kotlin
33 | kotlin-maven-plugin
34 | 1.6.0
35 |
36 |
37 | compile
38 | compile
39 |
40 | compile
41 |
42 |
43 |
44 | test-compile
45 | test-compile
46 |
47 | test-compile
48 |
49 |
50 |
51 |
52 |
53 | maven-surefire-plugin
54 | 2.22.2
55 |
56 |
57 | maven-failsafe-plugin
58 | 2.22.2
59 |
60 |
61 | org.codehaus.mojo
62 | exec-maven-plugin
63 | 1.6.0
64 |
65 | MainKt
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | org.jetbrains.kotlin
74 | kotlin-test-junit5
75 | 1.6.0
76 | test
77 |
78 |
79 | org.junit.jupiter
80 | junit-jupiter-engine
81 | 5.6.0
82 | test
83 |
84 |
85 | org.jetbrains.kotlin
86 | kotlin-stdlib-jdk8
87 | 1.6.0
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/src/main/kotlin/Binary/Binary.kt:
--------------------------------------------------------------------------------
1 | import kotlin.math.abs
2 | import kotlin.math.max
3 | import kotlin.math.pow
4 |
5 | // Mi librería de Datos para trabajar con Binarios
6 |
7 | /**
8 | * Lee un número binario desde la consola
9 | */
10 | fun readBinary(): IntArray {
11 | var line: String
12 | // Leemos un número y solo debe tener 0s y 1s
13 | do {
14 | println("Intrdouzca el número binario: ")
15 | line = readLine().toString(); // Leemos de la consola y lo pasamos a String
16 | } while (!isBinary(line))
17 |
18 | // Ahora los tranformamos a vector de enteros
19 | return toIntVector(line)
20 | }
21 |
22 | /**
23 | * Transforma una cadena de 1 y 0 en un vector de enteros de 1 y 0
24 | */
25 | fun toIntVector(line: String): IntArray {
26 | val res = IntArray(line.length) // Con esto creamos en vector []
27 | for (i in res.indices) {
28 | // cada caracter a string lo tengo que pasar a entero, la otra forma es Character.getNumericValue(number)
29 | res[i] = line[i].toString().toInt()
30 | }
31 | return res
32 | }
33 |
34 | /**
35 | * Comprueba si una cadena es un número binario, es decir solo tiene 1s y 0s
36 | */
37 | fun isBinary(line: String): Boolean {
38 | var isBinary = true
39 | var i = 0
40 | while (i < line.length && isBinary) {
41 | isBinary = line[i] == '0' || line[i] == '1'
42 | i++
43 | }
44 | return isBinary
45 | }
46 |
47 | /**
48 | * Imprime un vector binario
49 | */
50 | fun printBinary(binary: IntArray) {
51 | for (i in binary) {
52 | print(i)
53 | }
54 | println()
55 | }
56 |
57 | /**
58 | * Trasforma un vector de binarios en un entero
59 | */
60 | fun binaryToDecimal(num: IntArray): Int {
61 | var res = 0
62 | for (i in num.indices.reversed()) {
63 | res += (num[i] * 2.0.pow((num.size - i - 1))).toInt()
64 | }
65 | return res
66 | }
67 |
68 | /**
69 | * da la vuelta a un vector, no es necesario gracias a Kotlin
70 | */
71 | fun reverse(num: IntArray): IntArray {
72 | val res = IntArray(num.size)
73 | // invertimos el vector
74 | for (i in num.indices) {
75 | res[i] = num[num.size - 1 - i]
76 | }
77 | return res
78 | }
79 |
80 | /**
81 | * Redimensiona in vector
82 | */
83 | fun resize(num: IntArray, max: Int): IntArray {
84 | val res = IntArray(max)
85 | // lo coloco de atras adelante, los 0 que añado se quedan al comienzo
86 | var j = max - 1
87 | for (i in num.indices.reversed()) {
88 | res[j] = num[i]
89 | j--
90 | }
91 | return res
92 | }
93 |
94 | /**
95 | * Suma dos vectores binarios
96 | */
97 | fun add(num1: IntArray, num2: IntArray): IntArray {
98 | // Debemos tener el mismo tamaño
99 | var num1 = num1
100 | var num2 = num2
101 | val max = max(num1.size, num2.size)
102 |
103 | if (num1.size < num2.size) num1 = resize(num1, max) else num2 = resize(num2, max)
104 |
105 | // Ahora los sumamos, es uno mas para el acarreo el vector que tenemos
106 | val res = IntArray(max + 1)
107 | var carry = 0
108 | // Lo voy a hacer sin invertir
109 | var j = max
110 | for (i in num1.indices.reversed()) {
111 | // sumamos el carry y el elemento de la posición i
112 | val sum = num1[i] + num2[i] + carry
113 | // si la suma es mayor que 1, el carry es 1
114 | carry = if (sum > 1) 1 else 0
115 | // el resto es el resultado, porque el módulo es 1 o 2
116 | res[j] = sum % 2
117 | j--
118 | }
119 | // si el carry es 1, lo metemos al final (o posición 0)
120 | if (carry == 1) {
121 | res[0] = 1
122 | }
123 | return res
124 | }
125 |
126 | /**
127 | * Resto dos vectores
128 | */
129 | fun subtract(num1: IntArray, num2: IntArray): IntArray {
130 | // Debemos tener el mismo tamaño
131 | var num1 = num1
132 | var num2 = num2
133 | val max = max(num1.size, num2.size)
134 | // con el ternario
135 | //int max = num1.length > num2.length ? num1.length : num2.length;
136 |
137 | // Ahora los dos vectores deben tener el mismo tamaño
138 | if (num1.size < num2.size) num1 = resize(num1, max) else num2 = resize(num2, max)
139 |
140 | // Ahora los restamos, el tamaño siempre es el del mayor
141 | val res = IntArray(max)
142 | var carry = 0
143 | // Lo voy a hacer sin invertir
144 | var j = max - 1
145 | for (i in num1.indices.reversed()) {
146 | // restamos el carry y el elemento de la posición i
147 | val sum = num1[i] - num2[i] - carry
148 | // si la resta es menor que 0, el carry es 1
149 | carry = if (sum < 0) 1 else 0
150 | res[j] = abs(sum % 2)
151 | j--
152 | }
153 | return res
154 | }
155 |
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/src/main/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * Main de Binarios
3 | */
4 |
5 | // Lo bueno que tiene Kotlin es que no necesitamos iniciar nada, solo una función llamada main
6 | fun main(args: Array) {
7 | println("Hola Kotlin DAM - Binarios")
8 |
9 | println("Trabajando con Binarios")
10 |
11 | // Leemos un número binario y lo transformamos en vector de enterios de 1 y 0
12 | val binary = readBinary();
13 | printBinary(binary);
14 |
15 | // Pasamos a decimal
16 | val dec = binaryToDecimal(binary);
17 | println("Decimal: $dec");
18 |
19 | val num1 = intArrayOf(1, 1, 1) // Es {1,1,1};
20 | val num2 = intArrayOf(1, 0, 0, 0) // {1,0,0,0};
21 |
22 | // Vamos a sumar
23 |
24 | // Vamos a sumar
25 | print("num1: ")
26 | printBinary(num1)
27 | print("num2: ")
28 | printBinary(num2)
29 | print("Suma: ")
30 | val sum = add(num1, num2)
31 | printBinary(sum)
32 |
33 | val sub = subtract(num2, num1)
34 | print("Resta: ")
35 | printBinary(sub)
36 |
37 |
38 | }
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/src/test/kotlin/BinaryTest.kt:
--------------------------------------------------------------------------------
1 | import org.junit.jupiter.api.Assertions
2 | import org.junit.jupiter.api.Assertions.*
3 | import org.junit.jupiter.api.DisplayName
4 | import org.junit.jupiter.api.Test
5 |
6 |
7 |
8 |
9 | @DisplayName("Test de Binarios")
10 | class BinaryTest {
11 | @Test
12 | fun isBinaryTest() {
13 | // True siempre es igual a true :)
14 | val isBinary = "01011010"
15 | val notBinaryLetters = "aaaa"
16 | val notBinaryNumbers = "aaaa"
17 | assertAll(
18 | { assertTrue(isBinary(isBinary), "Caso Correcto") },
19 | { assertFalse(isBinary(notBinaryNumbers), "Caso Falso con Numeros") },
20 | { assertFalse(isBinary(notBinaryLetters), "Caso Falso con Letras") }
21 | );
22 | }
23 |
24 | @Test
25 | fun toIntVectorTest() {
26 | val binary = "01011010"
27 | val vector = intArrayOf(0, 1, 0, 1, 1, 0, 1, 0)
28 | assertArrayEquals(vector, toIntVector(binary))
29 | }
30 |
31 | @Test
32 | fun reverseTest() {
33 | val vector = intArrayOf(0, 1, 0, 1, 1, 0, 1, 1)
34 | val vectorReverse = intArrayOf(1, 1, 0, 1, 1, 0, 1, 0)
35 | assertArrayEquals(vectorReverse, reverse(vector))
36 | }
37 |
38 | @Test
39 | fun binaryToDecimalTest() {
40 | val binary = intArrayOf(1, 0, 0)
41 | val decimal = 4
42 | assertEquals(decimal, binaryToDecimal(binary))
43 | }
44 |
45 | @Test
46 | fun resizeTest() {
47 | val binary = intArrayOf(1, 1, 0)
48 | val max = 4
49 | val binaryResize = intArrayOf(0, 1, 1, 0)
50 | assertArrayEquals(binaryResize, resize(binary, max))
51 | }
52 |
53 | @Test
54 | fun addTest() {
55 | val num1 = intArrayOf(1, 1, 1)
56 | val num2 = intArrayOf(1, 0, 0, 1)
57 | val res = intArrayOf(1, 0, 0, 0, 0)
58 | assertArrayEquals(res, add(num1, num2))
59 | }
60 |
61 | @Test
62 | fun subtractTest() {
63 | val num1 = intArrayOf(1, 0, 0, 0)
64 | val num2 = intArrayOf(1, 1, 1)
65 | val res = intArrayOf(0, 0, 0, 1)
66 | assertArrayEquals(res, subtract(num1, num2))
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/target/classes/BinaryKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/Binarios-Kotlin/target/classes/BinaryKt.class
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/target/classes/META-INF/consoleApp.kotlin_module:
--------------------------------------------------------------------------------
1 |
2 |
3 | BinaryKtMainKt" *
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/target/classes/MainKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/Binarios-Kotlin/target/classes/MainKt.class
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/target/test-classes/BinaryTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/Binarios-Kotlin/target/test-classes/BinaryTest.class
--------------------------------------------------------------------------------
/Soluciones/Binarios-Kotlin/target/test-classes/META-INF/consoleApp.kotlin_module:
--------------------------------------------------------------------------------
1 | " *
--------------------------------------------------------------------------------
/Soluciones/Binarios/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
3 | src/main/resources/.env
4 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/discord.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/.idea/workspace-FoxMacPro.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | 1636990834256
95 |
96 |
97 | 1636990834256
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | es.joseluisgs.dam
8 | Binarios
9 | 1.0-SNAPSHOT
10 |
11 |
12 | UTF-8
13 | 11
14 | 11
15 |
16 |
17 |
18 |
19 | org.junit.jupiter
20 | junit-jupiter
21 | 5.8.1
22 | test
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/src/main/java/es/dam/joseluisgs/Binary.java:
--------------------------------------------------------------------------------
1 | package es.dam.joseluisgs;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Binary {
6 | public static void main(String[] args) {
7 | System.out.println("Números Binarios");
8 |
9 | // Leemos un número binario y lo transformamos a vector de enteros
10 | // importante ver como una operación la he ido descomponiendo en pasos
11 | //int[] binary = readBinary();
12 | //System.out.print("Binary: ");
13 | //printBinary(binary);
14 |
15 | // Pasamos a decimal
16 | //int dec = binaryToDecimal(binary);
17 | //System.out.println("Decimal: " + dec);
18 |
19 | // A partir de aquí voy a usar dos numeros para no meterlos siempre
20 | int[] num1 = {1,1,1};
21 | int[] num2 = {1,0,0,0};
22 |
23 | // Vamos a sumar
24 | System.out.print("num1: ");
25 | printBinary(num1);
26 | System.out.print("num2: ");
27 | printBinary(num2);
28 | System.out.print("Suma: ");
29 | int[] sum = add(num1, num2);
30 | printBinary(sum);
31 |
32 | int [] sub = subtract(num2, num1);
33 | System.out.print("Resta: ");
34 | printBinary(sub);
35 |
36 | }
37 |
38 | public static int[] add(int[] num1, int[] num2) {
39 | // Debemos tener el mismo tamaño
40 | int max = Math.max(num1.length, num2.length);
41 | // con el ternario
42 | //int max = num1.length > num2.length ? num1.length : num2.length;
43 |
44 | // Ahora los dos vectores deben tener el mismo tamaño
45 | if (num1.length < num2.length)
46 | num1 = resize(num1, max);
47 | else
48 | num2 = resize(num2, max);
49 |
50 | // printBinary(num1);
51 | // printBinary(num2);
52 |
53 | // Ahora los sumamos, es uno mas para el acarreo
54 | int[] res = new int[max+1];
55 | int carry = 0;
56 | // Lo voy a hacer sin invertir
57 | int j = max;
58 | for (int i = num1.length -1; i>=0; i--) {
59 | // sumamos el carry y el elemento de la posición i
60 | int sum = num1[i] + num2[i] + carry;
61 | // si la suma es mayor que 1, el carry es 1
62 | carry = sum > 1 ? 1 : 0;
63 | // el resto es el resultado, porque el módulo es 1 o 2
64 | res[j] = sum % 2;
65 | j--;
66 | }
67 | // si el carry es 1, lo metemos al final (o posición 0)
68 | if(carry == 1) {
69 | res[0] = 1;
70 | }
71 |
72 | // printBinary(res);
73 |
74 | return res;
75 |
76 | }
77 |
78 | public static int[] subtract(int[] num1, int[] num2) {
79 | // Debemos tener el mismo tamaño
80 | int max = Math.max(num1.length, num2.length);
81 | // con el ternario
82 | //int max = num1.length > num2.length ? num1.length : num2.length;
83 |
84 | // Ahora los dos vectores deben tener el mismo tamaño
85 | if (num1.length < num2.length)
86 | num1 = resize(num1, max);
87 | else
88 | num2 = resize(num2, max);
89 |
90 | // printBinary(num1);
91 | // printBinary(num2);
92 |
93 | // Ahora los restamos, el tamaño siempre es el del mayor
94 | int[] res = new int[max];
95 | int carry = 0;
96 | // Lo voy a hacer sin invertir
97 | int j = max-1;
98 | for (int i = num1.length -1; i>=0; i--) {
99 | // restamos el carry y el elemento de la posición i
100 | int sum = num1[i] - num2[i] - carry;
101 | // si la resta es menor que 0, el carry es 1
102 | carry = sum < 0 ? 1 : 0;
103 | res[j] = Math.abs(sum % 2);
104 | j--;
105 | }
106 | // printBinary(res);
107 | return res;
108 |
109 | }
110 |
111 | public static int[] resize(int[] num, int max) {
112 | int[] res = new int[max];
113 | // lo coloco de atras adelante, los 0 que añado se quedan al comienzo
114 | int j = max - 1;
115 | for (int i = num.length -1 ; i >= 0; i--) {
116 | res[j] = num[i];
117 | j--;
118 | }
119 | return res;
120 | }
121 |
122 | public static int binaryToDecimal(int[] num) {
123 | // Tal y como hemos visto en clase hay que hacerle un reverse
124 | // int[] numReverse = reverse(num);
125 | // int res = 0;
126 | // for (int i = 0; i < numReverse.length; i++) {
127 | // // cada elemento lo multiplicamos por 2 elevado a la potencia
128 | // // de su posición
129 | // res += numReverse[i] * Math.pow(2, i);
130 | // }
131 | // sin invertir
132 | int res = 0;
133 | for (int i = num.length -1; i>= 0; i--) {
134 | res += num[i]*Math.pow(2,num.length-i-1);
135 | }
136 |
137 | return res;
138 | }
139 |
140 | public static int[] reverse(int[] num) {
141 | int[] res = new int[num.length];
142 | // invertimos el vector
143 | for (int i = 0; i < num.length; i++) {
144 | res[i] = num[num.length - 1 - i];
145 | }
146 | return res;
147 | }
148 |
149 | public static int[] readBinary() {
150 | Scanner in = new Scanner(System.in);
151 | String line;
152 | // Leemos un número y solo debe tener 0s y 1s
153 | do {
154 | System.out.println("Intrdouzca el número binario: ");
155 | line = in.nextLine();
156 | } while(!isBinary(line));
157 |
158 | // Ahora los tranformamos a vector de enteros
159 | return toIntVector(line);
160 | }
161 |
162 | public static int[] toIntVector(String line) {
163 | int[] res = new int[line.length()];
164 | for (int i = 0; i < res.length; i++) {
165 | // cada caracter lo tengo que pasar a entero
166 | res[i] = Character.getNumericValue(line.charAt(i));
167 | }
168 | return res;
169 | }
170 |
171 | public static boolean isBinary(String line) {
172 | boolean isBinary = true;
173 | for (int i = 0; i < line.length() && isBinary; i++) {
174 | isBinary = line.charAt(i) == '0' || line.charAt(i) == '1';
175 | }
176 | return isBinary;
177 | }
178 |
179 | public static void printBinary(int[] binary) {
180 | for (int i: binary) {
181 | System.out.print(i);
182 | }
183 | System.out.println();
184 | }
185 | }
186 |
--------------------------------------------------------------------------------
/Soluciones/Binarios/src/test/java/BinaryTest.java:
--------------------------------------------------------------------------------
1 | import es.dam.joseluisgs.Binary;
2 | import org.junit.jupiter.api.Assertions;
3 | import org.junit.jupiter.api.DisplayName;
4 | import org.junit.jupiter.api.Test;
5 |
6 | import static org.junit.jupiter.api.Assertions.*;
7 |
8 | @DisplayName("Test de Binarios")
9 | public class BinaryTest {
10 |
11 | @Test
12 | public void isBinaryTest() {
13 | // True siempre es igual a true :)
14 | String isBinary = "01011010";
15 | String notBinaryLetters = "aaaa";
16 | String notBinaryNumbers = "aaaa";
17 | Assertions.assertAll(
18 | () -> assertTrue(Binary.isBinary(isBinary), "Caso Correcto"),
19 | () -> assertFalse(Binary.isBinary(notBinaryNumbers), "Caso Falso con Numeros"),
20 | () -> assertFalse(Binary.isBinary(notBinaryLetters), "Caso Falso con Letras")
21 | );
22 | }
23 |
24 | @Test
25 | public void toIntVectorTest() {
26 | String binary = "01011010";
27 | int[] vector = {0,1,0,1,1,0,1,0};
28 | assertArrayEquals(vector, Binary.toIntVector(binary));
29 | }
30 |
31 | @Test
32 | public void reverseTest() {
33 | int[] vector = {0,1,0,1,1,0,1,1};
34 | int[] vectorReverse = {1,1,0,1,1,0,1,0};
35 | assertArrayEquals(vectorReverse, Binary.reverse(vector));
36 | }
37 |
38 | @Test
39 | public void binaryToDecimalTest() {
40 | int[] binary = {1,0,0};
41 | int decimal = 4;
42 | assertEquals(decimal, Binary.binaryToDecimal(binary));
43 | }
44 |
45 | @Test
46 | public void resizeTest() {
47 | int[] binary = {1,1,0};
48 | int max = 4;
49 | int[] binaryResize = {0,1,1,0};
50 |
51 | assertArrayEquals(binaryResize, Binary.resize(binary, max));
52 | }
53 |
54 | @Test
55 | public void addTest() {
56 | int[] num1 = {1,1,1};
57 | int[] num2 = {1,0,0,1};
58 | int[] res = {1,0,0,0,0};
59 |
60 | assertArrayEquals(res, Binary.add(num1, num2));
61 | }
62 |
63 | @Test
64 | public void subtractTest() {
65 | int[] num1= {1,0,0,0};
66 | int[] num2= {1,1,1};
67 | int[] res = {0,0,0,1};
68 |
69 | assertArrayEquals(res, Binary.subtract(num1, num2));
70 | }
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
3 |
4 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/LullGasol.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/LullGasol/src/es/joseluisgs/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisgs.dam;
2 |
3 | public class Main {
4 |
5 | public static void main(String[] args) {
6 | // Variables
7 | // Mejoras, solo un empate, que el empate sea un punto para los dos, etc..
8 | int numeroVictoriasRondasJugador1 = 0;
9 | int numeroEmpatesRondasJugador1 = 0;
10 | int numeroDerrotasRondasJugador1 = 0;
11 | int numeroVictoriasRondasJugador2 = 0;
12 | int numeroEmpatesRondasJugador2 = 0;
13 | int numeroDerrotasRondasJugador2 = 0;
14 |
15 | final int NUMERO_RONDAS = 3;
16 | final int NUMERO_TIRADAS = 5;
17 |
18 | final int PROBABILIDAD_JUGADOR1 = 50;
19 | final int PROBABILIDAD_JUGADOR2 = 33;
20 |
21 | final String JUGADOR1 = "Llul";
22 | final String JUGADOR2 = "Gasol";
23 |
24 |
25 | System.out.println("Bienvenidos al pique entre " + JUGADOR1 + " y " + JUGADOR2);
26 |
27 | // Lo que sea hay que jugarselo al mejor de 3
28 | for (int i = 1; i <= NUMERO_RONDAS; i++) {
29 |
30 | System.out.println("Ronda: " + i);
31 | int rondaJugador1 = obtenerResultadoRonda(JUGADOR1, NUMERO_TIRADAS, PROBABILIDAD_JUGADOR1);
32 | int rondaJugador2 = obtenerResultadoRonda(JUGADOR2, NUMERO_TIRADAS, PROBABILIDAD_JUGADOR2);
33 |
34 | System.out.println("Puntuación Ronda " + i + " de " + JUGADOR1 + ": " + rondaJugador1);
35 | System.out.println("Puntuación Ronda " + i + " de " + JUGADOR2 + ": " + rondaJugador2);
36 |
37 | // Informe de resultados
38 | if (rondaJugador1 == rondaJugador2) {
39 | numeroEmpatesRondasJugador1++;
40 | numeroEmpatesRondasJugador2++;
41 | System.out.println(JUGADOR1 + " y " + JUGADOR2 + " han empatado la Ronda: " + i + " con: " + rondaJugador1);
42 | } else if (rondaJugador1 > rondaJugador2) {
43 | numeroVictoriasRondasJugador1++;
44 | numeroDerrotasRondasJugador2++;
45 | System.out.println(JUGADOR1 + " ha ganado a " + JUGADOR2 + " en la Ronda: " + i + " con: " + rondaJugador1);
46 | } else {
47 | numeroVictoriasRondasJugador2++;
48 | numeroDerrotasRondasJugador1++;
49 | System.out.println(JUGADOR2 + " ha ganado a " + JUGADOR1 + " en la Ronda: " + i + " con: " + rondaJugador2);
50 | }
51 | }
52 |
53 | // Ahora vamos con los resultados de la partida
54 | if (numeroVictoriasRondasJugador1 > numeroVictoriasRondasJugador2) {
55 | System.out.println(JUGADOR1 + " ha ganado a " + JUGADOR2 + " en la partida por "
56 | + numeroVictoriasRondasJugador1 + " a " + numeroVictoriasRondasJugador2 + " y empates: " + numeroEmpatesRondasJugador1);
57 | } else if (numeroVictoriasRondasJugador2 > numeroVictoriasRondasJugador1)
58 | System.out.println(JUGADOR2 + " ha ganado a " + JUGADOR1 + " en la partida por "
59 | + numeroVictoriasRondasJugador2 + " a " + numeroVictoriasRondasJugador1 + " y empates: " + numeroEmpatesRondasJugador1);
60 | else
61 | System.out.println(JUGADOR2 + " y " + JUGADOR1 + " han empatado todo con: " + numeroEmpatesRondasJugador2);
62 | }
63 |
64 | /**
65 | * Realiza la ronda de tiradas de un jugador
66 | *
67 | * @param jugador Nombre del jugador
68 | * @param numeroTiradas Número de tiradas del jugador
69 | * @param probabilidadAcierto de acierto del jugador
70 | * @return numero de puntos
71 | */
72 | private static int obtenerResultadoRonda(String jugador, int numeroTiradas, int probabilidadAcierto) {
73 | // Se tira 5 balones, pero el ultimo vale doble
74 | int puntosRonda = 0;
75 | for (int i = 1; i <= numeroTiradas; i++) {
76 | System.out.println("Tirada de " + jugador + ": " + i);
77 | if (realizarSorteo(probabilidadAcierto) && i < numeroTiradas) {
78 | System.out.println(jugador + " Acierta la tirada: " + i);
79 | puntosRonda++;
80 | } else if (realizarSorteo(probabilidadAcierto) && i == probabilidadAcierto) {
81 | System.out.println(jugador + " Acierta la tirada y vale doble: " + i);
82 | puntosRonda += 2;
83 | } else {
84 | System.out.println(jugador + " Falla la tirada: " + i);
85 | }
86 |
87 | }
88 | System.out.println("Puntos de " + jugador + " en esta Ronda: " + puntosRonda);
89 | return puntosRonda;
90 | }
91 |
92 | /**
93 | * Calcula un sorteo de un número en base al limite de probabilidad
94 | *
95 | * @param probabilidadAcierto límite de probabilidad, por ejemplo 33%
96 | * @return Verdadero si el valor está dentro del límite
97 | */
98 | private static boolean realizarSorteo(int probabilidadAcierto) {
99 | boolean salida = false;
100 | double sorteo = Math.random() * 100;
101 | if (sorteo < probabilidadAcierto)
102 | salida = true;
103 | return salida;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /coverage
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | 4.0.0
6 |
7 | es.joseluisgs.dam
8 | MavenTemplate
9 | 1.0-SNAPSHOT
10 |
11 | MavenTemplate
12 |
13 | http://www.example.com
14 |
15 |
16 | UTF-8
17 | 11
18 | 11
19 |
20 |
21 |
22 |
23 |
24 | org.junit.jupiter
25 | junit-jupiter-engine
26 | 5.8.1
27 | test
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | maven-clean-plugin
38 | 3.1.0
39 |
40 |
41 |
42 | maven-resources-plugin
43 | 3.0.2
44 |
45 |
46 | maven-compiler-plugin
47 | 3.8.0
48 |
49 |
50 | maven-surefire-plugin
51 | 2.22.1
52 |
53 |
54 | maven-jar-plugin
55 | 3.0.2
56 |
57 |
58 | maven-install-plugin
59 | 2.5.2
60 |
61 |
62 | maven-deploy-plugin
63 | 2.8.2
64 |
65 |
66 |
67 | maven-site-plugin
68 | 3.7.1
69 |
70 |
71 | maven-project-info-reports-plugin
72 | 3.0.0
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/src/main/java/es/joseluisgs/dam/App.java:
--------------------------------------------------------------------------------
1 | package es.joseluisgs.dam;
2 |
3 | /**
4 | * Hello world!
5 | *
6 | */
7 | public class App {
8 | public static void main( String[] args )
9 | {
10 | System.out.println( "¡Hola 1DAM!" );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Soluciones/MavenTemplate/src/test/java/es/joseluisgs/dam/AppTest.java:
--------------------------------------------------------------------------------
1 | package es.joseluisgs.dam;
2 |
3 | import org.junit.jupiter.api.Test;
4 |
5 | import static org.junit.jupiter.api.Assertions.assertTrue;
6 |
7 | public class AppTest {
8 |
9 | @Test
10 | public void shouldAnswerWithTrue() {
11 | assertTrue( true );
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_test_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_test_junit5_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/consoleApp.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | consoleApp
8 | es.joseluisgs.dam
9 | 1.0-SNAPSHOT
10 | jar
11 |
12 | consoleApp
13 |
14 |
15 | UTF-8
16 | official
17 | 11
18 |
19 |
20 |
21 |
22 | mavenCentral
23 | https://repo1.maven.org/maven2/
24 |
25 |
26 |
27 |
28 | src/main/kotlin
29 | src/test/kotlin
30 |
31 |
32 | org.jetbrains.kotlin
33 | kotlin-maven-plugin
34 | 1.6.0
35 |
36 |
37 | compile
38 | compile
39 |
40 | compile
41 |
42 |
43 |
44 | test-compile
45 | test-compile
46 |
47 | test-compile
48 |
49 |
50 |
51 |
52 |
53 | maven-surefire-plugin
54 | 2.22.2
55 |
56 |
57 | maven-failsafe-plugin
58 | 2.22.2
59 |
60 |
61 | org.codehaus.mojo
62 | exec-maven-plugin
63 | 1.6.0
64 |
65 | MainKt
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | org.jetbrains.kotlin
74 | kotlin-test-junit5
75 | 1.6.0
76 | test
77 |
78 |
79 | org.junit.jupiter
80 | junit-jupiter-engine
81 | 5.6.0
82 | test
83 |
84 |
85 | org.jetbrains.kotlin
86 | kotlin-stdlib-jdk8
87 | 1.6.0
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/src/main/kotlin/Main.kt:
--------------------------------------------------------------------------------
1 | import mosca.*
2 |
3 | /**
4 | * Mosca en la Matriz
5 | */
6 | fun main(args: Array) {
7 | println("Mosca Matriz")
8 |
9 | var numCasillas = 10
10 | val MOSCA = 1
11 |
12 | var numIntentos = getNumeroIntentos()
13 |
14 | // Pedir tamaño de Matriz
15 | numCasillas = getNumeroCasillas();
16 |
17 | // Esto es quevalente a int [][], una matriz es una rray de filas, y cada filas es un array de enteros (son las columnas)
18 | val casillas = Array(numCasillas) { IntArray(numCasillas) }
19 |
20 | // Todas las casillas son 0 menos la de la mosca
21 |
22 | // Todas las casillas son 0 menos la de la mosca
23 | iniciarCasillas(casillas)
24 |
25 | // Situar la mosca en el vector
26 |
27 | // Situar la mosca en el vector
28 | situarMosca(casillas, MOSCA)
29 | imprimirCasillas(casillas)
30 |
31 | var estaMuerta = false
32 | var posMosca: IntArray
33 |
34 | println("Atrapa a la Mosca")
35 |
36 | do {
37 | // Pedirle la posición donde vas a dar un tortazo
38 | posMosca = posicionGolpear(casillas);
39 |
40 | // Anlizamos el Golpeo
41 | estaMuerta = analizarGolpeo(MOSCA, casillas, estaMuerta, posMosca);
42 | numIntentos --;
43 | println("Te quedan $numIntentos intentos");
44 | } while(!estaMuerta && numIntentos>0);
45 |
46 | if (estaMuerta)
47 | println("¡Has cazado a la maldita mosca!");
48 | else
49 | println("¡Has perdido!");
50 |
51 | posMosca = buscarMosca(MOSCA, casillas)
52 | if(posMosca[0]!=-1)
53 | println("La mosca está en la posición: {${posMosca[0]+1},${posMosca[1]+1}}")
54 | imprimirCasillas(casillas);
55 |
56 | }
57 |
58 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz-Kotlin/src/main/kotlin/mosca/Mosca.kt:
--------------------------------------------------------------------------------
1 | package mosca
2 |
3 | import java.lang.Math.random
4 |
5 |
6 | /**
7 | * Obtiene el número de Intentos
8 | */
9 | fun getNumeroIntentos(): Int {
10 | var intentos = 0
11 | do {
12 | println("Introduce el número de intentos máximos, mayor a 1")
13 | // Si no lo puede comveretir da null
14 | intentos = readLine()?.toIntOrNull() ?: 0
15 | } while (intentos < 1)
16 | return intentos
17 | }
18 |
19 | fun getNumeroCasillas(): Int {
20 | var numCasillas: Int
21 | do {
22 | println("Dime el número de casillas, siempre mayor a 5")
23 | numCasillas =readLine()?.toIntOrNull() ?: 0
24 | println("Tamaño de vector es:$numCasillas")
25 | } while (numCasillas < 5)
26 | return numCasillas
27 | }
28 |
29 | fun imprimirCasillas(casillas: Array) {
30 | for (fila in casillas) {
31 | print("{ ")
32 | for (columna in fila) {
33 | print("$columna ")
34 | }
35 | println("} ")
36 | }
37 | }
38 |
39 | fun iniciarCasillas(casillas: Array) {
40 | // i recorre todos los indices
41 | for (i in casillas.indices) {
42 | // j recorre todos los elementos de cada indice
43 | for (j in casillas[i].indices) {
44 | // Se inicializa el valor de cada casilla a 0
45 | casillas[i][j] = 0
46 | }
47 | //for (j in 0 until casillas[i].size) {
48 | // casillas[i][j] = 0
49 | //}
50 | }
51 | }
52 |
53 | fun getPosicion(casillas: Array): Int {
54 | var fila: Int
55 | do {
56 | fila = (random() * casillas.size).toInt()
57 | //System.out.println(s + (fila + 1));
58 | } while (fila < 0 || fila >= casillas.size)
59 | return fila
60 | }
61 |
62 | fun situarMosca(casillas: Array, mosca: Int) {
63 | val fila: Int = getPosicion(casillas)
64 | val columna: Int = getPosicion(casillas)
65 | casillas[fila][columna] = mosca
66 | }
67 |
68 | fun posicionGolpear(casillas: Array): IntArray {
69 | val posMosca = intArrayOf(0, 0)
70 | do {
71 | println("Introduce la posición de la Fila a atacar: ")
72 | posMosca[0] = (readLine()?.toIntOrNull() ?: 0 ) - 1
73 | println("La posición Fila elegida es: " + (posMosca[0] + 1))
74 | } while (posMosca[0] < 0 || posMosca[0] >= casillas.size)
75 | do {
76 | println("Introduce la posición de la Columna a atacar: ")
77 | posMosca[1] = (readLine()?.toIntOrNull() ?: 0 ) - 1
78 | println("La posición Columna elegida es: " + (posMosca[1] + 1))
79 | } while (posMosca[1] < 0 || posMosca[1] >= casillas.size)
80 | return posMosca
81 | }
82 |
83 | fun analizarGolpeo(MOSCA: Int, casillas: Array, estaMuerta: Boolean, posMosca: IntArray): Boolean {
84 | // Logica del juego
85 | // Acertamos
86 | var estaMuerta = estaMuerta
87 | if (casillas[posMosca[0]][posMosca[1]] == MOSCA) {
88 | estaMuerta = true
89 |
90 | // Analizamos los limites
91 | }
92 | for (i in -1..1) {
93 | for (j in -1..1) {
94 | if (posMosca[0] + i >= 0 && posMosca[0] + i < casillas.size && posMosca[1] + j >= 0 && posMosca[0] + j < casillas.size) {
95 | if (casillas[posMosca[0] + i][posMosca[1] + j] == MOSCA) {
96 | println("¡CASI!")
97 | iniciarCasillas(casillas)
98 | situarMosca(casillas, MOSCA)
99 | }
100 | }
101 | }
102 | }
103 | if (!estaMuerta) {
104 | println("¡Has fallado!")
105 | }
106 | imprimirCasillas(casillas)
107 | return estaMuerta
108 | }
109 |
110 | // Vamos a buscar la mosca
111 | fun buscarMosca(mosca: Int = 1, casillas: Array): IntArray {
112 | for (i in casillas.indices) {
113 | for (j in casillas[i].indices) {
114 | if (casillas[i][j] == mosca) {
115 | //println("La mosca está en la posición: " + (i + 1) + "," + (j + 1))
116 | return intArrayOf(i, j)
117 | }
118 | }
119 | }
120 | return intArrayOf(-1, -1)
121 | }
122 |
123 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.gitignore:
--------------------------------------------------------------------------------
1 | out/
2 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/MoscaVector.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/MoscaMatriz/src/mosca/Mosca.java:
--------------------------------------------------------------------------------
1 | package mosca;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Mosca {
6 | public static void main(String[] args){
7 | System.out.println("La Mosca Vector");
8 | int numCasillas = 10;
9 | final int MOSCA = 1;
10 |
11 | int numIntentos = 5;
12 |
13 | numIntentos = getNumIntentos();
14 |
15 |
16 | // Pedir tamaño de Matriz
17 | numCasillas = pedirNumeroCasillas();
18 |
19 | // Crear la matriz
20 | int[][] casillas = new int[numCasillas][numCasillas];
21 |
22 | // Todas las casillas son 0 menos la de la mosca
23 | iniciarCasillas(casillas);
24 |
25 | // Situar la mosca en el vector
26 | situarMosca(casillas, MOSCA);
27 | imprimirCasillas(casillas);
28 |
29 | boolean estaMuerta = false;
30 | int[] posMosca = {0,0};
31 |
32 | do {
33 | // Pedirle la posición donde vas a dar un tortazo
34 | posMosca = posicionGolpear(casillas);
35 |
36 | // Anlizamos el Golpeo
37 | estaMuerta = analizarGolpeo(MOSCA, casillas, estaMuerta, posMosca);
38 | numIntentos --;
39 | System.out.println("Te quedan " + numIntentos + " intentos");
40 | } while(!estaMuerta && numIntentos>0);
41 |
42 | if (estaMuerta)
43 | System.out.println("¡Has cazado a la maldita mosca!");
44 | else
45 | System.out.println("¡Has perdido!");
46 |
47 | System.out.println("Estaba en: {"
48 | + (posMosca[0]+1) + ", "
49 | + (posMosca[1]+1) +
50 | "}");
51 | imprimirCasillas(casillas);
52 |
53 | }
54 |
55 | private static int getNumIntentos() {
56 | Scanner sc = new Scanner(System.in);
57 | int intentos = 0;
58 |
59 | do {
60 | System.out.println("Introduce el número de intentos máximos, mayor a 1");
61 | intentos = sc.nextInt() ;
62 | } while (intentos<1);
63 |
64 | return intentos;
65 |
66 | }
67 |
68 | private static boolean analizarGolpeo(int MOSCA, int[][] casillas, boolean estaMuerta, int[] posMosca) {
69 | // Logica del juego
70 | // Acertamos
71 | if(casillas[posMosca[0]][posMosca[1]] == MOSCA) {
72 | estaMuerta = true;
73 |
74 | // Analizamos los limites
75 | }
76 | // else {
77 | // // Eje X horizontal
78 | // boolean o = posMosca[0] != 0 && casillas[posMosca[0] -1][posMosca[1]]== MOSCA;
79 | // boolean e = posMosca[0] != casillas.length-1 && casillas[posMosca[0] +1][posMosca[1]]== MOSCA;
80 | // // Eje Y vertical
81 | // boolean n = posMosca[1] != 0 && casillas[posMosca[0]][posMosca[1]-1]== MOSCA;
82 | // boolean s = posMosca[1] != casillas.length-1 && casillas[posMosca[0]][posMosca[1]+1]== MOSCA;
83 | //
84 | // // Diagonal superior izquierda
85 | // boolean no = posMosca[0] != 0 && posMosca[1] != 0 && casillas[posMosca[0]-1][posMosca[1]-1]== MOSCA;
86 | // // Diagonal superior derecha
87 | // boolean ne = posMosca[0] != 0 && posMosca[1] != casillas.length-1 && casillas[posMosca[0]-1][posMosca[1]+1]== MOSCA;
88 | // // Diagnal inferior izquierda
89 | // boolean so = posMosca[0] != casillas.length-1 && posMosca[1] != 0 && casillas[posMosca[0]+1][posMosca[1]-1]== MOSCA;
90 | // // Diagnal inferior derecha
91 | // boolean se = posMosca[0] != casillas.length-1 && posMosca[1] != casillas.length-1 && casillas[posMosca[0]+1][posMosca[1]+1]== MOSCA;
92 | //
93 | // if(o || e || n || s || no || ne || so || se) {
94 | // // Revoloteamos
95 | // System.out.println("¡CASI!");
96 | // iniciarCasillas(casillas);
97 | // situarMosca(casillas, MOSCA);
98 | // }
99 | // }
100 |
101 | for(int i=-1;i<=1;i++){
102 | for(int j=-1;j<=1;j++){
103 | if (posMosca[0] + i >=0 && posMosca[0] + i=0 && posMosca[0]+j= casillas.length);
129 |
130 | do {
131 | System.out.println("Introduce la posición de la Columna a atacar: ");
132 | posMosca[1] = sc.nextInt() -1;
133 | System.out.println("La posición Columna elegida es: " + (posMosca[1] +1));
134 | } while (posMosca[1]<0 || posMosca[1]>= casillas.length);
135 |
136 | return (posMosca);
137 | }
138 |
139 | private static void situarMosca(int[][] casillas, int mosca) {
140 |
141 | int fila = getPosicion(casillas);
142 | int columna = getPosicion(casillas );
143 |
144 | casillas[fila][columna] = mosca;
145 | }
146 |
147 | private static int getPosicion(int[][] casillas) {
148 | int fila;
149 | do {
150 | fila = (int) (Math.random() * casillas.length);
151 | //System.out.println(s + (fila + 1));
152 | } while (fila < 0 || fila >= casillas.length);
153 | return fila;
154 | }
155 |
156 | private static void iniciarCasillas(int[][] casillas) {
157 | for (int i = 0; i < casillas.length; i++) {
158 | for (int j = 0; j < casillas[i].length; j++) {
159 | casillas[i][j] = 0;
160 | }
161 | }
162 | }
163 |
164 | /**
165 | *
166 | * @return
167 | */
168 | private static int pedirNumeroCasillas() {
169 | Scanner sc = new Scanner(System.in);
170 | int numCasillas;
171 | do {
172 | System.out.println("Dime el número de casillas, siempre mayor a 5");
173 | numCasillas = sc.nextInt();
174 | System.out.println("Tamaño de vector es:" + numCasillas);
175 | } while (numCasillas<5);
176 | return numCasillas;
177 | }
178 |
179 | static void imprimirCasillas(int[][] casillas) {
180 | //System.out.print("{ ");
181 | for(int[] fila: casillas){
182 | System.out.print("{ ");
183 | for(int columna: fila){
184 | System.out.print(columna + " ");
185 | }
186 | System.out.println("} ");
187 | }
188 | //System.out.println("}");
189 | }
190 | }
191 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/.gitignore:
--------------------------------------------------------------------------------
1 | out/
2 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/MoscaVector.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/MoscaVector/src/mosca/Mosca.java:
--------------------------------------------------------------------------------
1 | package mosca;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Mosca {
6 | public static void main(String[] args){
7 | System.out.println("La Mosca Vector");
8 | int numCasillas = 10;
9 | final int MOSCA = 1;
10 |
11 |
12 | // Pedir tamaño de vector
13 | numCasillas = pedirNumeroCasillas();
14 |
15 | // Crear el vector
16 | int[] casillas = new int[numCasillas];
17 |
18 | // Situar la mosca en el vector
19 | situarMosca(casillas, MOSCA);
20 | imprimirCasillas(casillas);
21 |
22 | boolean estaMuerta = false;
23 | int posMosca = 0;
24 | do {
25 | // Pedirle la posición donde vas a dar un tortazo
26 | posMosca = posicionGolpear(casillas);
27 | // Anlizamos el Golpeo
28 | estaMuerta = analizarGolpeo(MOSCA, casillas, estaMuerta, posMosca);
29 | } while(!estaMuerta);
30 | System.out.println("¡¡Has cazado a la maldita mosca!!!");
31 | System.out.println("Estaba en: " + (posMosca+1));
32 |
33 | }
34 |
35 | private static boolean analizarGolpeo(int MOSCA, int[] casillas, boolean estaMuerta, int posMosca) {
36 | // Logica del juego
37 | // Acertamos
38 | if(casillas[posMosca] == MOSCA) {
39 | estaMuerta = true;
40 |
41 | // Analizamos los limites
42 | } else {
43 | boolean checkIzda = posMosca != 0 && casillas[posMosca -1]== MOSCA;
44 | boolean checkDcha = posMosca != casillas.length-1 && casillas[posMosca +1]== MOSCA;
45 |
46 | if(checkIzda || checkDcha) {
47 | // Revoloteamos
48 | System.out.println("¡CASI!");
49 | situarMosca(casillas, MOSCA);
50 | }
51 | }
52 |
53 | if(!estaMuerta) {
54 | System.out.println("¡Has fallado!");
55 | }
56 | imprimirCasillas(casillas);
57 | return estaMuerta;
58 | }
59 |
60 | private static int posicionGolpear(int[] casillas) {
61 | Scanner sc = new Scanner(System.in);
62 | int posMosca;
63 | do {
64 | System.out.println("Introduce la posición a atacar: ");
65 | posMosca = sc.nextInt();
66 | System.out.println("La posición elegida es: " + posMosca);
67 | } while (posMosca<0 || posMosca>= casillas.length);
68 | return (posMosca-1);
69 | }
70 |
71 | private static void situarMosca(int[] casillas, int mosca) {
72 | int pos = 0;
73 | for (int i = 0; i < casillas.length; i++) {
74 | casillas[i] = 0;
75 | }
76 | do {
77 | pos = (int) (Math.random() * casillas.length);
78 | System.out.println("Posicion de la mosca: " + (pos+1));
79 | } while (pos<0 || pos>=casillas.length);
80 | casillas[pos] = mosca;
81 | }
82 |
83 | /**
84 | *
85 | * @return
86 | */
87 | private static int pedirNumeroCasillas() {
88 | Scanner sc = new Scanner(System.in);
89 | int numCasillas;
90 | do {
91 | System.out.println("Dime el número de casillas, siempre mayor a 5");
92 | numCasillas = sc.nextInt();
93 | System.out.println("Tamaño de vector es:" + numCasillas);
94 | } while (numCasillas<5);
95 | return numCasillas;
96 | }
97 |
98 | static void imprimirCasillas(int[] casillas) {
99 | System.out.print("{ ");
100 | for(int casilla: casillas){
101 | System.out.print(casilla + " ");
102 | }
103 | System.out.println("}");
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
3 |
4 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/Multiplicar.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/Multiplicar/src/es/joseluisg/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisg.dam;
2 |
3 | public class Main {
4 |
5 | public static void main(String[] args) {
6 | int[][] res = new int[10][11];
7 | // Recorro las filas
8 | for (int i = 0; i < res.length; i++) {
9 | // recorro las columnas
10 | for (int j = 0; j < res[i].length; j++) {
11 | res[i][j] = (i+1) * j;
12 | }
13 | }
14 |
15 | // Muestro los resultados
16 | for (int i = 0; i < res.length; i++) {
17 | System.out.println("Tabla Multiplicar de: " + (i+1));
18 | for (int j = 0; j < res[i].length; j++) {
19 | System.out.println("\t" + (i+1) + " x "
20 | + j + " = " +res[i][j]);
21 | }
22 | System.out.println();
23 | }
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/OperadorElvis.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/OperadorTernario/src/es/joseluisg/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisg.dam;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Main {
6 |
7 | public static void main(String[] args) {
8 | // write your code here
9 | boolean esMayorEdad;
10 | int edad;
11 |
12 | edad = getEdad();
13 |
14 | esMayorEdad = isEsMayorEdad(edad);
15 |
16 | printMayoriaEdad(esMayorEdad);
17 |
18 | }
19 |
20 | private static void printMayoriaEdad(boolean esMayorEdad) {
21 | String mensaje = (esMayorEdad) ? "Eres mayor de edad" : "Eres menor de Edad";
22 | System.out.println(mensaje);
23 | }
24 |
25 | private static boolean isEsMayorEdad(int edad) {
26 | return edad >= 18;
27 | }
28 |
29 | private static int getEdad() {
30 | int edad;
31 | Scanner sc = new Scanner(System.in);
32 | System.out.println("Dime la edad que tienes: ");
33 | edad = sc.nextInt();
34 | return edad;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
3 |
4 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/SimuladorVuelo.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/SimuladorVuelo/src/es/joseluisgs/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisgs.dam;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Main {
6 |
7 | public static void main(String[] args) throws InterruptedException {
8 | // Voy a poner unas constantes
9 | System.out.println("Simulador de Vuelo");
10 | int velocidadCrucero = 0;
11 | int altitudCrucero = 0;
12 | int velocidadActual = 0;
13 | int altitudActual = 0;
14 | final int TIEMPO_MAX = 300; // no voy a poner los 5 minutos
15 | int temporizador = 0;
16 | boolean hayFalloSistema = false;
17 | final int TIEMPO_ESPERA = 20;
18 |
19 | // Para leer de teclado
20 | Scanner scanner = new Scanner(System.in);
21 |
22 | // Pedimos la altitud y la velocidad
23 | System.out.println("Introduzca la Velocidad de Crucero: ");
24 | velocidadCrucero = scanner.nextInt();
25 | System.out.println("Introduzca la Altura de Crucero de Crucero: ");
26 | altitudCrucero = scanner.nextInt();
27 |
28 | // voy a hacer que al principio la velocidad actual y la
29 | // altura actual sean las de crucero
30 | parametrosVuelo[2] = parametrosVuelo[0];
31 | parametrosVuelo[3] = parametrosVuelo[1];
32 |
33 | System.out.println("Comenzando el vuelo");
34 | System.out.println("Velocidad Actual: " + parametrosVuelo[2]);
35 | System.out.println("Altitud Actual: " + parametrosVuelo[3]);
36 | System.out.println("Velocidad Crucero: " + parametrosVuelo[0]);
37 | System.out.println("Altitud Crucero: " + parametrosVuelo[1]);
38 |
39 | // Repetimos durante 5 min o que no haya fallo
40 | do {
41 | System.out.println("Obteniendo datos");
42 | // Obtenemos velocidad y la altura
43 | getDatosActuales(parametrosVuelo);
44 | System.out.println("Velocidad Actual: " + parametrosVuelo[2]);
45 | System.out.println("Altitud Actual: " + parametrosVuelo[1]);
46 |
47 | System.out.println("Aplicando correcciones");
48 | if(parametrosVuelo[2]!=parametrosVuelo[1])
49 | disminuir('v');
50 | else if
51 | // Corregimos la velocidad y altitud, como no puedo usar paso por referencia
52 | // uso una funcion que pando la variable la sobre escriba
53 | velocidadActual = correccionVelocidad(velocidadCrucero, velocidadActual);
54 | altitudActual = correccionAltitud(altitudCrucero, altitudActual);
55 |
56 | System.out.println("Velocidad Actual: " + velocidadActual);
57 | System.out.println("Altitud Actual: " + altitudActual);
58 |
59 | // hay fallo de sistema
60 | hayFalloSistema = probabilidad(1);
61 | // Ahora nos toca aumentar el temporizador y esperar par la siguiente medicion
62 | temporizador += 10;
63 | esperar(TIEMPO_ESPERA);
64 | System.out.println("Tiempo de Vuelo: " + temporizador);
65 | } while(temporizador<=TIEMPO_MAX && !hayFalloSistema);
66 |
67 | // Si hemos salido es porque o hemos llegado al final o porque hay fallo
68 | if (hayFalloSistema) {
69 | System.out.println("Volviendo a control manual porque ha habido un fallo en el sistema");
70 | } else {
71 | System.out.println("Volviendo a control manual porque ha terminado el tiempo");
72 | }
73 | }
74 |
75 | private static void getDatosActuales(int[] parametrosVuelo) {
76 | parametrosVuelo[2] = parametrosVuelo[2]+ getVelocidadActual();
77 | parametrosVuelo[3] = parametrosVuelo[3]+ getAltitudActual();
78 | }
79 |
80 | private static int correccionVelocidad(int velocidadCrucero, int velocidadActual) {
81 | if (velocidadActual < velocidadCrucero)
82 | velocidadActual++;
83 | else
84 | velocidadActual--;
85 |
86 | return velocidadActual;
87 | }
88 |
89 | private static int correccionAltitud(int altitudCrucero, int altitudActual) {
90 | if (altitudActual < altitudCrucero)
91 | altitudActual++;
92 | else
93 | altitudActual--;
94 |
95 | return altitudActual;
96 | }
97 |
98 |
99 | private static boolean probabilidad(int limite) {
100 | return Math.random()*100 < limite;
101 | }
102 |
103 | private static void esperar(int tiempo) throws InterruptedException {
104 | Thread.sleep(tiempo);
105 | }
106 |
107 | private static int getVelocidadActual() {
108 | return (int) (Math.random()*20) - 10;
109 | }
110 |
111 | private static int getAltitudActual() {
112 | return (int) (Math.random()*20) - 10;
113 | }
114 |
115 |
116 | }
117 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/Strings.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/StringsTokens/src/com/company/Main.java:
--------------------------------------------------------------------------------
1 | package com.company;
2 |
3 | import java.util.Locale;
4 |
5 | public class Main {
6 |
7 | public static void main(String[] args) {
8 | String cad = " Caca de la Vaca de Leganes ";
9 | cad = cad.trim();
10 | System.out.println(cad);
11 |
12 | imprimirPorToken(cad, ' ');
13 |
14 | String cad2 = "Pepito. de los palotes. Estudia DAM.";
15 | imprimirPorToken(cad2, '.');
16 | }
17 |
18 | private static void imprimirPorToken(String cad, char token) {
19 | int index = 0;
20 | int indexEnd = 0;
21 | String subCad;
22 | do {
23 | indexEnd = cad.indexOf(token, index);
24 | if(indexEnd!=-1) {
25 | subCad = cad.substring(index, indexEnd+1);
26 | System.out.println(subCad.trim());
27 | index = indexEnd + 1;
28 | } else {
29 | subCad = cad.substring(index, cad.length());
30 | System.out.println(subCad.trim());
31 | index = cad.length();
32 | }
33 | } while (index < cad.length());
34 | }
35 |
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/src/Main.java:
--------------------------------------------------------------------------------
1 | import Utils.Probabilidad;
2 | import Utils.Read;
3 | import Utils.Vector;
4 |
5 | import java.util.Arrays;
6 | import java.util.Scanner;
7 |
8 | public class Main {
9 | public static void main(String args[]) {
10 | System.out.println("HOLA");
11 | float n1 = Read.typeFloat("Dime el dividendo");
12 | float n2 = Read.typeFloat("Dime el divisor");
13 |
14 | if(n2!=0) {
15 | System.out.println((n1/n2));
16 | System.out.println(Probabilidad.sorteo(10));
17 | } else {
18 | System.err.println("No se puede dividor por 0");
19 | }
20 |
21 | int[] v = {1,2,4,5,6,7,11,89,45,34};
22 | Vector.quicksort(v,0, v.length-1);
23 | }
24 |
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/src/Utils/Probabilidad.java:
--------------------------------------------------------------------------------
1 | package Utils;
2 |
3 | public class Probabilidad {
4 | public static boolean sorteo (int probabilidad) {
5 | return (Math.random()*100 < probabilidad);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/src/Utils/Read.java:
--------------------------------------------------------------------------------
1 | package Utils;
2 |
3 | import java.util.Scanner;
4 |
5 | public class Read {
6 | public static int typeInt(String mensaje) {
7 | Scanner sc = new Scanner(System.in);
8 | boolean ok = false;
9 | int num = 0;
10 | do {
11 | try {
12 | System.out.println(mensaje);
13 | num = sc.nextInt();
14 | ok = true;
15 | } catch (Exception ex) {
16 | System.err.println("Error: no has introducido un número entero");
17 | System.out.println("Introduzca un entero");
18 | ok = false;
19 | sc.next();
20 | }
21 | } while(!ok);
22 | return num;
23 | }
24 |
25 | public static float typeFloat(String mensaje) {
26 | Scanner sc = new Scanner(System.in);
27 | boolean ok = false;
28 | float num = 0;
29 | do {
30 | try {
31 | System.out.println(mensaje);
32 | num = sc.nextFloat();
33 | ok = true;
34 | } catch (Exception ex) {
35 | System.err.println("Error: no has introducido un número entero");
36 | System.out.println("Introduzca un entero");
37 | ok = false;
38 | sc.next();
39 | }
40 | } while(!ok);
41 | return num;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/src/Utils/Vector.java:
--------------------------------------------------------------------------------
1 | package Utils;
2 |
3 | public class Vector {
4 | /**
5 | * Algoritmo de ordenación Burbuja: O(n2)
6 | * @param V
7 | */
8 | public static void burbuja(int[] V){
9 | int i, j;
10 | int aux;
11 | for(i=0;i= 0) && (aux < V[j])){
54 | V[j + 1] = V[j];
55 | j--;
56 | }
57 | V[j + 1] = aux;
58 | }
59 | }
60 |
61 | /**
62 | * Algoritmo de ordenación shell sort: tiempo de ejecución promedio es de O(n2/3) para la mayoría de las secuencias de salto.
63 | * @param V
64 | */
65 | public static void shell(int[] V) {
66 | int salto, aux, i;
67 | boolean cambios;
68 | for (salto = V.length / 2; salto != 0; salto /= 2) {
69 | cambios = true;
70 | while (cambios) {
71 | cambios = false;
72 | for (i = salto; i < V.length; i++)
73 | {
74 | if (V[i - salto] > V[i]) {
75 | aux = V[i];
76 | V[i] = V[i - salto];
77 | V[i - salto] = aux;
78 | cambios = true;
79 | }
80 | }
81 | }
82 | }
83 | }
84 |
85 | public static void quicksort(int A[], int izq, int der) {
86 |
87 | int pivote=A[izq];
88 | int i=izq;
89 | int j=der;
90 | int aux;
91 |
92 | // Buscamos el pivote
93 | while(i < j){
94 | while(A[i] <= pivote && i < j) i++;
95 | while(A[j] > pivote) j--;
96 | if (i < j) {
97 | aux= A[i];
98 | A[i]=A[j];
99 | A[j]=aux;
100 | }
101 | }
102 |
103 | // Ya lo tenemsos en el lugar correcto, lo colocamos en el pivote
104 | A[izq]=A[j];
105 | A[j]=pivote;
106 |
107 | if(izq < j-1)
108 | quicksort(A,izq,j-1); // ordenamos subarray izquierdo
109 | if(j+1 < der)
110 | quicksort(A,j+1,der); // ordenamos subarray derecho
111 |
112 | }
113 |
114 | // secuencial search
115 | public static int busquedaSecuencial(int[] A, int x){
116 | int i;
117 | for(i=0;ider)
127 | return -1;
128 | centro=(izq+der)/2;
129 | if(A[centro]==x)
130 | return centro;
131 | if(A[centro]>x)
132 | return busquedaBinaria(A,x,izq,centro-1);
133 | else
134 | return busquedaBinaria(A,x,centro+1,der);
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/Soluciones/UtilsPackage/untitled.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /target/
3 |
4 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple Java application that includes a class with main()
method
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/project-template.xml:
--------------------------------------------------------------------------------
1 |
2 | IJ_BASE_PACKAGE
3 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/Informe.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/VectoresEficiencia/Informe.pdf
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/Informe.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/VectoresEficiencia/Informe.xlsx
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/VectoresEficiencia.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/bus_binaria.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;1389
3 | 2000;690
4 | 3000;646
5 | 4000;857
6 | 5000;608
7 | 6000;597
8 | 7000;592
9 | 8000;3050
10 | 9000;175
11 | 10000;287
12 | 11000;150
13 | 12000;158
14 | 13000;142
15 | 14000;154
16 | 15000;143
17 | 16000;203
18 | 17000;152
19 | 18000;154
20 | 19000;573
21 | 20000;351
22 | 21000;657
23 | 22000;213
24 | 23000;686
25 | 24000;209
26 | 25000;487
27 | 26000;261
28 | 27000;485
29 | 28000;242
30 | 29000;587
31 | 30000;541
32 | 31000;2012
33 | 32000;403
34 | 33000;550
35 | 34000;256
36 | 35000;389
37 | 36000;224
38 | 37000;195
39 | 38000;177
40 | 39000;186
41 | 40000;163
42 | 41000;195
43 | 42000;182
44 | 43000;228
45 | 44000;3969
46 | 45000;551
47 | 46000;595
48 | 47000;4143
49 | 48000;739
50 | 49000;530
51 | 50000;587
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/bus_secuencial.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;12911
3 | 2000;9349
4 | 3000;18768
5 | 4000;15992
6 | 5000;23698
7 | 6000;7165
8 | 7000;44363
9 | 8000;30263
10 | 9000;72104
11 | 10000;17669
12 | 11000;7580
13 | 12000;20765
14 | 13000;20181
15 | 14000;26918
16 | 15000;20304
17 | 16000;2129
18 | 17000;812
19 | 18000;1032
20 | 19000;2011
21 | 20000;868
22 | 21000;1061
23 | 22000;1426
24 | 23000;2311
25 | 24000;1592
26 | 25000;2231
27 | 26000;1684
28 | 27000;3358
29 | 28000;2306
30 | 29000;2138
31 | 30000;1457
32 | 31000;957
33 | 32000;1831
34 | 33000;1931
35 | 34000;2248
36 | 35000;1225
37 | 36000;3264
38 | 37000;1309
39 | 38000;2550
40 | 39000;1974
41 | 40000;1822
42 | 41000;586
43 | 42000;2073
44 | 43000;2733
45 | 44000;1315
46 | 45000;825
47 | 46000;1069
48 | 47000;1825
49 | 48000;3857
50 | 49000;1601
51 | 50000;2067
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/ord_burbuja.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joseluisgs/Programacion-03-2021-2022/2472816f0da2d7f25f1f43a36763fe92f7539e14/Soluciones/VectoresEficiencia/data/ord_burbuja.csv
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/ord_inserccion.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;829869
3 | 2000;1739778
4 | 3000;473022
5 | 4000;911650
6 | 5000;1301413
7 | 6000;1835462
8 | 7000;2482591
9 | 8000;3290142
10 | 9000;4250891
11 | 10000;5054714
12 | 11000;6071017
13 | 12000;7274309
14 | 13000;8488681
15 | 14000;9821690
16 | 15000;11577359
17 | 16000;13666852
18 | 17000;14832659
19 | 18000;16493009
20 | 19000;18010676
21 | 20000;20091348
22 | 21000;22428128
23 | 22000;24139812
24 | 23000;26656564
25 | 24000;28868910
26 | 25000;31154896
27 | 26000;34695080
28 | 27000;36399400
29 | 28000;40772400
30 | 29000;43744356
31 | 30000;45175792
32 | 31000;47950092
33 | 32000;51617564
34 | 33000;54394796
35 | 34000;58272804
36 | 35000;61385960
37 | 36000;65571776
38 | 37000;68550584
39 | 38000;72729912
40 | 39000;76832832
41 | 40000;80337592
42 | 41000;85284192
43 | 42000;91894216
44 | 43000;93595880
45 | 44000;97176424
46 | 45000;101764312
47 | 46000;106959456
48 | 47000;110736568
49 | 48000;115714616
50 | 49000;127730496
51 | 50000;125541360
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/ord_quicksort.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;176869
3 | 2000;133851
4 | 3000;207211
5 | 4000;273317
6 | 5000;324807
7 | 6000;418666
8 | 7000;498710
9 | 8000;628598
10 | 9000;714657
11 | 10000;527870
12 | 11000;585531
13 | 12000;639736
14 | 13000;737595
15 | 14000;753319
16 | 15000;823662
17 | 16000;882092
18 | 17000;953621
19 | 18000;997173
20 | 19000;1031506
21 | 20000;1155529
22 | 21000;1233830
23 | 22000;1262718
24 | 23000;1255637
25 | 24000;1459693
26 | 25000;1446597
27 | 26000;1635066
28 | 27000;1732200
29 | 28000;1629059
30 | 29000;1886890
31 | 30000;1666105
32 | 31000;1910050
33 | 32000;1887012
34 | 33000;1907806
35 | 34000;1923832
36 | 35000;2011772
37 | 36000;2041747
38 | 37000;2106214
39 | 38000;2158493
40 | 39000;2265821
41 | 40000;2266195
42 | 41000;2423531
43 | 42000;2435214
44 | 43000;2641734
45 | 44000;2611162
46 | 45000;2684815
47 | 46000;2886464
48 | 47000;2882216
49 | 48000;3072979
50 | 49000;3256386
51 | 50000;3267341
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/ord_seleccion.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;1413595
3 | 2000;1229309
4 | 3000;905744
5 | 4000;1591458
6 | 5000;2313310
7 | 6000;3255412
8 | 7000;4422446
9 | 8000;6073291
10 | 9000;7153701
11 | 10000;8956411
12 | 11000;10671313
13 | 12000;12485467
14 | 13000;15366739
15 | 14000;17666456
16 | 15000;19552648
17 | 16000;21849532
18 | 17000;24962734
19 | 18000;27660134
20 | 19000;30694432
21 | 20000;34105888
22 | 21000;37328052
23 | 22000;41413896
24 | 23000;44757176
25 | 24000;48803288
26 | 25000;52879396
27 | 26000;57666524
28 | 27000;61609404
29 | 28000;67527528
30 | 29000;70978440
31 | 30000;75807072
32 | 31000;80934520
33 | 32000;86353432
34 | 33000;91398768
35 | 34000;96845472
36 | 35000;102620840
37 | 36000;109034176
38 | 37000;114940912
39 | 38000;121034960
40 | 39000;127871920
41 | 40000;134507696
42 | 41000;140937920
43 | 42000;150097472
44 | 43000;154271584
45 | 44000;161348144
46 | 45000;168849168
47 | 46000;176437040
48 | 47000;183981312
49 | 48000;191363776
50 | 49000;200041712
51 | 50000;207858272
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/data/ord_shell.csv:
--------------------------------------------------------------------------------
1 | TAMAÑO;TIEMPO(NS)
2 | 1000;557370
3 | 2000;368811
4 | 3000;353881
5 | 4000;414693
6 | 5000;439231
7 | 6000;509301
8 | 7000;647554
9 | 8000;807685
10 | 9000;841785
11 | 10000;1104174
12 | 11000;1094288
13 | 12000;1266284
14 | 13000;1352221
15 | 14000;1491102
16 | 15000;1538681
17 | 16000;2106656
18 | 17000;1818502
19 | 18000;2016717
20 | 19000;2140404
21 | 20000;2439036
22 | 21000;2842779
23 | 22000;2387951
24 | 23000;2596697
25 | 24000;3020300
26 | 25000;3010540
27 | 26000;3081519
28 | 27000;3050848
29 | 28000;3428181
30 | 29000;3558858
31 | 30000;3621415
32 | 31000;3985042
33 | 32000;5282731
34 | 33000;4748673
35 | 34000;4432798
36 | 35000;4667255
37 | 36000;4890294
38 | 37000;5324710
39 | 38000;4990855
40 | 39000;5606236
41 | 40000;5827705
42 | 41000;6804146
43 | 42000;6946409
44 | 43000;5697740
45 | 44000;6226823
46 | 45000;6251228
47 | 46000;6308084
48 | 47000;6204119
49 | 48000;7537007
50 | 49000;6430203
51 | 50000;6979350
52 |
--------------------------------------------------------------------------------
/Soluciones/VectoresEficiencia/src/es/joseluisgs/dam/Main.java:
--------------------------------------------------------------------------------
1 | package es.joseluisgs.dam;
2 |
3 | import java.io.BufferedWriter;
4 | import java.io.FileWriter;
5 | import java.io.IOException;
6 | import java.io.PrintWriter;
7 | import java.util.Arrays;
8 |
9 | public class Main {
10 | // Variables globales. Solo en este caso es necesario
11 | private static int MAX_SIZE = 50000; // Usaremos este para no tardar mucho
12 | private static int MAX_STEP = 1000; // lo que vamos incrementando
13 | private static int MAX_ITER = 3;// numero de intentos que tomaremos para calcular la mediaAritmetica
14 |
15 | private static int SEARCH_VALUE = (int) (Math.random() * MAX_SIZE); // Número a Buscar
16 |
17 | private static float[][] tMedio = new float[MAX_SIZE / MAX_STEP][2]; // Almacenamos la cantidad y el tiempo medio
18 | private static long[] tiempos = new long[MAX_ITER];
19 |
20 | private static long tiempoInicial, tiempoFinal, tiempoTotal; // Tiempos para cornometro
21 | private static int timeIndex = 0; // tiempo a almacenar
22 |
23 | public static void main(String[] args) {
24 | testBurbuja();
25 | testSeleccion();
26 | testInserccion();
27 | testShell();
28 | testQuicksort();
29 |
30 | // Debemos subir el número de elementos....
31 | testBusquedaLineal();
32 | testBusquedaBinaria();
33 | }
34 |
35 |
36 | /**
37 | * Algoritmo de ordenación Burbuja: O(n2)
38 | * @param V
39 | */
40 | public static void burbuja(int[] V){
41 | int i, j;
42 | int aux;
43 | for(i=0;i= 0) && (aux < V[j])){
86 | V[j + 1] = V[j];
87 | j--;
88 | }
89 | V[j + 1] = aux;
90 | }
91 | }
92 |
93 | /**
94 | * Algoritmo de ordenación shell sort: tiempo de ejecución promedio es de O(n2/3) para la mayoría de las secuencias de salto.
95 | * @param V
96 | */
97 | public static void shell(int[] V) {
98 | timeIndex = 0;
99 | int salto, aux, i;
100 | boolean cambios;
101 | for (salto = V.length / 2; salto != 0; salto /= 2) {
102 | cambios = true;
103 | while (cambios) {
104 | cambios = false;
105 | for (i = salto; i < V.length; i++)
106 | {
107 | if (V[i - salto] > V[i]) {
108 | aux = V[i];
109 | V[i] = V[i - salto];
110 | V[i - salto] = aux;
111 | cambios = true;
112 | }
113 | }
114 | }
115 | }
116 | }
117 |
118 | public static void quicksort(int A[], int izq, int der) {
119 |
120 | int pivote=A[izq];
121 | int i=izq;
122 | int j=der;
123 | int aux;
124 |
125 | // Buscamos el pivote
126 | while(i < j){
127 | while(A[i] <= pivote && i < j) i++;
128 | while(A[j] > pivote) j--;
129 | if (i < j) {
130 | aux= A[i];
131 | A[i]=A[j];
132 | A[j]=aux;
133 | }
134 | }
135 |
136 | // Ya lo tenemsos en el lugar correcto, lo colocamos en el pivote
137 | A[izq]=A[j];
138 | A[j]=pivote;
139 |
140 | if(izq < j-1)
141 | quicksort(A,izq,j-1); // ordenamos subarray izquierdo
142 | if(j+1 < der)
143 | quicksort(A,j+1,der); // ordenamos subarray derecho
144 |
145 | }
146 |
147 | // secuencial search
148 | public static int busquedaSecuencial(int[] A, int x){
149 | int i;
150 | for(i=0;ider)
160 | return -1;
161 | centro=(izq+der)/2;
162 | if(A[centro]==x)
163 | return centro;
164 | if(A[centro]>x)
165 | return busquedaBinaria(A,x,izq,centro-1);
166 | else
167 | return busquedaBinaria(A,x,centro+1,der);
168 | }
169 |
170 |
171 |
172 | /**
173 | * Crea un Vector con números aleatorios
174 | * @param tam
175 | * @return
176 | */
177 | public static int[] crearVector(int tam) {
178 | int[] v = new int[tam];
179 | // Creo el vector con números aleatorios hasta tam
180 | for (int i = 0; i< v.length;i++){
181 | v[i] = (int) (Math.random()*tam);
182 | }
183 | // Para la busqueda voy a meter un valor propio para las búsquedas, siempre al final
184 | v[(int)(Math.random()*tam)] = SEARCH_VALUE;
185 | return v;
186 | }
187 |
188 | /**
189 | * Calcula la media aritmética de un array de longs
190 | * @param v
191 | * @return
192 | */
193 | public static float mediaAritmetica (long v[]) {
194 | long sum = 0; // variable que almacena las suma parcial.
195 | for(int i=0; i