1 00:00:00,620 --> 00:00:11,019 Voy a grabar este ejercicio, por lo tanto, si estáis hablando, me permitís y se autorizáis a que os grabe. 2 00:00:11,539 --> 00:00:17,399 Venga, entonces, nosotros hemos hecho este ejercicio, lo voy a mirar, así lo podéis mirar, ¿vale? 3 00:00:17,420 --> 00:00:19,379 Esto es lo que hemos hecho anteriormente. 4 00:00:19,980 --> 00:00:21,239 Lo quiero modificar un poquito. 5 00:00:21,239 --> 00:00:35,280 Quiero hacer que en vez de estar leyendo una palabra y luego comprobar si esta palabra está ya repetida en mi array o no, lo que quiero hacer es hacerlo en dos pasos. 6 00:00:35,460 --> 00:00:44,280 Primero leo todas las palabras y una vez leídas todas las palabras, pues voy a comprobar si hay o no duplicados. 7 00:00:44,280 --> 00:01:09,780 ¿Vale? Entonces, para empezar, en vez de pedirlo las palabras, ¿vale? Me salto esta parte de aquí, la quito y asumo, a ver qué es, palabra.length, ahora miramos, ¿cómo lo hacemos? 8 00:01:09,780 --> 00:01:11,920 Pues asumo que me dan 9 00:01:11,920 --> 00:01:13,900 Un array ya con cinco palabras 10 00:01:13,900 --> 00:01:15,340 ¿Vale? Porque ahora esta cosa 11 00:01:15,340 --> 00:01:16,840 Es distinta 12 00:01:16,840 --> 00:01:18,959 O sea, ahora son separadas 13 00:01:18,959 --> 00:01:20,700 ¿Vale? Son dos problemas completamente separados 14 00:01:20,700 --> 00:01:22,239 Uno es leer cinco palabras 15 00:01:22,239 --> 00:01:23,879 Y eso ya lo hemos hecho veinte mil veces 16 00:01:23,879 --> 00:01:26,379 ¿Vale? Entonces eso ya lo sabéis hacer 17 00:01:26,379 --> 00:01:29,299 Lo que pasa es que al final de la primera parte 18 00:01:29,299 --> 00:01:35,709 Pues lo que tendré 19 00:01:35,709 --> 00:01:37,469 Es tener un array 20 00:01:37,469 --> 00:01:38,890 Con cinco palabras dentro 21 00:01:38,890 --> 00:01:40,329 Que serán la palabra 22 00:01:40,329 --> 00:01:49,109 Sí, sí, pero ¿qué más me da? 23 00:01:50,290 --> 00:01:51,150 Lo hemos visto 24 00:01:51,150 --> 00:01:53,209 Cómo se leen cinco cosas que se ponen aquí 25 00:01:53,209 --> 00:01:55,189 Es muy fácil, luego después si quieres lo hago 26 00:01:55,189 --> 00:01:57,349 Pero eso no es la parte difícil 27 00:01:57,349 --> 00:01:58,950 Lo que pasa es que 28 00:01:58,950 --> 00:02:01,209 Aquí leeré las cinco palabras y cuando paso 29 00:02:01,209 --> 00:02:03,150 De este de aquí, tendré una situación 30 00:02:03,150 --> 00:02:05,230 Idéntica a esta, tengo un array con cinco palabras 31 00:02:05,230 --> 00:02:06,310 Dentro 32 00:02:06,310 --> 00:02:09,550 Que eran las palabras que hemos utilizado antes 33 00:02:09,550 --> 00:02:14,860 ¿Vale? Entonces esto 34 00:02:14,860 --> 00:02:21,240 me debería dar que sí hay duplicados, pero lo hago en dos posiciones. Cuando llego aquí, 35 00:02:21,400 --> 00:02:27,319 yo sé que en palabra hay cinco distintas, debería ser palabras, pero bueno, hay cinco 36 00:02:27,319 --> 00:02:36,159 distintas palabras que tengo que comprobar. Entonces, ¿qué hago ahora? Antes yo tenía 37 00:02:36,159 --> 00:02:41,020 ya una palabra y decía, esta palabra la compruebo con todos. Ahora no es exactamente así. Ahora 38 00:02:41,020 --> 00:02:48,020 Ahora tengo que recorrer mi array, pillar la primera palabra y comprobarla con todas 39 00:02:48,020 --> 00:02:55,219 las demás, luego pillar la segunda y comprobarla con todas las demás, luego la tercera y comprobarla 40 00:02:55,219 --> 00:02:57,460 con todas las demás, ¿sí? 41 00:02:58,460 --> 00:02:59,740 Entonces, ¿cómo lo hago? 42 00:03:00,439 --> 00:03:16,229 For int, en la ronda, int, se puede hacer de varias formas, 43 00:03:16,810 --> 00:03:21,210 hagámoslo sencillo, int j es igual a cero, 44 00:03:21,650 --> 00:03:25,650 j menor de palabra punto lengd, ¿vale? 45 00:03:25,689 --> 00:03:28,150 De todas las palabras, j más más, 46 00:03:34,840 --> 00:03:37,120 entonces, este de aquí se hará cinco veces, 47 00:03:37,120 --> 00:03:39,000 cada vez que lo hago 48 00:03:39,000 --> 00:03:41,199 pillaré una palabra distinta 49 00:03:41,199 --> 00:03:42,580 mi palabra actual 50 00:03:42,580 --> 00:03:43,900 será 51 00:03:43,900 --> 00:03:48,620 hola, buenos días 52 00:03:48,620 --> 00:03:53,590 pillo palabra de j 53 00:03:53,590 --> 00:03:56,250 entonces la primera vez me pillará la palabra 54 00:03:56,250 --> 00:03:58,210 en posición 0 55 00:03:58,210 --> 00:04:00,270 la segunda vez la palabra en posición 1 56 00:04:00,270 --> 00:04:02,729 la tercera vez la palabra en posición 3 57 00:04:02,729 --> 00:04:04,009 etc, etc, etc 58 00:04:04,009 --> 00:04:08,710 esto en cada ciclo 59 00:04:08,710 --> 00:04:09,789 de este for exterior 60 00:04:09,789 --> 00:04:12,150 pues me pillará una palabra distinta 61 00:04:12,150 --> 00:04:18,430 Y luego lo que tendré que hacer es con esta palabra comprobar si está duplicada o no 62 00:04:18,430 --> 00:04:23,350 Por lo tanto, desde Y0 y por todas las palabras 63 00:04:23,350 --> 00:04:32,410 Me pregunto si X es igual a la palabra actual otra vez 64 00:04:32,410 --> 00:04:34,310 Si son iguales 65 00:04:34,310 --> 00:04:40,050 Digo que sí y pongo duplicada true 66 00:04:40,050 --> 00:04:41,569 Si no, no 67 00:04:41,569 --> 00:05:00,069 Esto funciona. Si lo lanzo, me dice que hay duplicados, pero si también le pongo que no hay duplicados, también me dirá que hay duplicados. 68 00:05:00,689 --> 00:05:15,709 ¿Por qué? Porque estoy haciendo todas con todas, incluida la que estoy considerando, la vuelve a pillar aquí también. 69 00:05:15,709 --> 00:05:22,290 Y entonces, ella misma será siempre igual a ella misma, ¿vale? 70 00:05:22,449 --> 00:05:38,980 Vamos a intentar hacer esto, me pregunto si son iguales, siempre y cuando no sean la misma posición. 71 00:05:40,839 --> 00:05:50,350 Si i no es j, y las dos palabras son iguales, entonces hay un duplicado, ¿se entiende? 72 00:05:50,350 --> 00:05:53,230 Si yo estoy comprobando 73 00:05:53,230 --> 00:05:55,689 Este array de aquí 74 00:05:55,689 --> 00:05:56,550 Con sí mismo 75 00:05:56,550 --> 00:05:57,769 Y pillo la A 76 00:05:57,769 --> 00:05:59,569 Y empiezo desde aquí 77 00:05:59,569 --> 00:06:02,550 Encontraré otra vez la A 78 00:06:02,550 --> 00:06:04,889 Y diré, A es igual a A 79 00:06:04,889 --> 00:06:06,490 Entonces le estoy diciendo 80 00:06:06,490 --> 00:06:07,589 Al if interno 81 00:06:07,589 --> 00:06:10,870 Oye, cuidado, pero que si yo había seleccionado esto 82 00:06:10,870 --> 00:06:12,689 Entonces mi J es 0 83 00:06:12,689 --> 00:06:14,790 ¿Cuándo vas a 84 00:06:14,790 --> 00:06:16,490 Pillar I para comprobarlas 85 00:06:16,490 --> 00:06:17,089 Con todas 86 00:06:17,089 --> 00:06:20,170 Si I es igual a esta J 87 00:06:20,170 --> 00:06:23,230 Pues en ese caso no hagas la comparación 88 00:06:23,230 --> 00:06:25,810 Porque estás comparando la misma posición 89 00:06:25,810 --> 00:06:27,389 No me vale la misma posición 90 00:06:27,389 --> 00:06:30,689 Entonces con esto 91 00:06:30,689 --> 00:06:33,870 Ahora ya me dice que no hay duplicado 92 00:06:33,870 --> 00:06:36,689 Porque ya ahora no considera 93 00:06:36,689 --> 00:06:38,050 La misma 94 00:06:38,050 --> 00:06:40,029 Si hay un duplicado 95 00:06:40,029 --> 00:06:44,720 Si que pilla que hay duplicados 96 00:06:44,720 --> 00:06:47,949 O sea que esto ya 97 00:06:47,949 --> 00:06:49,329 Funcionaría 98 00:06:49,329 --> 00:06:51,050 Duda 99 00:06:51,050 --> 00:06:53,110 ¿Puedo mejorar esto? 100 00:06:54,069 --> 00:06:55,689 Sí, ¿cómo mejoro esto? 101 00:07:03,500 --> 00:07:07,959 Vale, ¿cómo hago que si ya he encontrado un duplicado salga? 102 00:07:09,800 --> 00:07:11,079 Aquí ya lo estoy haciendo. 103 00:07:15,629 --> 00:07:16,149 ¿Arriba qué? 104 00:07:42,519 --> 00:07:45,699 No, porque si lo pongo aquí dentro, por cada ciclo de forra haré esa cosa. 105 00:07:46,420 --> 00:07:47,500 ¿Esta es la primera opción? 106 00:07:47,980 --> 00:07:54,600 ¿Os gusta? 107 00:07:59,500 --> 00:07:59,939 ¿Funciona? 108 00:08:00,019 --> 00:08:00,160 Sí. 109 00:08:01,160 --> 00:08:05,420 Pero si yo tengo, si yo a la segunda palabra, o sea, a la primera palabra, 110 00:08:05,560 --> 00:08:08,540 imagínate que la primera y la segunda se han duplicado. 111 00:08:08,620 --> 00:08:10,139 Ya he pillado que son duplicadas. 112 00:08:10,500 --> 00:08:17,019 Seguiré igualmente haciendo estas cosas varias veces una vez por cada posición de la palabra. 113 00:08:18,000 --> 00:08:26,339 Pero si he encontrado el duplicado, ¿para qué seguir? 114 00:08:27,639 --> 00:08:32,700 O sea, tened en cuenta que antes tenía que seguir hasta el final porque me estaban dando las palabras 115 00:08:32,700 --> 00:08:35,159 y cada palabra que me daban la tenía que buscar. 116 00:08:35,159 --> 00:08:37,259 Entonces tenía que hacerlo cinco veces sí o sí. 117 00:08:37,840 --> 00:08:39,620 Pero ahora las palabras ya me las han dado. 118 00:08:40,639 --> 00:08:41,500 Entonces ya tengo la palabra. 119 00:08:41,500 --> 00:08:43,220 Con que pille un duplicado 120 00:08:43,220 --> 00:08:45,019 Pues ya no tiene sentido 121 00:08:45,019 --> 00:08:46,100 Seguir adelante 122 00:08:46,100 --> 00:08:48,179 Buscando otros duplicados 123 00:08:48,179 --> 00:08:49,320 Lo he encontrado, salvo 124 00:08:49,320 --> 00:08:57,840 Más cositas que podríamos mejorar 125 00:08:57,840 --> 00:09:13,360 Si yo he pillado la primera 126 00:09:13,360 --> 00:09:15,679 Y no hay duplicados 127 00:09:15,679 --> 00:09:17,360 No tiene sentido 128 00:09:17,360 --> 00:09:19,120 Volver a mirar la primera 129 00:09:19,120 --> 00:09:19,799 Con los demás 130 00:09:19,799 --> 00:09:21,580 Porque ya no hay duplicado, lo sé 131 00:09:21,580 --> 00:09:22,639 He comprobado 132 00:09:22,639 --> 00:09:26,080 He mirado si la primera 133 00:09:26,080 --> 00:09:28,659 Era igual a la segunda, tercera, cuarta y quinta 134 00:09:28,659 --> 00:09:31,799 y no he encontrado nunca un duplicado. 135 00:09:32,019 --> 00:09:35,059 Quiere decir que tiene poco sentido cuando miro la segunda 136 00:09:35,059 --> 00:09:37,200 volver a comprobar si la primera es igual. 137 00:09:37,539 --> 00:09:38,419 Ya la he comprobado. 138 00:09:38,899 --> 00:09:40,500 Entonces, cuando voy a comprobar, 139 00:09:41,279 --> 00:09:46,120 las palabras anteriores, o sea, las que están antes de J, 140 00:09:46,919 --> 00:09:50,600 sustancialmente ya están pilladas, ya están comprobadas, 141 00:09:50,600 --> 00:09:54,120 que no hay duplicado o que sí, pero si hay sí, ya he salido. 142 00:09:54,120 --> 00:09:57,559 Y si no, ya hemos comprobado 143 00:09:57,559 --> 00:09:58,860 Ya que las anteriores 144 00:09:58,860 --> 00:09:59,700 Ya están cosas 145 00:09:59,700 --> 00:10:02,279 Y de hecho, ahora puedo quitarme hasta esto 146 00:10:02,279 --> 00:10:06,399 Porque como empiezo siempre 147 00:10:06,399 --> 00:10:07,320 De j más 1 148 00:10:07,320 --> 00:10:11,179 Pues no será nunca igual a j 149 00:10:11,179 --> 00:10:14,279 Esto era de j más 1 al final 150 00:10:14,279 --> 00:10:20,610 Entonces, más optimizado todavía 151 00:10:20,610 --> 00:10:24,490 Aquí me lo pilla que hay duplicados 152 00:10:24,490 --> 00:10:25,769 Si pongo esto 153 00:10:25,769 --> 00:10:27,830 Me debería pillar que no hay duplicados 154 00:10:27,830 --> 00:10:30,450 Si pongo 155 00:10:30,450 --> 00:10:32,929 aquí por ejemplo 156 00:10:32,929 --> 00:10:35,450 dos veces el mismo 157 00:10:35,450 --> 00:10:37,629 me pilla que si hay duplicados 158 00:10:37,629 --> 00:10:39,769 y ahora si mirar 159 00:10:39,769 --> 00:10:41,090 aquí cuantas veces 160 00:10:41,090 --> 00:10:43,570 hago las comprobaciones 161 00:10:43,570 --> 00:10:45,289 vería que las hago menos que antes 162 00:10:45,289 --> 00:10:47,429 ¿vale? entonces esto ya es 163 00:10:47,429 --> 00:10:49,590 el nivel de optimización al que podemos 164 00:10:49,590 --> 00:10:51,669 llegar y que consideramos 165 00:10:51,669 --> 00:10:53,149 como optimizado ¿vale? 166 00:10:53,710 --> 00:10:54,269 aquí 167 00:10:54,269 --> 00:10:57,610 la optimización es que en cuanto 168 00:10:57,610 --> 00:10:58,769 encuentro un duplicado 169 00:10:58,769 --> 00:11:00,230 ¿Ya se ha acabado? 170 00:11:01,250 --> 00:11:04,730 Y aquí la optimización es que no empiezo siempre 171 00:11:04,730 --> 00:11:09,330 Una vez fijada la palabra que voy a comprobar 172 00:11:09,330 --> 00:11:12,769 No empiezo siempre desde el principio saltándome esa palabra 173 00:11:12,769 --> 00:11:15,870 Empiezo siempre desde la siguiente palabra hasta el fondo 174 00:11:15,870 --> 00:11:16,970 ¿Vale? 175 00:11:17,169 --> 00:11:24,389 Porque asumo que en rondas anteriores ya he comprobado que esta no está en ninguna de estas casillas 176 00:11:24,389 --> 00:11:26,350 Entonces tampoco está en esta 177 00:11:26,350 --> 00:11:28,450 Es inútil que cuando miro esta palabra aquí 178 00:11:28,450 --> 00:11:29,990 Vuelva a comprobar que está aquí 179 00:11:29,990 --> 00:11:33,129 ¿Se entiende? 180 00:11:35,409 --> 00:11:37,669 Ten en cuenta que como encuentro un duplicado 181 00:11:37,669 --> 00:11:40,049 Ya dejo de hacer el trabajo y salgo 182 00:11:40,049 --> 00:11:47,159 Bonito este ejercicio