elsif 包含在数组中的字母
elsif a letter contained in an array
我基本上会在下面的 elsif 中说什么 "if letter == (a letter contained within the array "letterbank") ===> print letter"
def hide_or_not(an_array, a_guess)
an_array.each do |letter|
if a_guess == letter
print a_guess
elsif SOMETHING HERE
print letter
else
print "_"
end
end
end
假设该方法被输入 a_guess,这是一个字符串形式的字母和一个单个字母的数组。当猜到一个字母时,它就会出现,否则会打印一个“_”
an_array = ["r", "i", "c", "s", "h", "a", "w"]
letter_guess = "r"
那么抱歉,我还假设我必须保存每个猜到的字母,所以我想在某个地方包含一个信箱。我不知道我是应该在模式之下还是在模式之内做...(已经猜到的字母)
letterbank = ["s", "w", "t", "j"]
所以在这种情况下,我希望打印以下内容...谢谢!
r___s__w
一种方法是使用哈希而不是数组。
将 letterbank 值复制到哈希映射 Letter 到 1(或 true)以指示该字母存在。
def hide_or_not(an_array, a_guess)
letterbank = ["r", "s", "w", "t", "j"]
letterhash = {} # define a new hash
letterbank.each { |c| letterhash[c] = 1 } # copy array values into the hash
an_array.each do |letter|
if (a_guess == letter)
print a_guess
elsif letterhash[letter] # check if the letter is in the hash
print letter
else
print "_"
end
end
结束
an_array = ["r", "i", "c", "s", "h", "a", "w"]
hide_or_not(an_array, 'r')
此解决方案使用的是字符串而不是数组,但也可以轻松地使用数组。 (将字符添加到字符串并在完成迭代后打印为打印提供了一些额外的灵活性,例如允许您使用 puts
)。
class LetterGuesser # Hangman
def initialize(word)
@word = word;
@guessed_letters = '';
end
def guess_letter(letter)
@guessed_letters << letter if !@guessed_letters.include?(letter)
current_guesses = ''
@word.each_char do |char|
if guessed_letters.include?(char)
current_guesses << letter
else
current_guesses << '_'
end
end
puts current_guesses
end
end
game = LetterGuesser.new('test')
game.guess_letter('e')
此处最简单的解决方案是使用裸字符串,String#tr
为您进行替换:
def hide_or_not(word, guesses)
word.tr('^' + guesses, '_')
end
在哪里可以看到它是这样工作的:
hide_or_not('rickshaw', 'r')
# => "r_______"
hide_or_not('rickshaw', 'rswtj')
=> "r___s__w"
数组和字符串通常以大致相同的方式工作,例如:
# Define an empty string
guesses = ''
# Append a character to the string
guesses << 'r'
我基本上会在下面的 elsif 中说什么 "if letter == (a letter contained within the array "letterbank") ===> print letter"
def hide_or_not(an_array, a_guess)
an_array.each do |letter|
if a_guess == letter
print a_guess
elsif SOMETHING HERE
print letter
else
print "_"
end
end
end
假设该方法被输入 a_guess,这是一个字符串形式的字母和一个单个字母的数组。当猜到一个字母时,它就会出现,否则会打印一个“_”
an_array = ["r", "i", "c", "s", "h", "a", "w"]
letter_guess = "r"
那么抱歉,我还假设我必须保存每个猜到的字母,所以我想在某个地方包含一个信箱。我不知道我是应该在模式之下还是在模式之内做...(已经猜到的字母)
letterbank = ["s", "w", "t", "j"]
所以在这种情况下,我希望打印以下内容...谢谢!
r___s__w
一种方法是使用哈希而不是数组。 将 letterbank 值复制到哈希映射 Letter 到 1(或 true)以指示该字母存在。
def hide_or_not(an_array, a_guess)
letterbank = ["r", "s", "w", "t", "j"]
letterhash = {} # define a new hash
letterbank.each { |c| letterhash[c] = 1 } # copy array values into the hash
an_array.each do |letter|
if (a_guess == letter)
print a_guess
elsif letterhash[letter] # check if the letter is in the hash
print letter
else
print "_"
end
end
结束
an_array = ["r", "i", "c", "s", "h", "a", "w"]
hide_or_not(an_array, 'r')
此解决方案使用的是字符串而不是数组,但也可以轻松地使用数组。 (将字符添加到字符串并在完成迭代后打印为打印提供了一些额外的灵活性,例如允许您使用 puts
)。
class LetterGuesser # Hangman
def initialize(word)
@word = word;
@guessed_letters = '';
end
def guess_letter(letter)
@guessed_letters << letter if !@guessed_letters.include?(letter)
current_guesses = ''
@word.each_char do |char|
if guessed_letters.include?(char)
current_guesses << letter
else
current_guesses << '_'
end
end
puts current_guesses
end
end
game = LetterGuesser.new('test')
game.guess_letter('e')
此处最简单的解决方案是使用裸字符串,String#tr
为您进行替换:
def hide_or_not(word, guesses)
word.tr('^' + guesses, '_')
end
在哪里可以看到它是这样工作的:
hide_or_not('rickshaw', 'r')
# => "r_______"
hide_or_not('rickshaw', 'rswtj')
=> "r___s__w"
数组和字符串通常以大致相同的方式工作,例如:
# Define an empty string
guesses = ''
# Append a character to the string
guesses << 'r'