Je suis en train de faire le tutoriel rspec de Test First et j'ai une question concernant le problème Pig_Latin.Ruby: Chaînes de caractères dans un traducteur Pig Latin
Spécifiquement je veux savoir sur les gammes de cordes. Voici une partie de mon code:
if phonemes.include?(word[0]) && phonemes.include?(word[1]) && phonemes.include?(word[2])
<do something>
end
Au lieu de ce qui précède, j'ai essayé:
if phonemes.include?(word[0..2]) # i added that character to the list of phonemes
<do something> # e.g. if the word is school i added "sch" to
end # the array called phonemes
Cependant, il ne fonctionne pas même si "sch"
est en phonemes
et word[0..2] == "sch"
Ma question est pourquoi Puis-je ne pas utiliser les plages de chaînes pour manipuler le résultat. (Je vais poster mon code complet en bas dans le cas où ce n'est pas clair)
code(travaux en cours):
def translate(string)
array = string.split(" ")
alphabet = ("a".."z").to_a
vowels = ["a", "e", "i", "o", "u"]
phonemes = alphabet - vowels
phonemes << ["qu", "sch", "thr"]
result = []
array.each do |word|
if vowels.include?(word[0])
result << (word + "ay")
elsif phonemes.include?(word[0..1])
result << "do something"
elsif phonemes.include?(word[0]) && phonemes.include?(word[1]) && phonemes.include?(word[2])
result << (word[3..-1] + (word[0..2] + "ay"))
elsif phonemes.include?(word[0]) && phonemes.include?(word[1])
result << (word[2..-1] + (word[0..1] + "ay"))
elsif phonemes.include?(word[0..1])
result << "do something else"
elsif phonemes.include?(word[0])
result << (word[1..-1] + (word[0]+ "ay"))
end
end
return result.join(" ")
end
Comme toujours des conseils pour rendre plus efficace le code serait apprécié (mais le plus chose importante pour moi est de comprendre pourquoi les chaînes de caractères ne fonctionnent pas). Merci.
Génial! C'est parfait, merci beaucoup! –