パラメータ 3. 上げたり下げたり

このステージでもexpert君とcharacterちゃんの2体を交互に操作してクリアを目指します。
expert君は基本同じ場所から動けず、両側にあるスイッチをふり返りながら操作するだけ。実際に動いて宝石を集めるのはもっぱらcharacterちゃんの役目です。
どちらに指示を出しているのか気をつけてドット記法でコードを書けば、行数は多いですがさほど難しいステージではないでしょう。
共通パターンとして「目の前のマスの宝石をとって振り返って最初のマスに戻る」というのがあちこちにあるなと思い関数化しました。

パラメータ 2. 関数を作る

ひとつの関数に引数を2つ以上もたせることも出来ます。

てなもんです。
今回はturnLockという関数に、upとnumberOfTimesという2つの変数をぶらさげます。upはBool型とあります。Bool型はtrueかfalseのどちらかが入るんでした。upがtrueだったら移動板が上がり、falseなら下がるように関数を作るというお題です。またnumberOftimesはその上げ下げ作業をする回数です(Int型なので数字が入ります)。例えば、

としたら、板を上げる処理を3回分する、という動作にするわけです。
(upという変数名はちょっとわかりにくいかも知れません。今までのルールだと、isUp(upかどうか)という名前で考えた方がピンとくるでしょうか?)

ちなみに、自分で用意した関数を呼び出す時、その対象として、先頭に「expert.」をつけるべきかどうか気になった方もいるかも知れません。現状ではつけてもつけなくても動作は同じみたいです。一方、関数の中ではexpert.をつけないとエラーになりますし、そっちで対象を指定しているので、関数全体としては不要と考えれば良いでしょう。turnLeft()はつけるのにturnLock()はつけない、というのが気持ち悪い、という方もいるかも知れないですが、手間が減るしつけない方をオススメします。たぶん正式なSwiftの文法としてもそれが正しいはずです。

パラメータ 1.もっと遠くまで進む

ついに引数の導入です。
関数は決まった処理をあちこちで何度も実行させるのには便利ですが、ほんのちょっとだけ動きを変えたい時があります。ほぼ同じ内容なんだけど、曲がる向きが右なものと左なものでそれぞれの関数を作って使い分ける、というのは非効率です。そんな時の為に、関数呼び出し時に追加指示を加えるのが引数(パラメータ)です。
関数の呼び出しは伝書鳩を飛ばすようなものだと思ってください。鳩は自分の名前のついた巣(func)へ飛んで行き、funcの番人は鳩が飛んできたのを合図に決められた仕事を開始します。引数は鳩の足にメッセージを結んで飛ばすようなものです。番人は単に鳩が飛んできたという合図だけでなく、足にくくりつけられた伝言をみて、仕事の内容を調整するのです。
今まで私の回答例で何度か、

なんて関数を作ってきました。番人は鳩が飛んできたら機械的に一律「3歩進む」という仕事をします。しかしもし2歩や4歩のバージョンも必要になったらどうでしょう?いちいちmove2()やmove4()を作るのでしょうか?それぞれに番人を雇ってたら人件費が大変ですね(笑)。
そんな時に活躍するのがまさにこの引数です。番人に「歩数は毎回伝言で伝えるから、それにあわせて調整してくれ」と約束事を決めるわけです。

のように関数を作っておきます。関数名の後ろにいつも謎の()がついてましたが、ついに中身が入ったわけです。distance(距離)という名前でInt(整数値)を()の中に書けるよ、と宣言しています。そして、for文の繰り返し回数を書いてるところにもdistanceと書かれています。
そして呼び出す時はこう。

こうすると、呼び出す時に指定した5という数字が、実際に関数の中身が実行される時、distanceと書いたところにかわりに入ってくれます。なので、

ならfor文は2回繰り返されますし、

なら4回になります。数字違いのfunc文をたくさん書かなくてよくなるわけです。番人は一人で済みます!

さて、これを踏まえて回答例です。

なお今回は距離を指定する因数ということでdistanceという言葉を使っていますが、ここは単なる変数の名前なので、その変数の使い道を表したわかりやすいものを使えばOKです。