Por Nacho Cabanes
Nivel de dificultad aproximado (1 a 5): 3
Dada una serie de palabras separadas por espacios, escribir la frase formada por las mismas palabras en orden inverso. Cada palabra estará formada exclusivamente por letras, y existirá exactamente un espacio entre cada pareja de palabras. La salida debe ser "Case #" seguido del número de caso, de un símbolo de "dos puntos", de un espacio en blanco y de la frase invertida.
(Asegúrate de que has leído las preguntas frecuentes antes de plantear tu solución)
El primer dato de entrada será la cantidad de valores que se van a analizar.
Ejemplo de entrada
3
this is a test
foobar
all your base
Salida correspondiente
Case #1: test a is this
Case #2: foobar
Case #3: base your all
// Ejemplo de solución para el reto 002 // (Google Code Jam - Africa 2010 - Ronda de calificación, problema B) // Por Nacho Cabanes (www.nachocabanes.com), 25-04-2012 // Recibe (de entrada estándar) frases // Devuelve (escribe) las frases con sus palabras al revés using System; public class Reto002 { public static void ProcesarYVolcar(string linea, int contador) { // Descompongo en un array string[] palabras = linea.Split(new char[] {' '}); // Y recorro el array al revés, mostrando datos Console.Write("Case #{0}: ", contador); for (int i = palabras.Length; i > 0; i--) { Console.Write( palabras[i-1] ); if (i>1) // Espacio separador, excepto tras la última Console.Write(" "); } Console.WriteLine(); } public static void Main(string[] args) { int cantidad = Convert.ToInt32( Console.ReadLine() ); for (int i = 1; i <= cantidad; i++) { string texto = Console.ReadLine(); ProcesarYVolcar(texto, i); } } }
' Ejemplo de solución para el reto 002 ' (Google Code Jam - Africa 2010 - Ronda de calificación, problema B) ' Por mpollux_ork, 11-09-2012 Dim intEntradas As Integer Dim astrPalabras() As String = Array.CreateInstance(GetType(String), 0) Dim strEntrada As String Dim strPalabra As String Dim intContadorEntradas As Integer Dim intContadorLetras As Integer Dim intContadorPalabras As Integer Dim chrLetra As String Dim strSalida As String intEntradas = Convert.ChangeType(Console.ReadLine(), GetType(Integer)) Dim astrEntradas(intEntradas - 1) As String For intContadorEntradas = 0 To intEntradas - 1 astrEntradas(intContadorEntradas) = Console.ReadLine() Next intContadorEntradas For intContadorEntradas = 0 To intEntradas - 1 intContadorPalabras = 0 strEntrada = astrEntradas(intContadorEntradas) strPalabra = \"\" For intContadorLetras = 0 To strEntrada.Length() - 1 chrLetra = strEntrada.Substring(intContadorLetras, 1) If chrLetra <> \" \" Then strPalabra = strPalabra + chrLetra.Trim Else Array.Resize(astrPalabras, astrPalabras.Length + 1) astrPalabras(intContadorPalabras) = strPalabra strPalabra = \"\" intContadorPalabras = intContadorPalabras + 1 End If Next intContadorLetras Array.Resize(astrPalabras, astrPalabras.Length + 1) astrPalabras(intContadorPalabras) = strPalabra Array.Reverse(astrPalabras) strSalida = \"Case #\" + (intContadorEntradas + 1).ToString() + \": \" For intContadorPalabras = 0 To astrPalabras.Length() - 1 strSalida = strSalida + astrPalabras(intContadorPalabras) + \" \" Next intContadorPalabras Console.WriteLine(strSalida.Trim()) Array.Resize(astrPalabras, 0) Next intContadorEntradas