swift - 将键值中的整数相加,直到出现一位数

标签 swift

我需要一个既能将整数减少到一位数又能接受字符串的函数。使用reduce 的变体也将受到赞赏。

let dict: [Character:Int] = ["a": 1, "j":1, "s":1, "b":2, "k":2, "t":2, "c":3, "l":3, "u":3, "d":4, "m":4, "v":4, "e":5, "n":5, "w":5, "f":6, "o":6, "x":6, "g":7, "p":7, "y":7, "h":8, "q":8, "z":8, "i":9, "r":9]

该函数接受字符串并通过求和进行归约,但不会归约到一位数字。

func f1(_ str: String) -> Int {
return str.reduce(0) { $0 + (dict[$1] ?? 0) }
}
f1("lighthouse") //52

此函数减少到一位数字,但不接受字符串。

func f2(_ n: Int) -> Int {
return (1 + ((n-1) % 9))
}
f2(52) //7

最佳答案

您只需在 return 语句中组合这两种方法即可:

return 1 + (str.reduce(0) {$0 + (dict[$1] ?? 0)} - 1) % 9

关于swift - 将键值中的整数相加,直到出现一位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48512102/

相关文章:

swift - 如何强制从字典创建的 SKTextureAtlas 不修改纹理大小?

objective-c - 尝试添加行时应用程序不断崩溃?

ios - 应该在什么队列上调用 completionHandler 来报告即时错误?

符合具有默认实现的协议(protocol)的类型的 Swift 最小实现

swift - 将 UIViewController 呈现为具有透明背景的模态

Swift 4 - 字符串中的可选单词

ios - UIStoryboardScene 意外地释放其 Controller 而不更改保留计数

ios - 如何检查彼此顶部显示的多个 UIView subview 是否有贝塞尔曲线路径内的触摸事件?

命令行应用程序的 Swift 异步方法调用

ios - Swift UITableViewController 减少加载时间