Ich mache eine Programmierübung in Ruby, um festzustellen, ob eine Zeichenfolge ein Palindrom ist. Hier ist, was ich kam mit:Ruby Programmierung Übung, um festzustellen, ob eine Zeichenfolge ein Palindrom ist
# Write a method that takes a string and returns true if it is a
# palindrome. A palindrome is a string that is the same whether written
# backward or forward. Assume that there are no spaces; only lowercase
# letters will be given.
#
# Difficulty: easy.
def palindrome?(string)
iterations=string.length/2
is_palindrome=true
i=0
while i<iterations
if string[i] != string[string.length-i-1]
puts("string is not a palindrome")
is_palindrome=false
end
i+=1
end
return is_palindrome
end
# These are tests to check that your code is working. After writing
# your solution, they should all print true.
puts("\nTests for #palindrome?")
puts("===============================================")
puts('palindrome?("abc") == false: ' + (palindrome?('abc') == false).to_s)
puts('palindrome?("abcba") == true: ' + (palindrome?('abcba') == true).to_s)
puts('palindrome?("z") == true: ' + (palindrome?('z') == true).to_s)
puts("===============================================")
Dies gibt die folgende:
Tests for #palindrome?
===============================================
string is not a palindrome
palindrome?("abc") == false: true
palindrome?("abcba") == true: true
palindrome?("z") == true: true
===============================================
Die erste Ausgabe sein sollte „false“, und ich kann nicht herausfinden, warum es nicht zurück. Es wird "String ist kein Palindrom" gedruckt, also würde ich erwarten, dass es auch die "is_palindrome" Variable auf "false" setzt und das zurückgibt.
Hallo hspandher, danke für deine Antwort. In der Tat glaube ich, dass ich den Output falsch interpretiert habe; der Code funktioniert tatsächlich, wenn alle "True" zurückgeben. (Und ja, mit. Reverse gibt das gleiche Ergebnis). –