Member 13520929 Ответов: 1

Замена элементов в массиве - код работает, если только 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 было отброшено. Я исправил это, преобразовав вместо этого в строку. Я ценю вашу помощь!

1 Ответов

Рейтинг:
0

Member 13520929

Я только что понял, в чем проблема. Это было связано с кодом, который у меня был после этого, который преобразовал этот массив в целое число. Когда 5 было первым числом в массиве, этот код изменил его на 0, поэтому, когда он был затем преобразован в целое число, 0 было отброшено. Я исправил это, преобразовав вместо этого в строку.