定向越野赛事成绩是否合格算法
定向越野赛事成绩合格条件为:
按顺序打卡号 :66、27、29、33、38、43、33、76、99
假设其中66号点位为起点,99号点位为终点,中间其他点位为打卡点位
起点终点为必打点位,且必须为第一个和最后一个打卡
其他点位必须按顺序同时存在,但不必须相邻
var answer = [66,27,29,33,38,43,33,76,99]
var lijiankun = [66,27,29,33,37,38,43,33,76,99] //李建坤多打了一个点,成绩有效
var liangwanliang = [66,27,29,33,38,33,43,76,99] //梁万良顺序打错了,成绩无效
var huxiangzhan = [87,27,29,33,38,33,43,76,99] //胡向詹没打起点,成绩无效
var chenge = [66,27,29,33,33,43,76,99] //陈戈少打了点,成绩无效
console.log(validation(answer,lijiankun))
console.log(validation(answer,liangwanliang))
console.log(validation(answer,huxiangzhan))
console.log(validation(answer,chenge))
function validation(answer,athlete){
//校验起终点
if(athlete[0] != answer[0] || athlete[athlete.length - 1] != answer[answer.length - 1]){
return false;
}
//校验打卡个数
if(athlete.length < answer.lengh){
return false;
}
//打卡顺序校验
var athletePointer = 1;
outer: for(var answerIndex = 1;answerIndex<answer.length -2;answerIndex++){
inner: for(var athleteIndex = athletePointer;athleteIndex<athlete.length -2;athleteIndex++){
if(answer[answerIndex] == athlete[athleteIndex]){
athletePointer = athleteIndex + 1;
continue outer;
}
}
return false;
}
return true;
}

本文含有隐藏内容,请 开通VIP 后查看