http://online.swiftplayground.run/ что мешает проверить
и я уже писал, что ни один из способов не точен на все 100%.
Задачка с числами
RexHunt
#42
Tau
#43
так меня не код интересует (там ошибки могут быть) а сам алгоритм. Я прочитал выше комментарий с примером, сделал по аналогии преобразование и хотел убедится верное оно или нет. Если да, то я могу дальше над алгоритмом кропеть. Если нет - значит методику понял не так.
А вообще, нахер эту задачу. Лучше по устройству xCode проекта почитаю мануалы. Это в жизни точно пригодится.
Tau
#45
ок. значит методка пашет. Ок.Там наверняка есть простой математический способ. ПРосто фигово что все само на себе завязано. Но схему примерно разработал.
big
#46
Немного если модифицировать код, то выдается правильный результат:
var arr = [-2, 3, 4,-1,-5,-4,7] //[3, 4, -1, -5, -4, 7]
var result = [Int]()
while arr.count > 0 {
let num = arr.removeFirst()
if arr.count == 0 { result.append(num); continue }
guard let secNum = num > 0 ? arr.first(where: { $0 < 0 }) : arr.first(where: { $0 > 0 }), let index = arr.firstIndex(of: secNum) else { result.append(num); continue }
let r = num + secNum
if (num > 0 && r >= 0) || (num < 0 && r <= 0) {
result.append(-secNum)
arr.remove(at: index)
arr.insert(r, at: 0)
} else {
if num != 0 { result.append(num) } //<----!!!
arr[index] = r
}
}
print(result)
big
#48
Такое ощущение, что у вас Xcode не установлен
Этот код по крайней мере выдает правильный результат [-2, 3,4,-1,-5,-4,7] -> [-2, 1,4,-1,-4,2]