2011-12-11 9 views

Respuesta

15
def check_palindromic(variable) 
    if variable.reverse == variable #Check if string same when reversed 
    puts "#{ variable } is a palindrome." 
    else # If string is not the same when reversed 
    puts "#{ variable } is not a palindrome." 
    end 
end 
42

Si no está familiarizado con String métodos de Ruby, usted debe echar un vistazo a la documentation, es muy buena. La respuesta de Mithun ya te mostró el principio básico, pero como eres nuevo en Ruby, hay un par de cosas más a tener en cuenta:

*) Si tienes un método de predicado, es costumbre ponerle un signo de interrogación final , p.ej palindrome?.

*) Las expresiones booleanas se evalúan como booleanas, por lo que no es necesario devolver explícitamente true o false. Por lo tanto, una versión idiomática corto sería

def palindrome?(str) 
    str == str.reverse 
end 

*) Dado que las clases de Ruby están abiertas, habría que agregar esto a la clase string:

class String 
    def palindrome? 
    self == self.reverse 
    end 
end 

*) Si no desea mono-parche String, se puede definir directamente el método con sencillo en el objeto (o utilizar un módulo y Object#extend):

foo = "racecar" 
def foo.palindrome? 
    self == self.reverse 
end 

*) Es posible que desee hacer el palíndromo comprobar un poco más complejo, por ejemplo, cuando se trata de mayúsculas o espacios en blanco, por lo que también son capaces de detectar frases palindrómicas, capitalizado palabras como "Coche de carreras", etc.

pal = "Never a foot too far, even." 
class String 
    def palindrome? 
    letters = self.downcase.scan(/\w/) 
    letters == letters.reverse 
    end 
end 
pal.palindrome? #=> true 
+0

Los usos de 'self.' (pero no los usos de' self' sin el punto) son innecesarios. –

+2

Entonces hay paréntesis alrededor de los argumentos del método. El estilo de codificación es como el gusto, el de los demás es malo ;-) –

+0

¿No es esto muy caro? ¿Crear una nueva matriz solo para verificar si la palabra es palíndromo? Sé que es un código corto y se ve bonito ... pero se siente caro ... –

9

La solución recursiva muestra cómo las cadenas pueden ser indexados en Ruby:

def palindrome?(string) 
    if string.length == 1 || string.length == 0 
    true 
    else 
    if string[0] == string[-1] 
     palindrome?(string[1..-2]) 
    else 
     false 
    end 
    end 
end 

Si leer la documentación de la cadena Ruby es demasiado aburrida para ti, intenta jugar con las preguntas de práctica de Ruby en CodeQuizzes y recogerás la mayoría de los métodos importantes.

3
def is_palindrome(value) 
value.downcase! 

# Reverse the string 
reversed = "" 
count = value.length 

while count > 0 
    count -= 1 
    reversed += value[count] 
end 
# Instead of writing codes for reverse string 
# we can also use reverse ruby method 
# something like this value == value.reverse 
if value == reversed 
    return "#{value} is a palindrom" 
else 
    return "#{value} is not a palindrom" 
end 
end 

puts "Enter a Word" 
a = gets.chomp 
p is_palindrome(a) 
0
class String 
    def palindrome? 
    self.downcase == self.reverse.downcase 
    end 
end 

puts "racecar".palindrome? # true 
puts "Racecar".palindrome? # true 
puts "mississippi".palindrome? # false 
0
str= gets.chomp 
str_rev="" 
n=1 
while str.length >=n 
    str_rev+=str[-n] 
    n+=1 
end 

if str_rev==str 
    puts "YES" 
else 
    puts "NO" 
end 
0

> first method 
 
a= "malayalam" 
 
    if a == a.reverse 
 
    puts "a is true" 
 
    else 
 
    puts "false" 
 
    end 
 

 
> second one 
 
a= "malayalam" 
 
a=a.split("") 
 
i=0 
 
ans=[] 
 
    a.count.times do 
 
    i=i+1 
 
     k=a[-(i)] 
 
     ans << k 
 
    end 
 
    if a== ans 
 
     puts "true" 
 
    else 
 
     puts "false" 
 
    end

Cuestiones relacionadas