How can you write a C program or an algorithim or a "Mr. Spock" kinda logical explanation for that matter, to...
Simulate 2 lifts on a 3+1 (underground) storey building.
I got that idea, while having a discussion with my wife and B-in-Law on my apartment lift. It's pretty interesting on how the logic works.
Any takers??
*Phew* Was busy with a lot of work.
THis is not very tricky but not easy either.
So, how do you implement it?
Taking a Spock-kinda approach.. I'lll
go with only with one lift.
1. the data-str be a doubly linked list
with a header and a trailer indicating the terrace and the basement resp.
2. a variable to trace the status of the
lift -
0-stopped
1-moving up
-1-moving down
3. a pointer to trace the present position
of the lift.
Any button press is considered as a request and is added as a node in the doubly linked list to maintain the sequence of building.
Consider a 10 storeyed building-
If U have []=3=7=9=[] and there s a request
for 5th floor it is added as -
[]=3=5=7=9=[]
Now, if the pointer is at 7 and it is coming down towards 3 and a request for 5 comes to go down.( You can compare the direction wrt the 0-1--1 variable), then it has to stop at 5 as well and as it serves the request for 5th node and the guy has to go to 1st floor, it gets added as a new request and the old request viz node-5 gets deleted to form-[]=1=3=7=9=[]
This forms the central idea and any further validation can be done to facilitate to make it a better escalator.
We can try to implement the same with Qs as well but gets a little complicated.
===. The Lift may be considered stopped if there r no nodes in betn the header and the trailer-
[]<=>[]
Quite right there, but slow!! Performance is the criteria here, don't forget this is a real-time solution and is usually different from apps.
Settings bits in a word or maybe a double word and using MSB for direction would do the same job, but in better way, though the general idea remains the same for skeleton.
Quick Links:
Do
you have a UNIX Question?
Unix Home: Unix
System Administration Hints and Tips