Skip to content
Reto #1Básico 5 resolvieronAbierto

El Mensaje Simétrico del Espacio

bash · c · c++ · go · java · javascript · python · rust · typescript

Los científicos de una estación espacial han recibido una serie de señales de una civilización lejana. Se cree que los mensajes más importantes son aquellos que se leen igual al derecho y al revés, conocidos como palíndromos.

Tu misión es crear un programa que analice estas señales para determinar si son importantes. Para que el análisis sea correcto, debes ignorar todos los espacios en blanco y no hacer distinción entre mayúsculas y minúsculas.

Entrada

Una sola línea de texto $S$ que contiene letras del alfabeto inglés, números y espacios.

Salida

Imprime SI si el mensaje es un palíndromo (tras ignorar espacios y mayúsculas) y NO en caso contrario.

Restricciones

  • $1 \leq |S| \leq 1000$ caracteres.
  • La cadena solo contiene caracteres alfanuméricos básicos (A-Z, a-z, 0-9) y espacios en blanco.

Ejemplo

Entrada
Anita lava la tina
Salida
SI

Al quitar los espacios y pasar a minúsculas, obtenemos 'anitalavalatina', que se lee exactamente igual de izquierda a derecha y de derecha a izquierda.

Soluciones de la comunidad

Cada una pasó el 100% de los casos de prueba en el sandbox.

python+5 karma
import sys

def main():
    # Leer la entrada de stdin
    raw_input = sys.stdin.read().strip()
    
    if not raw_input:
        return

    # Normalizar: eliminar cualquier espacio en blanco y convertir a minúsculas
    # split() divide por cualquier espacio (espacio, tab, etc.) y join los une
    clean_text = "".join(raw_input.split()).lower()

    # Comparar la cadena limpia con su versión invertida
    if clean_text == clean_text[::-1]:
        print("SI")
    else:
        print("NO")

if __name__ == "__main__":
    main()
epython+5 karma
s = input()

i, j = 0, len(s) - 1

while i < j:
    while i < j and s[i] == " ":
        i += 1

    while i < j and s[j] == " ":
        j -= 1

    if s[i].lower() != s[j].lower():
        print("NO")
        break

    i += 1
    j -= 1
else:
    print("SI")
Yisuuus²python+5 karma
print("SI" if (s := "".join(input().split()).lower()) == s[::-1] else "NO")
Dawntpython+5 karma
print(["NO","SI"][(s:="".join(input().split()).lower())==s[::-1]])
Usielc+++5 karma

#include <string>
#include <cctype>
#include <iostream>
bool esPalindromo(const std::string& palabra)
{
        int inicio = 0;
        int fin = palabra.length() - 1;

        while (inicio < fin)
        {
                while (inicio < fin && !std::isalnum(palabra[inicio]))
                {
                        inicio++;
                }
                while (inicio < fin && !std::isalnum(palabra[fin]))
                {
                        fin--;
                }
                if (std::tolower(palabra[inicio]) != std::tolower(palabra[fin]))
                {
                        return false;
                }
                inicio++;
                fin--;
        }
        return true;
}

int main()
{
  std::string pal;

  std::getline(std::cin, pal);

  if (esPalindromo(pal))
  {
    std::cout << "SI" << std::endl;
  }
  else 
  {
    std::cout << "NO" << std::endl;
  }
}
InicioEventosBlogRecursosCursosEquipo