Skip to content

Instantly share code, notes, and snippets.

@yasuharu519
Created March 28, 2011 12:14
Show Gist options
  • Save yasuharu519/890357 to your computer and use it in GitHub Desktop.
Save yasuharu519/890357 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# お題: 時間帯重複チェック
def checkIfSyntax(time1, time2):
"""
>>> checkIfSyntax((-2,3,1,1,), (1,1,1,1))
Traceback (most recent call last):
...
Exception: Syntax Error
>>> checkIfSyntax((1,1,1,1), (1,1,1,1))
"""
(time1StartHour, time1StartMin, time1EndHour, time1EndMin) = time1
(time2StartHour, time2StartMin, time2EndHour, time2EndMin) = time2
# 時間のチェック
if time1StartHour >= 24 or time2StartHour >= 24 or \
time1EndHour >= 24 or time2EndHour >= 24 \
or time1StartHour < 0 or time2StartHour < 0 \
or time1EndHour < 0 or time2EndHour < 0:
raise Exception("Syntax Error")
if time1StartMin >= 60 or time2StartMin >= 60 \
or time1EndMin >= 60 or time2EndMin >= 60 \
or time1StartMin < 0 or time2StartMin < 0 \
or time1EndMin < 0 or time2EndMin <0:
raise Exception("Syntax Error")
def timeDuplicationCheck(time1, time2):
"""
>>> timeDuplicationCheck( (1, 0, 5, 30), (9, 0, 23, 0) )
False
>>> timeDuplicationCheck( (1, 0, 2, 0), (2, 0, 3, 0) )
False
>>> timeDuplicationCheck( (1, 0, 2, 1), (1, 59, 3, 0) )
True
"""
checkIfSyntax(time1, time2)
(time1StartHour, time1StartMin, time1EndHour, time1EndMin) = time1
(time2StartHour, time2StartMin, time2EndHour, time2EndMin) = time2
time1StartMinutes = time1StartHour * 60 + time1StartMin
time1EndMinutes = time1EndHour * 60 + time1EndMin
time2StartMinutes = time2StartHour * 60 + time2StartMin
time2EndMinutes = time2EndHour * 60 + time2EndMin
# time2 の開始が time1 の範囲に入っているかチェック
if time1StartMinutes <= time2StartMinutes < time1EndMinutes:
return True
# time2 の終わりが time1 の範囲に入っているかチェック
if time1StartMinutes < time2EndMinutes <= time1EndMinutes:
return True
return False
def _test():
import doctest
timeDuplicationCheck((0,1,0,3),(0,1,0,4))
doctest.testmod()
if __name__ == '__main__':
_test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment