exercism/go/allergies/allergies.go
2016-08-13 18:20:14 -05:00

45 lines
813 B
Go

package allergies
// Allergies takes a score and returns all of the
// things that the score is allergic to.
func Allergies(score int) []string {
var ret []string
for _, v := range getAllAllergens() {
if AllergicTo(score, v) {
ret = append(ret, v)
}
}
return ret
}
// AllergicTo takes a score and an allergen and returns if
// That score is allergic to that thing.
func AllergicTo(score int, tst string) bool {
return score&getScoreForAllergen(tst) == getScoreForAllergen(tst)
}
func getAllAllergens() []string {
return []string{
"eggs",
"peanuts",
"shellfish",
"strawberries",
"tomatoes",
"chocolate",
"pollen",
"cats",
}
}
func getScoreForAllergen(tst string) int {
ret := 1
for _, v := range getAllAllergens() {
if tst == v {
return ret
}
ret *= 2
}
return -1
}