some image

Codes and Tags

Solucionando : Your Ride Is Here

Etiquetas: Blog, Challenges 1 comment

Este problema estaba planteado en la página de USACO (Un sitio para entrenamiento de las maratones de programación). Aqui esta mi planteamiento de Your Ride is Here :

El ejercicio basicamente consiste en leer las palabras de un archivo ( ride.in ), donde se arman grupos de palabras en 2 lineas. Es decir la (linea1 = palabra1, linea2 = palabra2) = grupo 1 … (linea3 = palabra1, linea4 = palabra2) = grupo2 y asi sucesivamente. Al momento de obtener cada palabra se hace la equivalencia de cada letra según la posición del Abecedario, ejemplo : A = 1, B = 2, C = 3 …. Z = 4.

Una vez se puede obtener el valor de cada letra se deben multiplicar todas las letas de palabra y obtener el mod 47 del resultado. Se debe hacer esto para la palabra1 y palabra2. De aqui parte una condicion :

1) Si el mod de las palabras es igual, entonces se debe imprimir en el archivo ride.out : GO
2) Si el mod de las palabras es igual, entonces se debe imprimir en el archivo ride.out : STAY

 

PROGRAM NAME: ride

This means that you fill in your header with:
PROG: ride
INPUT FORMAT

Line 1:	 An upper case character string of length 1..6 that is the name of the comet.
Line 2:	 An upper case character string of length 1..6 that is the name of the group.
NOTE: The input file has a newline at the end of each line but does not have a "return".
Sometimes, programmers code for the Windows paradigm of "return" followed by "newline"; 
don't do that! Use simple input routines like "readln" (for Pascal) and, for C/C++, 
"fscanf" and "fid>>string".

SAMPLE INPUT (file ride.in)

COMETQ
HVNGAT
OUTPUT FORMAT

A single line containing either the word "GO" or the word "STAY".
SAMPLE OUTPUT (file ride.out)
GO

Solucion

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/*
ID : etorres1 
LANG : JAVA
TASK : ride 
*/

public class ride {
	
	public static String charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	public static void main(String[] args) throws IOException{
		//Objeto para lectura de archivos
		BufferedReader filein = new BufferedReader(new FileReader("ride.in"));
		//Objeto para escritura de archivos
		PrintWriter fileout = new PrintWriter(new FileWriter("ride.out"));
		//Objeto para almacenar lineas
		String line;
		int nline = 0;
		int mod1 = 0;
		int mod2 = 0;
		
		//Recorrido del archivo
		while((line = filein.readLine()) != null){
			switch (nline) {
			case 0:
				//Se obtiene el modulo1
				mod1 = getMod(line);
				nline++;
				break;
			case 1:
				//Se obtiene el modulo2
				mod2 = getMod(line);
				//Se inicia el flag de la linea
				nline = 0;
				//Escritura de la respuesta en el archivo de salida
				if(mod1 == mod2){
					fileout.println("GO");
				}else{
					fileout.println("STAY");
				}
				break;
			}
		}
		//envio de todos los streams al archivo
		fileout.flush();
		//Cierre del archivo
		fileout.close();
	}
	
	public static int getMod(String word){
		int sum = 1;
		int mod = 0;
		//Recorrido de la palabra caracter a caracter
		for (int i = 0, nletter = 0;  i < word.length(); i++) {
			nletter = charset.indexOf(word.charAt(i)) + 1;
			sum *= nletter;
		}
		mod = sum % 47;
		return mod; 
	}
}

Datos obtenidos

TASK: ride
LANG: JAVA

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.126 secs, 0 KB]
   Test 2: TEST OK [0.090 secs, 255884 KB]
   Test 3: TEST OK [0.072 secs, 254704 KB]
   Test 4: TEST OK [0.072 secs, 254836 KB]
   Test 5: TEST OK [0.072 secs, 254860 KB]
   Test 6: TEST OK [0.072 secs, 254836 KB]
   Test 7: TEST OK [0.108 secs, 254976 KB]
   Test 8: TEST OK [0.090 secs, 254836 KB]
   Test 9: TEST OK [0.072 secs, 255860 KB]
   Test 10: TEST OK [0.072 secs, 254704 KB]

All tests OK.
Your program ('ride') produced all correct answers!  This is your
submission #2 for this problem.  Congratulations!

Here are the test data inputs:

------- test 1 ----
COMETQ
HVNGAT
------- test 2 ----
STARAB
USACO
------- test 3 ----
EARTH
LEFTB
------- test 4 ----
PULSAR
VENUS
------- test 5 ----
KANSAS
UTAH
------- test 6 ----
APPLE
URSA
------- test 7 ----
MSFT
MARS
------- test 8 ----
PLUTO
BKHOLE
------- test 9 ----
COWSBC
RIGHT
------- test 10 ----
DRKMTR
SNIKER
Keep up the good work!
Thanks for your submission!

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Project Euler Logo

Add your comment