Skip to content

Instantly share code, notes, and snippets.

@NoFearJoe
Created June 6, 2021 16:43
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NoFearJoe/090fd6d54228bfb0d15a4bdcb316a6ae to your computer and use it in GitHub Desktop.
Save NoFearJoe/090fd6d54228bfb0d15a4bdcb316a6ae to your computer and use it in GitHub Desktop.
A task from the Vivid interview
import Foundation
/// Каждый коктейль содержит в порции определенное количество мл спирта
enum CocktailIngredient: Int {
case vodka = 40
case juice = 0
case redbull = 12
case beer = 10
/// Цена за каждый компонент (в рублях)
var price: Double {
switch self {
case .vodka: return 100
case .juice: return 200
case .redbull: return 250
case .beer: return 50
}
}
}
//
/// Возвращает коктейль, удовлетворяющий условиям:
/// - В каждом коктейле должна быть водка
/// - Максимальное количество алкоголя не должно быть превышено
/// - Стоимость коктейля должна быть как минимум 80% от максимального количества денег,
/// но не превышать это количество
///
/// - Parameters:
/// - money: Сколько денег в есть у клиента.
/// - maxAlco: Сколько максимально миллилитров спирта осилит клиент.
func makeCocktail(money: Double, maxAlco: Int) -> [CocktailIngredient] {
// TODO
}
// MARK: - Acceptence tests
let maxAlco = 200
let money = 700.0
let cocktail = makeCocktail(money: money, maxAlco: maxAlco)
let cocktailAlco = cocktail.reduce(0) { $0 + $1.rawValue }
let cocktailPrice = cocktail.reduce(0) { $0 + $1.price }
cocktail.contains(.vodka)
cocktailAlco <= maxAlco
cocktailPrice > money * 0.8
cocktailPrice <= money
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment