我已经实现了一个排序算法,用于自定义字符串的跑道和田赛事件的时间或距离数据。以下是格式:
'10:03.00 - 十分钟零三秒或者10英尺3英寸
排序的结果是对于田赛项目,最长的投掷或跳跃将成为第一个元素,而对于跑步项目,最快的时间将成为第一个元素。以下是我目前用于田赛项目的代码。我没有发布running_event_sort
,因为它与大于/小于交换的相同逻辑。虽然它可以工作,但似乎过于复杂,需要重构。我乐意听取建议。任何帮助都将是非常好的。
event_participants.sort!{ |a, b| Participant.field_event_sort(a, b) }
class Participant
def self.field_event_sort(a, b)
a_parts = a.time_distance.scan(/'([\d]*):([\d]*).([\d]*)/)
b_parts = b.time_distance.scan(/'([\d]*):([\d]*).([\d]*)/)
if(a_parts.empty? || b_parts.empty?)
0
elsif a_parts[0][0] == b_parts[0][0]
if a_parts[0][1] == b_parts[0][1]
if a_parts[0][2] > b_parts[0][2]
-1
elsif a_parts[0][2] < b_parts[0][2]
1
else
0
end
elsif a_parts[0][1] > b_parts[0][1]
-1
else
1
end
elsif a_parts[0][0] > b_parts[0][0]
-1
else
1
end
end
end