gpt4 book ai didi

swift - 如何正确使用 .dropLast()

转载 作者:行者123 更新时间:2023-12-04 07:23:52 26 4
gpt4 key购买 nike

所以这个问题只是一个更大问题的一小部分。但这一切都归结为我对这个功能的误解..
鉴于我的功能:

    func diamond(_ size: Int) -> String {
var diamonds = ""
for diamond in 0...size {
if diamond % 2 == 1 || diamond == 1 {
diamonds.append(String(repeating: "*", count: diamond))
diamonds.append("\n")
}
}
print(diamonds)
print("This should print one row less but doesn't\n", diamonds.dropLast())
diamonds = diamonds + diamonds.dropLast().reversed()
return diamonds
}

diamond(5)
diamond(5) 的预期输出应该是 =
*
***
*****
***
*
但目前的输出是:
*
***
*****
***** //<-- Doubled
***
*
我如何滥用 dropLast?谢谢

最佳答案

问题出在这里 diamonds.append("\n")您在最后添加一个新行,最后删除。这意味着你正在放弃 "\n"而不是 * .
此外,您必须删除大小 size 的字符.原因是你在打印的时候已经在打印和覆盖*****最大尺寸从第一次开始,所以在 reversed() 中不需要这个
所以,你的最终功能是

func diamond(_ size: Int) -> String {
var diamonds = ""
for diamond in 0...size {
if diamond % 2 == 1 || diamond == 1 {
if diamond != 1 {
diamonds.append("\n")
}
diamonds.append(String(repeating: "*", count: diamond))
}
}
diamonds = diamonds + diamonds.dropLast(size).reversed()
return diamonds
}
测试:
// Inputs
print("============diamond(3)================")
print(diamond(3))
print("============diamond(5)================")
print(diamond(5))
print("============diamond(7)================")
print(diamond(7))


// Outputs
============diamond(3)================
*
***
*
============diamond(5)================
*
***
*****
***
*
============diamond(7)================
*
***
*****
*******
*****
***
*

关于swift - 如何正确使用 .dropLast(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68328447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com