Перейти к содержанию

🗒 Задача

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

Предположим, что сегодня 5 день тренировок. В первый день выполнялись упражнения для рук и пресса. Выведи сообщение в виде нескольких красивых ровных строк.

Вывод должен быть таким:

Упражнения для рук:       true

Упражнения для ног:       false

Упражнения для спины:  false

Упражнения для пресса: true

  • все сообщение должно печататься в одном println();

  • при изменении значения переменной дня тренировки на 1 день вперед, вывод должен меняться.

❌ Ошибки

  • делают две группы под каждые группы мышц и раздельно для них вычисляют четность — рекомендовать делать единый флаг

  • некорректный нейминг Boolean флага

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

✏️ Комментарии

Нужно немного изменить подход) Посмотри в сторону определения четности дня. Это значение можно уже поместить в отдельный флаг и затем применить к каждой части тела напрямую или с отрицанием (инвертируя значение через символ `!`)
Все окей! На будущее — более распространенная практика находить четность числа и сравнивать именно с 0.
Верный ход, но давай оптимизируем. Предлагаю находить четность (и только ее) числа и сохранять в отдельный Boolean "флаг", например isEven. И применять его уже при выводе “как есть” или с отрицанием (инвертируя значение).

Флаг - можно сказать сленговое выражение "переключателя".  для отметки или указания определенного состояния. по аналогии с флагом, который поднимается или опускается для обозначения определенной ситуации, переменная может принимать одно из двух состояний.
Правильный ход мыслей, но лучше кое что оптимизировать)
Не соблюдается принцип [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself).

Лучше вынести нахождение четности (только четности) числа в отдельный флаг и применять его уже при выводе напрямую или с отрицанием (инвертируя).
Верная логика, но давай чтобы избежать условия и дублирования кода оптимизируем. 
Нужно объявить для каждой части тела переменные (это будет актуально в том числе и для поддержки и расширения функционала). Нахождение четности вынесем в отдельный флаг и будем применять этот флаг непосредственно к частям тела
Так как частей тела может быть больше, я бы не ограничивался ими в переменных.
Достаточно одной переменной для нахождения четности числа и далее ее применять. типа того isEven / !isEven
Boolean переменные принято называть isSomeSituation (не обязательно, но так код легче читается). Давай назовем isEvenDay
Однобуквенные переменные - зло, они уместны только в циклах в качестве интерируемой переменной, в остальном - теряется контекст в месте использования переменной. Давай дадим понятное название

🧾 Решение

fun main() {
    val numberDay = 5
    val isEven = (numberDay % 2 == 0)

    println("""
        "Упражнения для рук:    ${!isEven}"
        "Упражнения для ног:    $isEven"
        "Упражнения для спины:  $isEven"
        "Упражнения для пресса:  ${!isEven}"
    """.trimIndent())
}