Galatea - Ang3r and Clerigo

101% Colombianos

Int3rs3ct1ng - T3rm1n4d0

Bueno este es otro de los retos que hemos trabajado, es un reto no muy dificil a nivel de programacion, pero si tal vez con sierto grado de dificultad en el analisis.

Enunciado: http://sophia.javeriana.edu.co/maratones/programacion/5.JaverianaPolitecnico/contest/D-IntersectingLines.pdf
Entrada:http://sophia.javeriana.edu.co/maratones/programacion/5.JaverianaPolitecnico/contest/D.in
Salida:http://sophia.javeriana.edu.co/maratones/programacion/5.JaverianaPolitecnico/contest/D.ans

public class Intersecting_Lines {
	private DecimalFormat df = new DecimalFormat("0.00");
	private float [] puntos = new float [8];
	
	public static void main(String[] args) throws Exception {
		Intersecting_Lines l =  new Intersecting_Lines();
		l.leer();
	}

	private void leer() throws Exception {
		File f = new File ("lines.in");
		BufferedReader entrada = new BufferedReader(new FileReader (f));
		String texto=entrada.readLine();
		int N = Integer.parseInt(texto);
		System.out.println("INTERSECTING LINES OUTPUT");
		while ((texto=entrada.readLine())!=null){
			validar(asignar(texto));
		}
		System.out.println("END OF OUTPUT");
	}

	private void validar(float[] puntos) {

		float m1 = (puntos [3]-puntos [1])/(puntos [2]-puntos[0]);
		float m2 = (puntos [7]-puntos [5])/(puntos [6]-puntos[4]);
		if (m1==m2){
			//System.out.println("NONE");
			if(funcion(m1,m2)){
				System.out.println("LINE");
			}else{
				System.out.println("NONE");
			}
		}else{
			if ((String.valueOf(m1).equals("Infinity")||String.valueOf(m1).equals("-Infinity"))&&(String.valueOf(m2).equals("Infinity")||String.valueOf(m2).equals("-Infinity"))){
				System.out.println("NONE");
			}else if (puntos[0]==puntos[2]&&puntos[5]==puntos[7]){ // No hay Pendiente
				System.out.println("POINT "+df.format(puntos[0])+" "+df.format(puntos[5]));
			
			}else if (puntos[0]==puntos[2]&&puntos[5]!=puntos[7]){
				System.out.println(funcion2(puntos[0],m2));
			}else if (puntos[0]!=puntos[2]&&puntos[5]==puntos[7]){
				funcion2(puntos[5],m1);
			}else{
				//System.out.println(m1+" "+m2);
				System.out.println(funcion3(m1,m2));
			}
		}

	}


	private String funcion3(float m1, float m2) {
		float b1=(((puntos[0])*(-1))*m1)+((puntos[1]));
		float b2=(((puntos[4])*(-1))*m2)+((puntos[5]));
		float x= (b2-b1)/(m1-m2);
		float y=(m2*x)+b2;
		return "POINT "+df.format(x)+" "+df.format(y);
	}

	private String funcion2(float a, float m2) {
		String f=String.valueOf(a);
		String g=String.valueOf(m2)+"X"+String.valueOf((((puntos[4])*(-1))*m2)+((puntos[5])));
		float resp=(m2*a)+(((puntos[4])*(-1))*m2)+((puntos[5]));		
		return "POINT "+df.format(f)+" "+df.format(String.valueOf(resp));
	}

	private boolean funcion(float m1, float m2) {
		String f=String.valueOf(m1)+"X"+String.valueOf((((puntos[0])*(-1))*m1)-((puntos[1])*(-1)));
		String g=String.valueOf(m2)+"X"+String.valueOf((((puntos[4])*(-1))*m2)-((puntos[5])*(-1)));		
		if (f.equals(g)){
			return true;
		}		
		return false;
	}

	private float [] asignar(String texto) {		
		StringTokenizer tokens = new StringTokenizer(texto," ");
		int i =0;
		while (tokens.hasMoreTokens()){
			puntos[i]=Float.parseFloat(tokens.nextToken());
			i++;
		}
		return puntos;
	}

}


2- P4r4m3tr0s d3 c3rtifi4ci0n c4bl34d0 r3d3s

Write a comment

New comments have been disabled for this post.