DEV Community

Discussion on: Daily Challenge #223 - Responsible Drinking

Collapse
 
kesprit profile image
kesprit • Edited

My swift solution :

func hydrate(_ input: String) -> String {
    let number = input.split(separator: .init(" "))
        .map { $0.filter { c in c.isNumber } }
        .compactMap { Int($0) }
        .reduce(into: 0) { $0 += $1 }
    return "\(number) glass\(number > 1 ? "es": "") of water"
}

hydrate("1 beer") // 1 glass of water
hydrate("2 glasses of wine and 1 shot") // 3 glasses of water
hydrate("1 shot, 5 beers, 2 shots, 1 glass of wine, 1 beer") // 10 glasses of water