Swift Playgrounds

コードを学ぼう2【3つの宝石と4つのスイッチ】解答例と解説

3つの宝石と4つのスイッチ

解答例

var gemCounter = 0
var switchCounter = 0

while gemCounter != 3 || switchCounter != 4 {
  if gemCounter != 3 && isOnGem {
    collectGem()
    gemCounter = gemCounter + 1
  } else if switchCounter != 4 && isOnClosedSwitch {
      toggleSwitch()
      switchCounter = switchCounter + 1
  }
  if isBlocked && isBlockedLeft {
      turnRight()
  } else if isBlocked {
      turnLeft()
  }
  moveForward()
}

解説

今度は、2つの条件を満たさないとゴールできません。
まず、変数をvarで宣言し、初期値をどちらも0(ゼロ)とします。
前半の宝石ゾーンで3つ宝石をゲットし、後半は4つスイッチを切り替えた時点でゴールします。
!=』を使うことにより、等しくない間はtrueとする事ができます。
gemCounter != 3』は、gemCounterと3等しくない場合にtrue
つまり、宝石が0個、1個、2個は等しくないのでtrue3 != 3等しいのでfalseになります。
ややこしいですが、3つになった時点で条件が外れるので、このように上限を決める時に使いやすいですね。

それから、『論理演算子』も復習しておきましょう。

・論理AND(&&)演算子…全ての条件がtrueの時だけ実行される

・論理OR(||)演算子…いずれかの条件がtrueの時に実行される
(どちらもtrueでもtrue(実行される))

・論理NOT(!)演算子…条件が逆になる。例えば、!onGemでは宝石の上にいない時、true

あとは『キャメルケース』ですが、英語で『camel case』つまり〝ラクダのこぶ〟という意味で
大文字がラクダのこぶに見えることからの命名だそうです。
キャメルケースで書くと、『CamelCase』または『camelCase』となり、こぶができてるように…
見える??
とにかく、複合語をハイフンなどを入れずに、要素の最初を大文字で書き表すことです。
今までも、gemCounterのように書いてきているので、なじみがありますね。

要点まとめ

・変数名にはキャメルケースを使い、後で見てわかりやすいものにしよう