Мне интересно, как справиться с этим выражением с помощью Swift. Я имплементировал это в рубине вот так:
def disperseValueIntoNSpaces(n,m)
accum = 0
dispersedValue = []
for k in 0...m
valCrt = ((n*(m-k))/m+0.5)-((n*(m-k-1))/m+0.5)
dispersedValue.push(valCrt.to_i)
accum += valCrt
end
return dispersedValue
end
и перевел его в swift вот так:
func disperseValueIntoNSpaces(numOfRows: Int, spaces: Int) -> [Int] {
var accum: Int = 0
var n: Float = Float(numOfRows)
var m: Float = Float(spaces)
var dispersedValues: [Int] = []
for k in (0...spaces) {
let valCrt = ((n*(m-k))/m)+0.5) - ((n*(m-k-1))/m+0.5)
// error: expected expression
// error: Binary operator '-' cannot be applied to operands of type 'Float' and 'Int'
// error: Consecutive statements on a line must be separated by ';'
dispersedValues.append(Int(valCrt))
accum += valCrt
}
return dispersedValues
}
Эту ошибку с плавающей запятой за вычетом Int достаточно легко исправить, но я не уверен, как составить математическое уравнение.
accum += Int(valCrt)
Исправьте проблему «Float - Int» и посмотрите, что произойдет. Просто исправляйте одну проблему за раз.
let valCrt = ((n*(m-Float(k)))/m)+0.5) - ((n*(m-Float(k)-1))/m+0.5)