トラック
/
Julia
Julia
/
演習
/
Annalynの潜入
Annalynの潜入

Annalynの潜入

学習演習

はじめに

Juliaの真偽値

真か偽の値は、Bool型で表します。 Bool型が持つ値は、trueとfalseの2つだけです。

julia> true
true

julia> false
false

真偽値の演算子

Juliaには、真偽値の演算子が3つあります。

&&は、真偽値の「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はやがて、友人が囚われている野営地を見つけます。誘拐犯は2人いました。強力な騎士と、ずる賢い射手です。

プレイヤーには、次に何をするかの選択肢がいくつか示されます。 4つの選択肢それぞれについて、その選択肢を表示すべきかどうかをゲームに伝える関数を書く必要があります。

1. 「速攻」の選択肢を表示すべきか確認する

騎士が眠っていれば、騎士が完全に目を覚まして鎧を身につける前に、Annalynは野営地へ素早く攻撃を仕掛けることができます。

騎士が起きているかどうかを示す真偽値を入力として受け取る、can_do_fast_attackという名前の関数を実装してください。 この関数は、キャラクターの状態に基づいて「速攻」アクションが使える場合にtrueを返します。それ以外の場合はfalseを返します。

julia> knight_awake = true

julia> can_do_fast_attack(knight_awake)
false

2. 「スパイ」の選択肢を表示すべきか確認する

3人のうち少なくとも1人が起きていれば、スパイできます。そうでなければ、スパイは時間の無駄です。

騎士、射手、囚人がそれぞれ起きているかどうかを示す3つの真偽値を入力として受け取る、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. 「囚人に合図」の選択肢を表示すべきか確認する

囚人が起きていて、射手が眠っていれば、鳥の鳴き声を使って囚人に合図を送ることができます。 射手が起きている場合は、射手も鳥の合図の訓練を受けているため、安全に合図を送ることができません。

射手と囚人がそれぞれ起きているかどうかを示す2つの真偽値を入力として受け取る、can_signal_prisonerという名前の関数を実装してください。 この関数は、キャラクターたちの状態に基づいて「囚人に合図」アクションが使える場合にtrueを返します。 それ以外の場合はfalseを返します。

julia> archer_awake = false
julia> prisoner_awake = true

julia> can_signal_prisoner(archer_awake, prisoner_awake)
true

4. 「囚人を解放」の選択肢を表示すべきか確認する

Annalynは、友人を解放するために野営地へこっそり忍び込むことができます。これは危険な行為で、成功するのは次の2つの場合だけです。

  • Annalynがペットの犬を連れている場合、射手が眠っていれば囚人を救出できます。 騎士は犬を恐れており、Annalynと友人が逃げ出す前に射手が準備をする時間はありません。

  • Annalynが犬を連れていない場合は、Annalynと囚人がとても慎重に行動しなければなりません。 囚人が起きていて、騎士と射手がどちらも眠っていれば、Annalynは囚人を解放できます。しかし囚人が眠っている場合は救出できません。Annalynが突然現れると囚人は驚いて、騎士と射手を起こしてしまうからです。

4つの真偽値を入力として受け取る、can_free_prisonerという名前の関数を実装してください。 最初の3つの入力は、騎士、射手、囚人がそれぞれ起きているかどうかを示します。 最後の入力は、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に登録すれば、35個のコンセプト128個の演習、そして本物の人間によるメンタリングとともに、Juliaを学んでマスターできます。すべて無料です。