Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Building Visibility by eugene100372
def checkio(buildings):
d={}
for n,b in enumerate(buildings):
for i in range(b[0],b[2]):
d[i]=d.get(i,[])+[[n,b[1],b[4]]]
s=set()
for L in d.values():
mh=0
for ceil in sorted(L,key=lambda x:x[1]):
if ceil[2]>mh:
s.add(ceil[0])
mh=ceil[2]
return len(s)
if __name__ == '__main__':
assert checkio([
[1, 1, 4, 5, 3.5],
[2, 6, 4, 8, 5],
[5, 1, 9, 3, 6],
[5, 5, 6, 6, 8],
[7, 4, 10, 6, 4],
[5, 7, 10, 8, 3]
]) == 5, "First"
assert checkio([
[1, 1, 11, 2, 2],
[2, 3, 10, 4, 1],
[3, 5, 9, 6, 3],
[4, 7, 8, 8, 2]
]) == 2, "Second"
assert checkio([
[1, 1, 3, 3, 6],
[5, 1, 7, 3, 6],
[9, 1, 11, 3, 6],
[1, 4, 3, 6, 6],
[5, 4, 7, 6, 6],
[9, 4, 11, 6, 6],
[1, 7, 11, 8, 3.25]
]) == 4, "Third"
assert checkio([
[0, 0, 1, 1, 10]
]) == 1, "Alone"
assert checkio([
[2, 2, 3, 3, 4],
[2, 5, 3, 6, 4]
]) == 1, "Shadow"
Feb. 3, 2020
Comments: