Коллекции в Swift

swift
ios

#1

Добрый день! Пытаюсь разобраться с коллекциями в Swift, но идет туго. Помогите решить задачу.
Необходимо написать функцию , преобразующую массив окружностей по следующему алгоритму:

  • белые окружности должны быть первыми
  • радиус черных должен быть увеличен в 2 раза
  • красные нужно убрать из результата
  • зеленые перекрасить в синие
  • затем разместить синие в конце массива
  • если не указано иное, то порядок окружностей должен сохраняться

/// Перечисление, представляющее один из пяти цветов
public enum Color {

    case white

    case black

    case red

    case green

    case blue
}

/// Структура, описывающая окружность
public struct Circle {

    public var radius: Double

    public var color: Color

    public init(radius: Double, color: Color)
}

func firstFunction(arrayList: [Circle]) -> [Circle]{
}


#2

Сам еще изучаю swift. Так что могут быть ошибки
Вроде бы все условия соблюдены (код ниже):

enum Color {
	case white
    case black
    case red
    case green
    case blue
}

struct Circle {
	var radius: Int // var - так как свойство может меняться
	var color: Color // var - так как свойство может меняться
}

func sort(_ circles: [Circle]) -> [Circle] {
	// Если всего лишь 1 элемент, то чего его сортировать?)
	if circles.count <= 1 { return circles }
	
	// Перемещаем белые в начало
	var circles = circles.sorted { (circle1, circle2) -> Bool in
		return circle1.color == .white && circle2.color != .white
	}
	
	// Обрабатываем условия .black и .green
	// В остальных случаях просто пропускаем
	for index in 0..<circles.count {
		switch circles[index].color {
			case .black:
				circles[index].radius *= 2
			case .green:
				circles[index].color = .blue
			default: break
		}
	}
	
	// Перемещаем синие в конец
	return circles.sorted { (circle1, circle2) -> Bool in
		return circle1.color != .blue && circle2.color == .blue
	}
}
// Для проверки
sort([
	Circle(radius: 11, color: .blue),
	Circle(radius: 12, color: .white),
	Circle(radius: 13, color: .red),
	Circle(radius: 14, color: .black),
	Circle(radius: 15, color: .green),
	Circle(radius: 16, color: .green),
	Circle(radius: 17, color: .blue),
	Circle(radius: 18, color: .white),
])

#3

Вы забыли удалить красные, а так решение правильное! Спасибо)
Можно добавить .filter {$0.color != .red} и готово