Thy operate on a simple concept of trisecting a cam lobe so that, as the device is retracted, the cam unfolds and permits an amazing range for a unit of its size.
Another argument again the service locator pattern is this: If you ask the locator for a service which has dependencies you have to resolve those dependencies yourself. So you need to know about the specific implemntation of this service interface which defeats the purpse. If you work around that, you end up with something that is pretty close to a DI container.
The problem es essentially to map from an indiscrete space to a discrete one. The solution that comes into my mind is a simple sweep-line algorithm:
1. Take all the start x-coordinates of a buildings (=start events).
2. Take all the end x-coodinates of the buildings (=end events).
3. Sort all the events the by the value of the coordinate.
4. Now walk over all the events and keep count of how many there currently are (or in this case: how high the building is) by adding one for a start event and substracting one for a end event.
Meta note: this is what journalism can look like today. Made for the web first, not for the paper. Visualizations that are actually insightful - and most importantly a well researched story.
The title is slightly misleading - In fact the compilers have been available before as part of the .NET Framework (or Windows SDK) and are most likely sitting on your windows machine (try c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe).