Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Second solution in Creative category for The Ship Teams by PythonLearner
from itertools import groupby
def two_teams(sailors):
sailors = sailors.copy()
young_age = 20
old_age = 40
mock_yong = "!!!mock_yong!!!"
mock_middle = "!!!mock_middle!!!"
mock_old = "!!!mock_old!!!"
mock_sailors = {mock_yong: young_age-1, mock_middle: young_age+(old_age-young_age)/2, mock_old: old_age+1}
sailors.update(mock_sailors)
sorted_by_age_sailors = sorted(sailors, key=sailors.get)
def is_middle_age(sailor):
return young_age <= sailors[sailor] <= old_age
youngs, middles, olds = [list(group) for key, group in groupby(sorted_by_age_sailors, key=is_middle_age)]
youngs.remove(mock_yong)
middles.remove(mock_middle)
olds.remove(mock_old)
return list(map(sorted, (youngs+olds, middles)))
if __name__ == '__main__':
print("Example:")
print(two_teams({'Smith': 34, 'Wesson': 22, 'Coleman': 45, 'Abrahams': 19}))
#These "asserts" using only for self-checking and not necessary for auto-testing
assert two_teams({
'Smith': 34,
'Wesson': 22,
'Coleman': 45,
'Abrahams': 19}) == [
['Abrahams', 'Coleman'],
['Smith', 'Wesson']
]
assert two_teams({
'Fernandes': 18,
'Johnson': 22,
'Kale': 41,
'McCortney': 54}) == [
['Fernandes', 'Kale', 'McCortney'],
['Johnson']
]
print("Coding complete? Click 'Check' to earn cool rewards!")
Sept. 1, 2018
Comments: