気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
コメントからだとマークダウンが崩れるようなので、以下に転載します。
swift
1for i in 1 ... 13 { 2 3 if !isBlocked { 4 moveForward() 5 } else { 6 turnLeft() 7 if !isBlocked { 8 moveForward() 9 } else { 10 turnLeft() 11 turnLeft() 12 moveForward() 13 } 14}
投稿2019/09/12 02:48
総合スコア622
0
すでに回答が出ていますが、、ループ回数を変えたくないのであれば、以下でも
良さそうです。
もちろん、左に1回だけ曲がると前に進めることが前提ですけれど。
swift
1for i in 1 ... 13 { 2 3 if !isBlocked { 4 moveForward() 5 } else { 6 turnLeft() 7 moveForward() 8 } 9} 10 11
余談ですが、上記の前提に立つならば、以下でもOKですね。
ますます問題の趣旨から離れていますが。
swift
1 2for i in 1 ... 13 { 3 4 if isBlocked { 5 turnLeft() 6 } 7 moveForward() 8}
投稿2019/09/12 02:10
総合スコア5488
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ループの回数が足りないだけではないでしょうか?
例題の場合、ゴールまで13マス?ありますが、提示のコートの場合、左にターンで1ループ使ってしまいます。
投稿2019/09/11 23:58
総合スコア622
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
早速のお返事ありがとうございます!
僕もループ数を変更するしかないよなーとは思ったんです。
ただプレイグラウンドのデフォルトで13というコードが書かれていて、13でなんとかする方法を考えないといけないのかな、と思ったんですが、どう考えても難しくて。
ターンで1ループ使うので、15ループにすればよいということですよね。
ありがとうございます!
2019/09/12 02:47
どの程度までswiftの構文を使用できるかで書き方はいろいろありますが、行き止まりに着いたとき右か左かどちらに道があるかわからない場合、次のようにして解決できないでしょうか。
```swift
for i in 1 ... 13 {
if !isBlocked {
moveForward()
} else {
turnLeft()
if !isBlocked {
moveForward()
} else {
turnLeft()
turnLeft()
moveForward()
}
}
```
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。