public class Test1 {
public static void testVampiro(int d1, int d2, int d3, int d4) {
// Este método recibe cuatro dígitos y verifica en todas las posibles parejas de números
// si la multiplicación de dos de ellas es igual a alguno de los números que se generan
// con los 4 dígitos
int[] v = { d1, d2, d3, d4 } ; // Se crea un vector con los 4 dígitos leídos
int[] posibles = new int[24] ; // Con 4 dígitos solo se pueden formar 24 posibles valores
int cont = 0;
int a,b,c;
boolean haySolucion = false;
for(int i=0; i<v.length; i++) {
for(int j=0; j<v.length; j++) {
if(v[i]==v[j]) continue; // No se pueden repetir
for(int k=0; k<v.length; k++) {
if(v[k]==v[i]||v[k]==v[j]) continue; // No se puede repetir
for(int l=0; l<v.length; l++) {
if(v[l]==v[i]||v[l]==v[j]|| v[l]==v[k]) continue; // No se puede repetir
posibles[cont++] = v[i]*1000+v[j]*100+v[k]*10+v[l];
} // fin for l
} // fin for k
} // fin for j
} // fin for i
// Para probar los numeros posibles usar esta instrucción:
// for(int x: posibles) System.out.println(x);
// Para generar las parejas se hace el siguiente ciclo:
ciclo:
for(int i=0; i<v.length; i++) {
for(int j=0; j<v.length; j++) {
if(v[i]==v[j]) continue; // No se pueden repetir
a = v[i]*10 + v[j]; // Se obtiene el primer valor de dos dígitos
for(int k=0; k<v.length; k++) {
if(v[k]==v[i]||v[k]==v[j]) continue; // No se puede repetir
for(int l=0; l<v.length; l++) {
if(v[l]==v[i]||v[l]==v[j]|| v[l]==v[k]) continue; // No se puede repetir
b = v[k]*10+v[l]; // Se obtiene el segundo valor de dos digitos
c = a*b ; // Se obtiene la multiplicación de los dos valores
// Se verifica si el número generado está entre los posibles resultados
// y de ser así se escribe la respuesta y se termina el proceso
for(int x: posibles) {
if(c==x) {
System.out.println("Respuesta encontrada: "+a+" x " +b+" = "+c);
haySolucion=true;
break ciclo;
} // fin if
} // fin for x
} // fin for l
} // fin for k
} //fin for j
} // fin for i
if(!haySolucion) System.out.println("No hay un numero vampiro con los digitos " + d1+", "+d2+", "+d3+" y "+d4);
}
public static void main(String[] args) {
testVampiro(1,2,3,4);
testVampiro(1,3,9,5);
testVampiro(3,9,1,5);
}
}
Soluciones a problemas comunes de programación en lenguaje java.
jueves, julio 28, 2011
Verificación de Números Vampiros
Con este programa se pretende evaluar si cuatro dígitos recibidos forman un número vampiro:
Suscribirse a:
Comentarios (Atom)
Multiprocesamiento recursivo en JAVA 7
Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...
-
Este problema busca calcular el o los caracteres que más se repiten en una cadena. El enunciado está expuesto en la página http://uva.onli...
-
Generación con sustitución Si se quieren generar todas las posibles cadenas que se forman con un determinado número de caracteres, una pri...
-
Para solucionar el problema de la ruta más corta entre dos nodos de un grafo se puede utilizar el Algoritmo de Dijkstra , el cual sigue el s...