Nested loop畫好多蘋果

twber
彼得潘的 Swift iOS / Flutter App 開發教室
3 min readSep 10, 2020

來畫蘋果摟!

一箱蘋果裡能有紅的、綠的。利用顏色交錯來排字: 弱弱的『一』『/』,或是紅綠相間滿滿一箱。

還能把蘋果堆成不同形狀: 正方形,倒三角形,金字塔和菱形。

彼得潘提示兩個解法:

解法1: 利用兩個 for 迴圈。

解法2: 利用一個 for 迴圈,搭配 String 的 init(repeating: , count:)。

實作心得是: 在每次遞增(減)數量為1 時,像是正方形、三角形,利用兩個for 迴圈的作法較為高效,寫程式的行數較少。

而遞增(減)數量不為1時,像是金字塔和菱形,利用一個 for 迴圈,搭配 String 的 init(repeating: ,count:)就是很好用的工具,在for loop 裡調整count 變量很方便。菱形的作法:

sender.value = sender.value.rounded()
var number = Int(sender.value)
var content = ""
// Look at 7-row diamond structure/*
row 1: print 3 🥝 + 1 🍎
row 2: print 2 🥝 + 3 🍎row 3: print 1 🥝 + 5 🍎row 4: print 0 🥝 + 7 🍎row 5: print 1 🥝 + 5 🍎row 6: print 2 🥝 + 3 🍎row 7: print 3 🥝 + 1 🍎
*/
//The diamond's height refers to how many rows it has. The row# should be odd. The one row cannot build a diamond.

var height: Int = number*2 - 1
if height>2, height%2 != 0 {
for row in (1 ..< height + 1) {
var appleCount = 0
var kiwiCount = 0
if (row <= (height / 2 + 1) ) {//upper half
appleCount = row * 2 - 1
kiwiCount = (height/2 + 1) - row
}else{//lower half
appleCount = (height - row) * 2 + 1
kiwiCount = row - (height/2+1)
}

var kiwiInFront = String(repeating: "🥝", count: kiwiCount);
var apples = String(repeating: "🍎", count: appleCount);
//print(spaceInFront+stars)

content += kiwiInFront+apples
content += "\n"
}

--

--