Swift · 31 строк
Класс готовит строки для экрана выписки: название, сумму со знаком и группы операций по дням. Списания приходят с отрицательной суммой, у переводов между своими счетами merchant == nil. Отметьте строки с ошибками.
В работе: Лента операций в мобильном банке — самый частый экран после главного.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: на задачах Альфа-Банка: выписка в мобильном приложении. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
struct Operation {let id: Stringlet amount: Doublelet date: Datelet merchant: String?}final class StatementFormatter {func title(for op: Operation) -> String {return op.merchant!}func amountText(for op: Operation) -> String {let sign = op.amount > 0 ? "+" : "−"return "\(sign)\(op.amount) ₽"}func dateText(for op: Operation) -> String {let formatter = DateFormatter()formatter.dateFormat = "dd MMMM YYYY"return formatter.string(from: op.date)}func groupByDay(_ ops: [Operation]) -> [String: [Operation]] {var groups: [String: [Operation]] = [:]for op in ops {groups[dateText(for: op), default: []].append(op)}return groups}}