swiftPractice[24]_迴圈練習(下)

nested loop 巢狀迴圈進階練習

--

基本的原理花了一兩週,通了之後進階練習只要 2 小時!🤩🤩

單排變化

✦ 用 i == 1 控制第一排變化。

  count = 5
icon = ""

for i in 1...count{
for _ in 1...count{
if i == 1{
icon += "🐼"
}else{
icon += "🌕"
}
}
icon += "\n"
}
textLabel.text = icon

左對角線

✦ 熊貓出現位置跟當前排數一樣,所以用 i == j 控制熊貓。

  count = 5
icon = ""
for i in 1...count{
for j in 1...count{
if i == j{
icon += "🐼"
}else{
icon += "🌕"
}
}
icon += "\n"
}
textLabel.text = icon

右對角線

✦ 熊貓出現位置跟排數相反,而且是遞減,設定變數 panda 等於總排數,然後在外圈的 loop 控制每次跑完 panda-1。

  count = 5
icon = ""
var panda = count
for i in 1...count{
for j in 1...count{
if j == panda{
icon += "🐼"
}else{
icon += "🌕"
}
}
panda -= 1
icon += "\n"
}
textLabel.text = icon

叉叉

✦ 把前兩個做法合併!

  count = 5
icon = ""
var panda = count
for i in 1...count{
for j in 1...count{
if j == panda || i == j{
icon += "🐼"
}else{
icon += "🌕"
}
}
panda -= 1
icon += "\n"
}
textLabel.text = icon

十字

✦ 總排數是奇數時,先宣告變數計算正中間是第幾排,橫向用外圈 loop 控制,縱向用內圈 loop 控制。

  count = 5
icon = ""
var middle = (count+1)/2
for i in 1...count{
for j in 1...count{
if j == middle || i == middle{
icon += "🐼"
}else{
icon += "🌕"
}
}
icon += "\n"
}
textLabel.text = icon

外框

✦ 橫向與縱向的最後一排都是 count,橫向用外圈 loop 控制,縱向用內圈 loop 控制。

  count = 5
icon = ""

for i in 1...count{
for j in 1...count{
if i == 1 || i == count{
icon += "🐼"
}else if j == 1 || j == count{
icon += "🐼"
}else{
icon += "🌕"
}
}
icon += "\n"
}
textLabel.text = icon

交錯

✦ 一開始思考的時候非常土法煉鋼,先分成雙數排跟單數排,再分開判斷單一排的雙數、單數位置的 icon 如下。後來看了答案發現大前輩 peter 的作法更精簡聰明!!

//我的作法
count = 5
icon = ""

for i in 1...count{
for j in 1...count{
if i % 2 == 0{
if j % 2 == 0{
icon += "🐼"
}else{
icon += "🌕"
}
}else{
if j % 2 == 0{
icon += "🌕"
}else{
icon += "🐼"
}
}
}
icon += "\n"
}
textLabel.text = icon
//大前輩作法
var content = ""
let count = 5
for i in 1...count {
for j in 1...count {
if (i + j) % 2 == 0 {
content += "👧🏻"
} else {
content += "👦🏽"
}
}
content += "\n"
}

每排不同 icon

✦ 做一個 array 裝各種 icon,橫向由外圈 loop 控制,由於第一排要對應到第一個 array成員,所以代表外圍排數位置的 i 要減 1。

  count = 5
icon = ""
var icons = ["🐭","🐮","🐯","🐰","🐲"]
for i in 1...count{
for _ in 1...count{
icon += icons[i-1]
}
icon += "\n"
}
textLabel.text = icon

作業出處

--

--