web-dev-qa-db-fra.com

Manière rubis pour vérifier le palindrome

Je voulais vérifier si une chaîne est palindrome ou n'utilise pas de code Ruby.

Je suis un partant en Ruby donc pas trop connu avec le string methods en Ruby

13
Mithun Sasidharan
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
16
Mithun Sasidharan

Si vous n'êtes pas familiarisé avec les méthodes String de Ruby, vous devriez jeter un coup d'œil à la documentation , c'est très bien. La réponse de Mithun vous a déjà montré le principe de base, mais comme vous êtes nouveau dans Ruby, il y a quelques autres points à garder à l'esprit:

*) Si vous avez une méthode de prédicat, il est d'usage de la nommer avec un point d'interrogation final, par exemple. palindrome?

*) Les expressions booléennes sont évaluées en booléens. Vous n'avez donc pas besoin de renvoyer explicitement true ou false. Par conséquent, une version idiomatique courte serait 

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

*) Puisque les classes de Ruby sont ouvertes, vous pouvez ajouter ceci à la classe string:

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

*) Si vous ne voulez pas monkey-patch String, vous pouvez définir directement la méthode sur un seul objet (ou utiliser un module et Object # extend ):

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

*) Vous voudrez peut-être rendre la vérification du palindrome un peu plus complexe, par exemple. quand il s’agit de cas ou d’espace, vous pouvez également détecter des phrases palindromiques, des mots en majuscules comme "Racecar", 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
46
Michael Kohl

La solution récursive montre comment les chaînes peuvent être indexées dans 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 lire la documentation de la chaîne Ruby est trop ennuyeux pour vous, essayez de jouer avec les questions pratiques Ruby sur CodeQuizzes et vous découvrirez la plupart des méthodes importantes.

9
Powers
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)
5
A H K
class String
  def palindrome?
    self.downcase == self.reverse.downcase
  end
end

puts "racecar".palindrome? # true
puts "Racecar".palindrome? # true 
puts "mississippi".palindrome? # false 
2
Josh Brody

> 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

1
Velu Dhanesh
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
PIYUSH SAWARIA