Я недавно провалил экзамен, и одной из основных задач была задача, в которой мне приходилось использовать «для понимания» или, вернее, ТОЛЬКО для понимания.
Данные: List[(day: Int, month: String, reason: String, km: int)]
val data = List(
(25, "February", "1", 25),
(17, "April", "1", 63),
(19, "March", "3", 45),
(17, "October", "4", 12),
(25, "December", "1", 45),
(9, "January", "2", 56),
(17, "April", "1", 54),
(21, "September", "3", 16),
(3, "May", "2", 59),
(20, "January", "4", 46),
(28, "June", "5", 28),
(19, "March", "3", 34),
(29, "August", "1", 42),
(17, "April", "1", 77)
)
def moreThanTwoViolations(maxKm: Int, in: List[(Int, String, String, Int)]) : List[(Int, String)] = ???
Задание:
Найти все дни, в которых минимум 2 раза minKm > km
по той же или другой причине.
Пример:
, если maxKm = 30
, то List[(19, "March", "2", 45), (19, "March", "3", 34)]
имеют отношение, потому что для 2 reason
s выполнить _._4 > 30
, поэтому я бы вернул List[(19, "March")]
.
Я не понимаю, как решить эту проблему без использования groupBy
, потому что это означает, что я Мне нужно было «запомнить» день, чтобы привести мое текущее состояние в состояние, на которое я уже смотрел. И я не могу сохранить состояние с помощью for-comp понимания (
), часть 2 этого состоит в удалении сахара из части 1, поэтому вместо for-comps используйте только map
, flatmap
и filter
.
Извините, если это похоже на вопрос нуба, но без группировки это кажется смешным, и я просто хочу знать, что я здесь упустил.