我想runningSum在一个数字数组(或任何有序的可添加东西的集合)上的函数返回一个相同长度的数组,其中每个元素i是A中所有元素的总和,直到包含i.
例子:
runningSum([1,1,1,1,1,1]) -> [1,2,3,4,5,6]
runningSum([2,2,2,2,2,2]) -> [2,4,6,8,10,12]
runningSum([1,0,1,0,1,0]) -> [1,1,2,2,3,3]
runningSum([0,1,0,1,0,1]) -> [0,1,1,2,2,3]
Run Code Online (Sandbox Code Playgroud)
我可以使用for循环或其他任何方法来完成此操作.有更多功能选项吗?它有点像reduce,除了它构建一个具有所有中间值的结果数组.
更一般的是拥有一个接受任何序列的函数,并提供一个输入序列的运行总和的序列.
我需要细分一个3位数字来获得每个数字的值.我知道如何使用以下内容获取第一个和最后一个数字的值:
var myInt: Int = 248
print(myInt/100) // first number equals 2
print(myInt%10) // last number equals 8
Run Code Online (Sandbox Code Playgroud)
我也知道如何使用以下方法获得中间数字的值:
print((myInt - myInt/100*100 - myInt%10)/10) // middle number equals 4
Run Code Online (Sandbox Code Playgroud)
但是,我觉得我得到中间数字值的方式太乱了,并且可能有更简单的方法来获得相同的结果.
有没有人知道更简单的选项来获得中间数字的值,那么我目前使用的是什么?
是否有可能Int在 Swift 中获取变量的所有数字而不将此变量转换为string?
小例子我现在是怎么做的:
let number = 123456
let array = String(number).characters.map{Int(String($0)) ?? 0}
Run Code Online (Sandbox Code Playgroud) 我试图将Int数组转换为Int数字.我现在正在做的是将其转换为String数组,然后使用该joined()函数.有没有更有效的方法来做到这一点?
例:
let sortedIntArray = String(number).characters.map{Int(String($0)) ?? 0}.sorted(by: { $0 > $1 })
let desOrder = Int(sortedIntArray.map{String($0)}.joined())!
Run Code Online (Sandbox Code Playgroud)