2012-02-24 2 views
0

최근에 제가 매우 간단한 문제라고 생각되는 것에 집착했습니다.주중 평일이 평일인지 확인하십시오.

기본적으로 평일은 월요일부터 일요일을 나타내는 숫자 (1-7)로 표시됩니다.

나는이 프로토 타입이있는 기능이 필요합니다

function weekday_between(weekday, start_weekday, end_weekday) { 
    //if the weekday is between start and end then return true, otherwise return false 
    ... 
} 

난 당신이 단지의 경우 중첩에 의존 수 있다고 생각하지 않기 때문에 START_WEEKDAY에서, END_WEEKDAY보다 클 때 나는 데 가장 큰 문제는 성명서 (?). 예를 들어

:

weekday_between(2, 1, 3) //return true 
weekday_between(1, 7, 2) //return true, the hard part 
weekday_between(2, 7, 1) //return false 
weekday_between(6, 7, 1) //return false 

이 프로젝트는 PHP에 있지만 의사 잘, 또는 올바른 방향으로도 단지 지점입니다.

+4

요일은 항상 다른 두 평일 사이에 있습니다 ... : o) – deceze

+1

이 숙제입니까? –

+0

@ 마이클 아니 아니야 –

답변

4
function weekday_between(weekday, start_weekday, end_weekday) { 
    if (end_weekday < start_weekday) 
     return (weekday > start_weekday) OR (weekday < end_weekday); 
    else 
     return (weekday > start_weekday) AND (weekday < end_weekday); 
} 
+0

상당히 간단한 문제입니다. –

+0

고마워요. 그 당시에는 그랬지만 ... –

1

여기에 $ b = 값 사이, $ s = 시작 값 및 $ e = 끝 값.

function weekday_between($s, $b, $e){ 
    if($s>$e) $s -=7; 
    return (($b>$s)&&($b<$e)); 
} 

네 함수 인수의 순서를 변경했습니다 ... 값 사이에 ... 사이에있는 것이 더 합리적이지 않습니다!

+0

OP :'weekday_between (1, 7, 2) // true, hard part를 반환하십시오. ' – deceze

+0

thx @deceze - 시작일을 debase로 수정했습니다. 더 커. 나는 이것이 모든 가장자리 사건을 포함한다고 생각한다. 그렇지 않다면, 나는 나의 대답을 연옥에 보낼 것이다! –

관련 문제