├── .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 | ![imagen](https://thesoftclix.com/wp-content/uploads/2019/09/unnamed-1.png) 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 | [![Twitter](https://img.shields.io/twitter/follow/joseluisgonsan?style=social)](https://twitter.com/joseluisgonsan) 29 | [![GitHub](https://img.shields.io/github/followers/joseluisgs?style=social)](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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/BatallaMordor/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/BatallaMordor/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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 | 9 | 10 | 14 | 15 | 19 | 20 | 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 | 7 | 8 | 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 | 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 | 14 | 17 | 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 | 7 | -------------------------------------------------------------------------------- /Soluciones/Binarios/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Soluciones/Binarios/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Soluciones/Binarios/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Soluciones/Binarios/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 74 | 75 | 76 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 1636990834256 95 | 103 | 104 | 105 | 106 | 108 | 109 | 118 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/LullGasol/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/LullGasol/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/LullGasol/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Soluciones/MavenTemplate/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Soluciones/MavenTemplate/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 9 | 10 | 14 | 15 | 19 | 20 | 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 | 7 | 8 | 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 | 9 | 10 | -------------------------------------------------------------------------------- /Soluciones/MoscaMatriz-Kotlin/consoleApp.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 17 | 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 | 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 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/Multiplicar/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/Multiplicar/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/Multiplicar/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/OperadorTernario/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/OperadorTernario/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/OperadorTernario/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/SimuladorVuelo/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/SimuladorVuelo/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/SimuladorVuelo/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/StringsTokens/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/StringsTokens/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/StringsTokens/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 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 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Soluciones/VectoresEficiencia/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Soluciones/VectoresEficiencia/.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Soluciones/VectoresEficiencia/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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