# Building Visibility

Elementary+
English ES

For our future Robotropolis we need to help the city planners calculate the way light reaches our fair city so as to limit the Urban Canyon effect. To do this, you will need to define the visibility of buildings from the southern edge of the base. You have been given a map of the buildings in the complex as an aide for your planning.

The map is an orthogonal projection of each of the buildings onto a horizontal plane. It’s oriented on a rectangular coordinate system so that the positive x-axis points east and the positive y-axis points north. No two buildings in the map overlap or touch. Each of the buildings have perfectly rectangular sides which are aligned from north to south and east to west. The map is a list of buildings with each building presented as a list with coordinates describing the south-west corner, and north-east corner along with the height - [Xsw, Ysw, Xne, Yne, height]. We need to determinate how many of the buildings are visible from the area just south of the base (excluding the angle of vision, just using projection.) See the illustration below.

Input: Building coordinates and heights as a list of lists. The coordinates are integers. The heights are integers or floats.

Output: The quantity of visible buildings as an integer.

Example:

How it is used: This concept is useful for image recognition systems and graphical systems. When rendering of 3D model you should determine the visibility of the surfaces. It can also be applied in architecture and city planning, allowing you to plan out which sides of a building will receive sunlight, or if a building will block natural light in another building.

Precondition:
0 < len(buildings) < 10
all(all(0 ≤ x < 12 for x in row[:4]) for row in buildings)
all(0 < row[4] ≤ 20 for row in buildings)

45
Settings
Code:
Other:
Invalid hot key. Each hot key should be unique and valid
Hot keys:
•  to Run Code: to Check Solution: to Stop:
CheckiO Extensions

CheckiO Extensions allow you to use local files to solve missions. More info in a blog post.

In order to install CheckiO client you'll need installed Python (version at least 3.8)

Install CheckiO Client first:

`pip3 install checkio_client`

`checkio --domain=py config --key=`

Sync solutions into your local folder

`checkio sync`

(in beta testing) Launch local server so your browser can use it and sync solution between local file end extension on the fly. (doesn't work for safari)

`checkio serv -d`

Alternatevly, you can install Chrome extension or FF addon

`checkio install-plugin`
`checkio install-plugin --ff`
`checkio install-plugin --chromium`

Read more here about other functionality that the checkio client provides. Feel free to submit an issue in case of any difficulties.

Pair Programming (Beta-version)

Welcome to Pair Programming! Engage in real-time collaboration on coding projects by starting a session and sharing the provided unique URL with friends or colleagues. This feature is perfect for joint project development, debugging, or learning new skills together. Simply click 'Start Session' to begin your collaborative coding journey!

Waiting for Pair Programming to start...

You are trying to join a pair programming session that has not started yet.

Please wait for the session creator to join.

Waiting for Pair Programming to reconnect...

It looks like the creator of the pair programming session closed the editor window.

It might happen accidentally, so that you can wait for reconnection.