Menu
Coddy logo textTech

Отметить выполнение

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 34 из 56.

Первая функция: обработать список действий «отметить эту привычку как выполненную в этот день» и сформировать конечное состояние.

Каждая входная строка представляет собой одну операцию в формате habit:day, где day находится в диапазоне от 1 до 7. Если привычка еще не существует, создайте её с пустым массивом, затем добавьте день. Если день для этой привычки уже записан, не записывайте его дважды.

Вы будете опираться на паттерн обращения по индексу со значением по умолчанию (default-subscript) из главы о словарях: habits[name, default: []].append(day) работает независимо от того, существует ключ или нет.

challenge icon

Задание

Легко

Прочитайте одну строку ввода: список записей habit:day, разделенных запятыми (например, read:1,read:3,workout:2). После применения каждой операции выведите привычки в алфавитном порядке, по одной на строку, в формате:

<habit>: <days_sorted_ascending_joined_with_comma>

Пропускайте дублирующиеся пары habit:day.

Для входных данных read:1,read:3,workout:2,read:1,read:5,workout:4 вывод будет следующим:

read: 1,3,5
workout: 2,4

Шпаргалка

Используйте паттерн обращения по индексу со значением по умолчанию (default-subscript), чтобы добавить элемент в словарь массивов, создавая ключ, если он не существует:

var habits: [String: [Int]] = [:]
habits[name, default: []].append(day)

Чтобы избежать дубликатов, выполните проверку перед добавлением:

if !habits[name, default: []].contains(day) {
    habits[name, default: []].append(day)
}

Попробуйте сами

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")

// TODO: для каждой op распарсить name:day, добавить day, если его еще нет;
// затем вывести habits в алфавитном порядке с отсортированными днями
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком