Страничка курса: https://maxcom.github.io/scala-course-2022/
(минимум необходимый для выполнения ДЗ).
Подробно устройство коллекций рассмотрим на втором занятии.
Seq[T] – общий тип для коллекций, имеющих определенный порядок
ArrayBuffer[T] – на базе массива, аналог ArrayList из Java
Vector[T] – неизменяемый аналог ArrayList
List[T] пока не используем.
val buffer = ArrayBuffer[Int](1, 2, 3)
// тип указывать не обязательно
buffer += 4 // добавление элемента
// в Scala можно переопределять операторы
buffer(1) // получение элемента
// exception при выходе за границу
buffer.get(1) // получение элемента
// возвращает Option
У стандартных коллекций много полезных функций
Справка на Vector: scaladoc.
val v = Vector(1, 2, 3, 4)
val (first, second) = v.splitAt(v.length / 2)
// first == Vector(1,2)
// second == Vector(3,4)
Описание алгоритма: на wikipedia
Неплохая визуализация
(надо выбрать "merge sort")
Ищем N самых меньших значений, не выполняя полной сортировки. Повторяющиеся значения не теряем.
Один проход по вектору, собираем N результатов по ходу движения.
Используем всё что найдем в стандартной библиотеке.
Решение должно давать те же результаты что и
topn(input: Vector[Int], n: Int) = input.sorted.take(n)
только без полной пересортировки
Модифицируем merge sort так, чтобы он выдавал только уникальные значения.
Дубли убираем в при merge.
git clone git@gitlab.com:yourname/scala-2022-task1.git
cd scala-2022-task1
git checkout -b work
В ветку помещаем код решения, коммитим и git push
В git только исходники!
Добавляем права на репозитарий проверяющим (роль maintainer).
Список будет опубликован в telegram.
Создаем merge request на master,
assignee на maximvalyanskiy
Сами не принимайте merge request!
Напоминаю: