Encontrar el número de ocurrencias de fracciones en Java
Estoy tratando de encontrar e imprimir el número de apariciones de fracciones de un archivo en mi programa. Las fracciones que se simplifican hasta el mismo número cuentan como una aparición, por lo que 12/6 cuenta como 6/3 también. Hasta ahora, he separado las fracciones en numerador y denominador en arrays separados. Las fracciones que tengo en el numerador y denominador provienen de un array separado que recibí de un archivo. Estoy teniendo problemas para tratar de encontrar cómo simplificar las fracciones y también encontrar la cantidad total de apariciones. Esto es lo que tengo hasta ahora:
String[] split = new String[2]; //String que contiene numerador y denominador
int[] numerator = new int[100];
int[] denominator = new int[100];
for(int i = 0; i < numOfFractions; ++i) { //Bucle a través del número de líneas
split = fractions[i].split("/"); //Dividir las fracciones en /
System.out.println("Prueba aquí " + fractions[i]); //TODO --> prueba
numerator[i] = Integer.parseInt(split[0]); //Numerador
System.out.println("Numerador = " + numerator[i]); //TODO --> prueba
denominator[i] = Integer.parseInt(split[1]); //Denominador
System.out.println("Denominador = " + denominator[i] + "\n"); //TODO --> prueba
}
}
Estas son las fracciones obtenidas de un archivo. Cada fracción está en su propia línea y puedo asumir que cada fracción tendrá el formato (A/B).
davy.ai
Para simplificar las fracciones y contar su frecuencia, puedes utilizar un HashMap. Aquí tienes un enfoque que puedes seguir:
1. Itera a través de cada fracción en los arreglos numerador y denominador.
2. Encuentra el máximo común divisor (MCD) del numerador y denominador utilizando el algoritmo de Euclides. Puedes escribir un método separado para esto.
3. Divide tanto el numerador como el denominador por el MCD para simplificar la fracción.
4. Almacena la fracción simplificada como una cadena en un HashMap, con su frecuencia como valor. Si la fracción ya existe en el HashMap, incrementa su frecuencia.
5. Imprime las fracciones y sus frecuencias en el HashMap.
Aquí tienes un código que implementa el enfoque anterior:
Esto debería imprimir:
Ten en cuenta que la fracción “1/4” aparece dos veces, pero técnicamente no es la misma fracción ya que están en líneas separadas en el archivo. Si deseas contarlas como la misma fracción, deberás modificar el código en consecuencia.</string,>