Skip to content

Instantly share code, notes, and snippets.

@shurane
Created January 30, 2016 03:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shurane/a4fee420aa89693af330 to your computer and use it in GitHub Desktop.
Save shurane/a4fee420aa89693af330 to your computer and use it in GitHub Desktop.
Ken Elevator Interview
events:
- floorReached, {floor=2}
- buttonPressedInside, {floor=1}
- buttonPressedOutside, {floor=3,
direction=UP|DOWN}
def moveUp()
def moveDown()
def stop()
def doorOpen()
def doorClose()
def currentFloor()
int floorGoal = []
int OPEN_TIME = 5
def buttonPressedOutsideHandler(event):
if event.floor > currentFloor():
doorClose()
floorGoal.append( event.floor )
floorGoal.sort()
moveUp()
elif event.floor == currentFloor():
doorOpen()
sleep(OPEN_TIME)
doorClose()
else:
doorClose()
floorGoal.append( event.floor )
floorGoal.sort()
moveDown()
def floorReachedHandler(event):
if not floorGoal:
return
if event.floor == floorGoal[0]:
stop()
doorOpen()
sleep(OPEN_TIME)
doorClose()
floorGoal.pop()
def buttonPressedInsideHandler(event):
doorClose()
if event.floor > currentFloor():
moveUp()
floorGoal.append( event.floor )
elif event.floor < currentFloor():
moveDown()
floorGoal.append( event.floor )
else:
doorOpen()
sleep(OPEN_TIME)
doorClose()
listen("floorReached",
floorReachedHandler)
listen("buttonPressedOutside",
buttonPressedOutsideHandler)
listen("buttonPressedInside",
buttonPressedInsideHandler)
# 20 minutes for part 1
# buttonPressedOutside(floor=3,direction="UP")
# buttonPressedOutside(floor=2,direction="DOWN")
# buttonPressedOutside(floor=5,direction="DOWN")
# floorReached(floor=2)
#41 minutes for part 2, but incomplete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment