Замена элементов в массиве - код работает, если только 2 или более цифр не совпадают - swift
Я пытаюсь найти способ изменить значение элемента в массиве на определенное значение в swift.
Я хочу заменить это значение другим значением следующим образом:
- 0 -> 0
- 1 -> 4
- 2 -> 3
- 3 -> 2
- 4 -> 1
- 5 -> 0
- 6 -> 1
- 7 -> 3
- 8 -> 2
- 9 -> 1
У меня есть группа из 6 чисел, например 123456, и я хочу индивидуально заменить каждую цифру соответствующей цифрой, как показано выше.
Я понял, что делать по большей части, но это не удается, если есть 2 одинаковых цифры. Может ли кто-нибудь сказать мне, что я упускаю? Например, если мой массив равен [1, 2, 3, 4, 5, 6] новый массив будет иметь вид [4, 1, 3, 0, 2, 4]. Он терпит неудачу в Примере, где исходный массив [5, 5, 5, 5, 5, 5] потому что новый массив равен [0].
Если у кого-то есть идея, как это сделать, я был бы признателен.
Спасибо!
Что я уже пробовал:
var elements = [1, 2, 3, 4, 5, 6] for (i, digit) in elements.enumerated() { if digit == 1 { elements[i] = 4 } else if digit == 2 { elements[i] = 3 } else if digit == 3 { elements[i] = 2 } else if digit == 4 { elements[i] = 1 } else if digit == 5 { elements[i] = 0 } else if digit == 6 { elements[i] = 4 } else if digit == 7 { elements[i] = 3 } else if digit == 8 { elements[i] = 2 } else if digit == 9 { elements[i] = 1 } else if digit == 0 { elements[i] = 0 } }
Richard MacCutchan
Код выглядит нормально, что вы имеете в виду под последней частью вашего комментария?
Member 13520929
На самом деле, я только что выяснил более конкретную проблему. Речь идет не о том, чтобы иметь 2 или более одинаковых цифр. Существует проблема, когда "5" является первой цифрой.
Richard MacCutchan
Какая проблема? Я не знаю swift, но не вижу никаких причин, почему ваш код не должен работать.
Richard MacCutchan
Только что попробовал этот код на языке Си и не могу заставить его потерпеть неудачу, даже если первые три цифры все 5. Это должно быть что-то особенное для Свифта.
Member 13520929
Привет, Ричард, спасибо за помощь. Я только что понял, в чем проблема. Это было связано с кодом, который у меня был после этого, который преобразовал этот массив в целое число. Когда 5 было первым числом в массиве, этот код изменил его на 0, поэтому, когда он был затем преобразован в целое число, 0 было отброшено. Я исправил это, преобразовав вместо этого в строку. Я ценю вашу помощь!