Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solucion Reto #1 Java #1284

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #1
* ¿ES UN ANAGRAMA?
* Fecha publicación enunciado: 03/01/22
* Fecha publicación resolución: 10/01/22
* Dificultad: MEDIA
*
* Enunciado: Escribe una función que reciba dos palabras (String) y retorne verdadero o falso (Boolean) según sean o no anagramas.
* Un Anagrama consiste en formar una palabra reordenando TODAS las letras de otra palabra inicial.
* NO hace falta comprobar que ambas palabras existan.
* Dos palabras exactamente iguales no son anagrama.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge1 {
public static boolean isAnAnagrama(String t1, String t2){
if(t1.equals(t2)){
return false;
}
//Convertimos los String a un Array de char
char[] a1 = t1.toCharArray();
char[] a2 = t2.toCharArray();

// Usamos el algoritmo de Fisher-Yates para desordenar el arreglo 1
for(int i=a1.length-1; i>0; i--){
// Genera un indice aleatorio entre 0 y i
int sorteo = (int) (Math.random() * (i + 1));

// Intercambio el elemento en la posicion i con el elemento en la posicion sorteo
char temp = a1[i];
a1[i] = a1[sorteo];
a1[sorteo] = temp;
}

// Usamos el algoritmo de Fisher-Yates para desordenar el segundo arreglo
for(int i=a2.length-1; i>0; i--){
// Genera un indice aleatorio entre 0 y i
int sorteo = (int) (Math.random() * (i + 1));

// Intercambio el elemento en la posicion i con el elemento en la posicion sorteo
char temp = a2[i];
a2[i] = a2[sorteo];
a2[sorteo] = temp;
}

//Mostramos en pantalla los anagramas
System.out.print("Anagrama 1: ");
for(char ana : a1){
System.out.print(ana);
}
System.out.println();
System.out.print("Anagrama 2: ");
for(char ana2 : a2){
System.out.print(ana2);
}
System.out.println();

// Retornamos true que simboliza que si es un anagrama
return true;
}

public static void main(String[] args){
boolean isAnagrama = isAnAnagrama("Hola","Programador");

System.out.println(isAnagrama);
}
}
33 changes: 33 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #2
* LA SUCESIÓN DE FIBONACCI
* Fecha publicación enunciado: 10/01/22
* Fecha publicación resolución: 17/01/22
* Dificultad: DIFÍCIL
*
* Enunciado: Escribe un programa que imprima los 50 primeros números de la sucesión de Fibonacci empezando en 0.
* La serie Fibonacci se compone por una sucesión de números en la que el siguiente siempre es la suma de los dos anteriores.
* 0, 1, 1, 2, 3, 5, 8, 13...
* En la primera iteración muestro cero y preparo la suma que mostrare en la siguiente
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge2 {
public static void main(String[] args){
int n0=0, n1=1;

for(int i=0; i< 50; i++){
System.out.println(n0);
int fib = n0+n1;
n0=n1;
n1= fib;
}

}
}
43 changes: 43 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge3.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #3
* ¿ES UN NÚMERO PRIMO?
* Fecha publicación enunciado: 17/01/22
* Fecha publicación resolución: 24/01/22
* Dificultad: MEDIA
*
* Enunciado: Escribe un programa que se encargue de comprobar si un número es o no primo.
* Hecho esto, imprime los números primos entre 1 y 100.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge3 {
public static boolean esPrimo(int num){
boolean primo=false;
int contPrimo=0;
for(int i=1; i<=num; i++){
if(num % i == 0){
contPrimo++;
}
}
if(contPrimo == 2){
primo = true;
return primo;
}else{
return primo;
}
}
public static void main(String[] args){
for(int i=0; i<100; i++){
boolean isPrimo = esPrimo(i);
if(isPrimo){
System.out.println(i);
}
}
}
}
43 changes: 43 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge4.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #4
* ÁREA DE UN POLÍGONO
* Fecha publicación enunciado: 24/01/22
* Fecha publicación resolución: 31/01/22
* Dificultad: FÁCIL
*
* Enunciado: Crea UNA ÚNICA FUNCIÓN (importante que sólo sea una) que sea capaz de calcular y retornar el área de un polígono.
* - La función recibirá por parámetro sólo UN polígono a la vez.
* - Los polígonos soportados serán Triángulo, Cuadrado y Rectángulo.
* - Imprime el cálculo del área de un polígono de cada tipo.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge4 {
public static void areaPoligono(int a, int b, int t){
switch (t){
case 1:
System.out.println("Triguangulo: " + (a*b)/2);
break;
case 2:
System.out.println("Rectangulo: " + a*b);
break;
case 3:
System.out.println("Cuadrado: "+ Math.pow(a,2));
break;
default :
System.out.println("Estas equivocado mijitico");
break;
}
}
public static void main(String[] args){
for(int i=1; i<=3; i++){
areaPoligono(2, 4, i);
}
}
}
34 changes: 34 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge6.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #6
* INVIRTIENDO CADENAS
* Fecha publicación enunciado: 07/02/22
* Fecha publicación resolución: 14/02/22
* Dificultad: FÁCIL
*
* Enunciado: Crea un programa que invierta el orden de una cadena de texto sin usar funciones propias del lenguaje que lo hagan de forma automática.
* - Si le pasamos "Hola mundo" nos retornaría "odnum aloH"
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge6 {
public static String invertirTexto(String text){
char[] vecT = text.toCharArray();
char[] vecTVacio = new char[8];
for(int i=0; i<vecTVacio.length; i++){
vecTVacio[i] = vecT[vecTVacio.length - 1 - i];
}
String textInverso = String.valueOf(vecTVacio);
return textInverso;
}
public static void main(String[] args){
String textInvertido = invertirTexto("Hola Man");
System.out.print(textInvertido);
System.out.println();
}
}
51 changes: 51 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge7.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.mouredev.weeklychallenge2022;

