Задачка с числами


#42

http://online.swiftplayground.run/ что мешает проверить
и я уже писал, что ни один из способов не точен на все 100%.


#43

так меня не код интересует (там ошибки могут быть) а сам алгоритм. Я прочитал выше комментарий с примером, сделал по аналогии преобразование и хотел убедится верное оно или нет. Если да, то я могу дальше над алгоритмом кропеть. Если нет - значит методику понял не так.

А вообще, нахер эту задачу. Лучше по устройству xCode проекта почитаю мануалы. Это в жизни точно пригодится. :slight_smile:


#44

Если про этот пример, то у меня на бумаге также получилось


#45

ок. значит методка пашет. Ок.Там наверняка есть простой математический способ. ПРосто фигово что все само на себе завязано. Но схему примерно разработал.


#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)

#47

Короче этот код рабочий? :slight_smile: тогда его можно будет зарефакторить. :)))


#48

Такое ощущение, что у вас Xcode не установлен :slight_smile:

Этот код по крайней мере выдает правильный результат [-2, 3,4,-1,-5,-4,7] -> [-2, 1,4,-1,-4,2]


#49

В xCode пишу только проверенный и протестированный код. :)))