我有一個從 1 到 100 的陣列,如果數字可以被 4 整除,我必須列印元素,它應該列印字母“A”,如果數字可以被 5 整除,它應該列印字母“B”,如果它是可被兩個然后“AB”整除我想制作一個可擴展的解決方案,如果將來我想添加可被8整除的數字應該列印“C”并且被4和8整除應該列印“AC”,5和8應該列印“BC”和如果所有三個則“ABC”
所需的輸出:
1
2
3
A
B
6
7
C
9
B
11
AB
13
14
...
我寫了這個
for number in 1...100 {
if number.isMultiple(of: 4) && !number.isMultiple(of: 5){
print("A"
} else if !number.isMultiple(of: 4) && number.isMultiple(of: 5){
print("B")
} else if number.isMultiple(of: 4) && number.isMultiple(of: 5){
print("AB")
} else {
print(number)
}
}
請提供一個可擴展的解決方案來繼續添加 If-else 不是一個好的選擇。
uj5u.com熱心網友回復:
你非常接近,但你不需要 else 條件。如果匹配另一個條件,只需將字符添加到字串中:
for number in 1...100 {
var string = ""
if number.isMultiple(of: 4) { string.append("A") }
if number.isMultiple(of: 5) { string.append("B") }
if number.isMultiple(of: 8) { string.append("C") }
print(string.isEmpty ? number : string)
}
使用字典存盤字符:
let dict = [
4: "A",
5: "B",
8: "C"
]
for number in 1...100 {
var string = ""
for (key, character) in dict where number.isMultiple(of: key) {
string.append(character)
}
print(string.isEmpty ? number : string)
}
請注意,字典是無序集合。如果您需要對字符進行排序,則需要在迭代其鍵值對之前按其值對字典進行排序:
let sortedDict = dict.sorted(by: { $0.value < $1.value })
for number in 1...100 {
var string = ""
for (key, character) in sortedDict where number.isMultiple(of: key) {
string.append(character)
}
print(string.isEmpty ? number : string)
}
uj5u.com熱心網友回復:
在這里,您可以在需要時添加,而不是使用 if-else
var stringArray = [String]()
for number in 0...100 {
stringArray.append(String(number))
}
// stringArray = ["0","1", "2", "3",....,"99", "100"]
// Adding a zero before to compare with the index
stringArray = stringArray.enumerated().map({ index, item in
var value = item
if index % 4 == 0 {
value = Int(item) == nil ? item "A": "A"
}
return value
})
stringArray = stringArray.enumerated().map({ index, item in
var value = item
if index % 5 == 0 {
value = Int(item) == nil ? item "B": "B"
}
return value
})
stringArray = stringArray.enumerated().map({ index, item in
var value = item
if index % 8 == 0 {
value = Int(item) == nil ? item "C": "C"
}
return value
})
stringArray.removeFirst()
print(stringArray)
結果::
"1", "2", "3", "A", "B", "6", "7", "AC", "9", "B", "11", "A", "13", "14", "B", "AC", "17", "18", "19", "AB", "21", "22", "23", "AC", "B", "26", "27", "A", "29", "B", "31", "AC", "33", "34", "B", "A", "37", "38", "39", "ABC", "41", "42", "43", "A", "B", "46", "47", "AC", "49", "B", "51", "A", "53", "54", "B", "AC", "57", "58", "59", "AB", "61", "62", "63", "AC", "B", "66", "67", "A", "69", "B", "71", "AC", "73", "74", "B", "A", "77", "78", "79", "ABC", "81", "82", "83", "A", "B", "86", "87", "AC", "89", "B", "91", "A", "93", "94", "B", "AC", "97", "98", "99", "AB"
如果您只想輸入 [Any] 型別,那么只需
var resultArray = [Any]()
resultArray = stringArray.map({ number in
if let num = Int(number) { return num }
else { return number }
})
print(resultArray)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488724.html
