Arhn - архитектура программирования

Расширение коллекции в Swift

Играя с расширением коллекции в Swift 4.2, я пытаюсь сделать следующее:

Если коллекция содержит дубликаты, я хотел бы получить номер каждого элемента в коллекции.

Смотрите мой код ниже.

Есть две ошибки (см. Скриншоты)

err-1:  введите описание изображения здесь

err-2:  введите описание изображения здесь :

Вот мой код:

extension Collection where Iterator.Element: Comparable {
    func occurrencesOfElements() -> [Int: Self] {
        var counts: [Int: Self] = [:]
        let sortedArr = self.sorted(by: { $0 > $1 })
        let uniqueArr = Set(sortedArr) // err-1 !!!!!!!!
        if uniqueArr.count < sortedArr.count {  
            uniqueArr.forEach { counts[$0, default: 0] += 1 } // err-2 !!!!!!!
        }
        return counts
    }
}

// Testing with...
[6, 7, 4, 5, 6, 0, 6].occurrencesOfElements()

// Expected result (see number 6 occurs twice) :
// [0 : 1, 4: 1, 5: 1, 6 : 2, 7 : 1]

  • Ваше ограничение должно быть where Element: Comparable & Hashable, а ваше возвращаемое значение + словарь счетчиков должно быть [Element: Int] 18.10.2018
  • Не считая ошибок компиляции, я не думаю, что ваш алгоритм будет работать. К счастью для вас, существует множество хороших реализаций этого алгоритма. См. stackoverflow.com/q/30545518/3141234 18.10.2018
  • Спасибо, Дэн, за отличный ответ. С вашей помощью мой алгоритм теперь отлично работает. 18.10.2018

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..