-
Notifications
You must be signed in to change notification settings - Fork 68
/
NewMember.rb
62 lines (47 loc) · 1.47 KB
/
NewMember.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
=begin
The Western Suburbs Croquet Club has two categories of membership, Senior and
Open. They would like your help with an application form that will tell
prospective members which category they will be placed.
To be a senior, a member must be at least 55 years old and have a handicap
greater than 7. In this croquet club, handicaps range from -2 to +26; the better
the player the lower the handicap.
Input
Input will consist of a list of lists containing two items each. Each list
contains information for a single potential member. Information consists of an
integer for the person's age and an integer for the person's handicap.
Example Input
[[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]
Output
Output will consist of a list of string values (in Haskell: Open or Senior)
stating whether the respective member is to be placed in the senior or open
category.
Example Output
["Open", "Open", "Senior", "Open", "Open", "Senior"]
=end
# My Solution
def openOrSenior(data)
result = []
data.map {|x| x[0] > 54 && x[1] > 7 ? result << "Senior" : result << "Open"}
result
end
# Better Solution
def openOrSenior(data)
data.map { |age, handicap| age >= 55 && handicap > 7 ? "Senior" : "Open" }
end
# Another Solution
def openOrSenior(data)
data.map { |i| Member.new(i).category }
end
class Member
def initialize(data)
@age = data.first
@handicap = data.last
end
def category
if @age >= 55 && @handicap > 7
'Senior'
else
'Open'
end
end
end