트랙
/
Julia
Julia
/
연습 문제
/
Annalyn의 침투
Annalyn의 침투

Annalyn의 침투

학습 연습 문제

소개

Julia의 불리언

참과 거짓 값은 Bool 타입으로 나타내요. Bool 타입에는 true와 false, 두 가지 값만 들어 있어요.

julia> true
true

julia> false
false

불리언 연산자

Julia에는 세 가지 불리언 연산자가 있어요.

&&는 불리언 "and" 연산자예요. &&의 양쪽 표현식이 모두 true일 때 true로 평가돼요.

julia> true && true
true

julia> true && false
false

||는 불리언 "or" 연산자예요. ||의 어느 한쪽 표현식이 true일 때 true로 평가돼요.

julia> true || true
true

julia> false || true
true

!는 불리언 "not" 연산자예요. true와 false 값을 서로 바꿔요.

julia> !true
false

julia> !false
true

표현식이 길고 복잡할수록 괄호를 사용해서 의도를 분명히 밝히는 게 좋아요.

julia> (true || false) && (false && true)
false

지침

이 연습 문제에서는 친구가 개발 중인 비디오 게임에 들어갈 로직을 작성해요. 게임의 주인공은 Annalyn으로, 용감한 소녀이자 사납고 충직한 반려견을 키우고 있죠. 그런데 안타깝게도, 가장 친한 친구가 숲에서 열매를 찾다가 납치되는 불운이 닥쳐요. Annalyn은 친구를 찾아 구출하려고 하고, 원한다면 이 여정에 반려견을 데리고 갈 수도 있어요.

마침내 Annalyn은 친구가 갇혀 있는 야영지를 찾아내고, 납치범이 둘이라는 걸 알게 돼요: 강력한 기사와 교활한 궁수예요.

플레이어에게는 다음에 무엇을 할지에 대한 몇 가지 선택지가 주어져요. 네 가지 선택지 각각에 대해, 그 선택지를 게임에 표시할지 말지를 알려주는 함수를 작성해야 해요.

1. '빠른 공격' 옵션을 표시해야 하는지 확인하기

기사가 잠들어 있다면, Annalyn은 기사가 제대로 깨어나 갑옷을 갖춰 입기 전에 야영지로 빠르게 공격할 수 있어요.

기사가 깨어 있는지를 나타내는 불리언 값을 받는 can_do_fast_attack이라는 함수를 구현해요. 이 함수는 캐릭터의 상태에 따라 '빠른 공격' 행동을 할 수 있으면 true를 반환해요. 그렇지 않으면 false를 반환해요:

julia> knight_awake = true

julia> can_do_fast_attack(knight_awake)
false

2. '정찰' 옵션을 표시해야 하는지 확인하기

일행 중 적어도 한 명이 깨어 있으면 그들을 정찰할 수 있어요. 그렇지 않으면 정찰은 시간 낭비예요.

기사, 궁수, 죄수가 각각 깨어 있는지를 나타내는 불리언 값 세 개를 받는 can_spy라는 함수를 구현해요. 이 함수는 캐릭터들의 상태에 따라 '정찰' 행동을 할 수 있으면 true를 반환해요. 그렇지 않으면 false를 반환해요:

# Output suppressed from the next 3 lines
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false

julia> can_spy(knight_awake, archer_awake, prisoner_awake)
true

3. '죄수에게 신호 보내기' 옵션을 표시해야 하는지 확인하기

죄수가 깨어 있고 궁수가 잠들어 있으면 새소리로 죄수에게 신호를 보낼 수 있어요. 궁수가 깨어 있으면 안전하게 신호를 보낼 수 없어요. 궁수도 새소리 신호를 익혔기 때문이에요.

궁수와 죄수가 각각 깨어 있는지를 나타내는 불리언 값 두 개를 받는 can_signal_prisoner라는 함수를 구현해요. 이 함수는 캐릭터들의 상태에 따라 '죄수에게 신호 보내기' 행동을 할 수 있으면 true를 반환해요. 그렇지 않으면 false를 반환해요:

julia> archer_awake = false
julia> prisoner_awake = true

julia> can_signal_prisoner(archer_awake, prisoner_awake)
true

4. '죄수 구출' 옵션을 표시해야 하는지 확인하기

Annalyn은 친구를 구출하기 위해 야영지에 몰래 들어가 볼 수 있어요. 위험한 일이라 두 가지 방법 중 하나로만 성공할 수 있어요:

  • Annalyn이 반려견을 데리고 있으면 궁수가 잠들어 있을 때 죄수를 구출할 수 있어요. 기사는 개를 무서워하고, Annalyn과 친구가 도망치기 전에 궁수가 준비할 시간은 없어요.

  • Annalyn이 반려견을 데리고 있지 않다면 Annalyn과 죄수는 아주 살금살금 움직여야 해요! 죄수가 깨어 있고 기사와 궁수가 둘 다 잠들어 있으면 Annalyn은 죄수를 구출할 수 있어요. 하지만 죄수가 잠들어 있으면 구출할 수 없어요. Annalyn이 갑자기 나타나면 죄수가 놀라서 기사와 궁수를 깨울 테니까요.

불리언 값 네 개를 받는 can_free_prisoner라는 함수를 구현해요. 처음 세 매개변수는 기사, 궁수, 죄수가 각각 깨어 있는지를 나타내요. 마지막 매개변수는 Annalyn의 반려견이 함께 있는지를 나타내요. 이 함수는 캐릭터들의 상태에 따라 '죄수 구출' 행동을 할 수 있으면 true를 반환해요. 그렇지 않으면 false를 반환해요:

julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> dog_present = false

julia> can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
false
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Julia Exercism

Annalyn의 침투 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Julia 트랙을 개념 35개연습 문제 128개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.