import java.util.HashMap;

import static android.text.TextUtils.split;

/*
* Reto #7
* CONTANDO PALABRAS
* Fecha publicación enunciado: 14/02/22
* Fecha publicación resolución: 21/02/22
* Dificultad: MEDIA
*
* Enunciado: Crea un programa que cuente cuantas veces se repite cada palabra y que muestre el recuento final de todas ellas.
* - Los signos de puntuación no forman parte de la palabra.
* - Una palabra es la misma aunque aparezca en mayúsculas y minúsculas.
* - No se pueden utilizar funciones propias del lenguaje que lo resuelvan automáticamente.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge7 {
public static void main(String[] args){
String texto = "Hola mundo te cuento que el mundo de hoy es un mundo sin gente que dice hola";
texto = texto.toLowerCase();
String[] vText = texto.split(" ");
String[] vTextCopy = texto.split(" ");
HashMap<String, Integer> hash = new HashMap<>();
//La idea es ir iterando por cada palabra de vText y comparlarla con todas las palabras de vTextCopy
for(int i=0; i<vText.length; i++){
int cont=1, coincidencia=0;
for(int j=0; j<vTextCopy.length; j++){
//Si las palabras son iguales
if(vTextCopy[j].equals(vText[i])){
//Aumentamos la coincidencia, siempre una palabra del vector tendra almenos una coincidencia
coincidencia++;
if(coincidencia>1)
hash.put(vTextCopy[j],cont++);
}
}
}
for(String key : hash.keySet()){
//Como anteriormente ignoramos las palabras que coincidian una vez con el vecCopia, aquí le sumamos ese 1 ignorado
System.out.println("La palabra "+ key + " se repitio "+(hash.get(key)+1)+" vez");
}
}
}
33 changes: 33 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge8.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.mouredev.weeklychallenge2022;
/*
* Reto #8
* DECIMAL A BINARIO
* Fecha publicación enunciado: 18/02/22
* Fecha publicación resolución: 02/03/22
* Dificultad: FÁCIL
*
* Enunciado: Crea un programa se encargue de transformar un número decimal a binario sin utilizar funciones propias del lenguaje que lo hagan directamente.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
public class Challenge8 {
public static void main(String[] args){
int num = 32, res=0;
String binary = "";

while(num != 0){
int reminder = num % 2;
num /= 2;

binary = reminder + binary;
}

System.out.println(binary);

}
}