Как напечатать строку в словаре на Swift?

-2

Как я могу напечатать тип наибольшего числа в этом словаре?

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
var largest = 0
var typeoflargest:String = " "
for (kind, numbers) in interestingNumbers {
    for type in kind.characters {
        for number in numbers {
            if number > largest {
                largest = number
                typeoflargest = String(type)
            }
        }
    }
}
print(largest)
print(typeoflargest)

выход:

25
S

почему я получил только первый символ "S" вместо "Квадрата"?

  • 0
    Почему за голоса? Это четкий вопрос. Это показывает соответствующий код. Он показывает фактический и желаемый результат. Что еще вы, избиратели, хотите?
Теги:
string
dictionary
character

2 ответа

1
Лучший ответ

Там нет причин, чтобы быть итерация характеры kind строки. Просто выполните следующие действия:

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
var largest = 0
var typeoflargest:String = ""
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            typeoflargest = kind
        }
    }
}
print(largest)
print(typeoflargest)

Выход:

25
Площадь

0

Альтернативный подход:

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]

let maximum = interestingNumbers
    .map{ type, numbers in return (type: type, number: numbers.max()!) }
    .max(by: { $0.number < $1.number })!

print(maximum.type, maximum.number)

Объяснение:

Во-первых, получите максимальный элемент каждой категории. Сделайте это, итерируя словарь, сопоставляя значения из массивов чисел с максимальными числами (в пределах их соответствующих массивов), давая:

[
    (type: "Square", number: 25),  // 25 is the max of [1, 4, 9, 16, 25]
    (type: "Prime", number: 13),   // 13 is the max of [2, 3, 5, 7, 11, 13]
    (type: "Fibonacci", number: 8) // 8 is the max of [1, 1, 2, 3, 5, 8]
]

Затем получите максимальную пару типа/числа, сравнив их числа, получив результат:

(type: "Square", number: 25) // 25 is the max of 25, 13, 8
  • 0
    Этот код может использовать некоторые объяснения.
  • 0
    @rmaddy Я все еще настраиваю это, я буду, когда у меня будет более окончательный ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню