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

🗒 Задача

В мобильной стратегии есть бафф (временное усиление какого-либо юнита или процесса), который дает +20% к добытым материалам. Было добыто 7 кристаллической и 11 железной руды без баффа – заранее известные данные, объявить и проинициализировать.

Напиши программу, которая будет учитывать действие баффа и выводить в консоль количество “бонусных” (то есть тех материалов, которые даются “сверху” баффом). По одной строке на материал с его названием. Если получается нецелое число, то дробная часть должна отбрасываться.

❌ Ошибки

  • не инициализируют проценты целым числом 20

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

Для возможности гибкой работы с кодом, следует инициализировать согласно ТЗ проценты целым числом 20. И уже потом производить вычисление процентов. Таким образом, если нужен будет другой процент, достаточно будет поменять значение в одном месте.
Значения в этом коде являются [магическими числами](https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)#%D0%9F%D0%BB%D0%BE%D1%85%D0%B0%D1%8F_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F). Не лучшая практика) 
В ТЗ фигурирует значение 20 (процентов). Его также надо проинициализировать и только потом производить арифметические операции. Это позволит сделать более гибким и легко изменяемым, если понадобится изменить характеристики.
Согласно ТЗ вывести значения “тех материалов, которые даются “сверху” баффом”)
Проблемы с форматированием.
В Idea есть автоформатирование кода: Находясь в файле Ctrl+Alt+L (для windows) или ⌥+⌘+L (для mac)
“Голые” числа в коде называются [магические числа](https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)#%D0%9F%D0%BB%D0%BE%D1%85%D0%B0%D1%8F_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F). Не является хорошей практикой. Предлагаю вынести в переменную, чтобы можно было легко в одном месте поменять характеристики бафа

🧾 Решение

fun main() {
    val crystalOre = 7
    val ironOre = 11
    val bonusPercent = 20.0
    val allPercent = 100

    val bonusCoefficient = (bonusPercent / allPercent)
    val crystalOreBonus = (crystalOre * bonusCoefficient).toInt()
    val ironOreBonus = (ironOre * bonusCoefficient).toInt()

    println("Добыто бонусной кристаллической руды: $crystalOreBonus")
    println("Добыто бонусной железной руды: $ironOreBonus")
}