Función palindrome? en Ruby

Otro de los ejercicios del Curso SAAS de Berkeley era hacer un método que comprobara un palíndromo (ej 1) e incluirlo dentro de la clase String (en el ej… 5 o el 6, no me acuerdo). En todo caso, puede parecer algo extremadamente simple, pero tiene un mínimo de chicha.

Digo que tiene más chicha porque más allá de hacer un simple reverse, que nos valdría para una palabra sola, la idea es hacerlo ignorando espacios y números, para poder aplicarlo a una frase completa, y que además no sea case sensitive (vamos, que no distinga mayúsculas de minúsculas). Tampoco tiene mucha complicación, es todo cuestioń de una expresión regular:

def palindrome?(string)
    letters = string.downcase.scan(/\w/)
    letters == letters.reverse
  end

Cuatro líneas… bueno, realmente dos porque las otras dos definen el método. ¿Y meterlo dentro de String? Dos líneas más, una modificación y vía. Es la potencia de Ruby, que puedes abrir cualquier clase cuando lo necesites:

class String
  def palindrome?
    letters = self.downcase.scan(/\w/)
    letters == letters.reverse
  end
end

El método devolverá true en caso de éxito y nulo en caso de que no haya coincidencia. Sencillo y liquidado.

Anuncios

Un comentario en “Función palindrome? en Ruby

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s