나는 Elixir에서 행맨을 구현하려고하는데 정확하게 생각 나지 않는 문자 (적절한 색인)를 사용하여 자리 표시 자 단어의 대시를 어떻게 바꾸어야하는지 혼란 스럽습니다. 나는 많은 행운없이 slice/3
과 replace/4
함수를 사용하려고 시도했다.Elixir의 행맨 게임에서 대시를 문자로 바꿉니다.
def check_match(word, guess) do
len = String.length(word)
str = String.duplicate("_ ", len)
if String.contains? word, guess do
{index, length} = :binary.match(word, guess)
#String.slice(str, index, len) <> guess <> String.slice(str, index+1, len)
IO.puts String.replace(str, " ", guess)
else
IO.puts str
end
end
나는 또한 포함 guess_word/2
내부 check_match/2
을 (전화 : I는 사용자가 입력 한 문자가 비밀 단어에 있는지 확인하고 난 자리에 해당 문자가 포함 대시를 삽입하려고 어디 어디 여기 기능입니다 내 게임 로직) :
def guess_word(word, duration) do
gs = IO.gets("enter letter: ")
guess = String.trim(gs)
put(duration, guess)
update_letters()
check_match(word, guess)
if duration > 0 && !check_win(word, guess) do
guess_word(word, duration - 1)
end
end
아마 내가 프로그램의 잘못된 부분에서 대시를 교체하려고합니다. 올바른 색인에서 대시를 교체하는 방법은 무엇입니까?
예를 들어, 비밀 단어 foo는 것입니다 :
_ _ _
사용자가 추측 f
f _ _
전체 코드 : http://pastebin.com/JkSefm1S