forループ 4. ワープしてループして

ワープがあるとどうしてもステージの見通しが悪くなり、難しく感じてしまいますが、「ワープを通る」ということ自体はコマンドで直接書くわけでなないので、まずは「宝石を取る」というコマンドを区切りとしてパターンを見つけ出してみましょう。

forループ 3. 端まで行って戻る

スタート地点から4方向に同じパターン(2つ進んでスイッチを入れる)が展開されています。それをして、スタート地点に戻ってをfor文で繰り返します。パターンの作り方は関数を作っていたのとかわりません。funcの代わりにfor文を使うだけです。
問題文にある「もう1つのコマンドも忘れずに。

forループ 2. 4辺でループする

ステージ外周の4辺が同じパターンになっています。角から「1歩進んで宝石を取り、さらに3歩進んで右を向く」のを4回繰り返せばクリアできます。

関数 7. パターンを探す

出発点から4方向に2ブロックおきにスイッチが並んでいるので、これを順にオンにしていきます。
どういうコマンドのかたまりを関数にまとめるかは自分で考えます。「2マス進んでスイッチを入れる」というのが基本パターンになりそうですが、あえて関数のネストの練習と思って細かい目に関数を分割してみました。それぞれの関係性をチェックしてみてください。

関数 6. 並んだ階段

今回も関数をネストして呼び出します(関数の中から別の関数を使用)。
また今回は関数の名前も自分で決めなければなりません。Swift Playgroundsでは関数名に英語を使うこともできますが、一般的にはアルファベットや数字を使って名前をつけることが多いです。
今回は最初の「目の前の宝石をとり、振り返って元の位置に戻る」を英語で表したcollectGemTurnAround()と、「それを前後3回やって1列分の宝石をとる」solveRow()という名前をつけました。日本語か英語かはさておき、何をする関数なのか直接あらわす名前にしておくのが良いでしょう(私も考えるのが面倒になってpattern1とかすることもありますが…)。
また関数名の途中にはスペースを使えないので単語を組み合わせた名前にする時はこのように2つ目以降の単語の最初の文字だけ大文字にする「キャメルケース(更に正確にはローワーキャメルケース)」で書くことが推奨されています。
「collect gem (and) turn around」という英文からとるなら「collectGemTurnAround()」などとします(andは長いので省略。つけてもOKです)。また通常主語はつけません。その理由は追々明らかになります。