Annettuna on lista, jossa on lukuvälejä. Tehtäväsi on selvittää, moniko lukuväli on toisen lukuvälin sisällä.
Lukuväli muodostuu kokonaisluvuista . Esimerkiksi lukuväli muodostuu luvuista . Lukuväli on lukuvälin sisällä, jos ja . Esimerkiksi lukuvälit , ja ovat lukuvälin sisällä.
Esimerkiksi listassa haluttu vastaus on , koska lukuvälit ja ovat toisen lukuvälin sisällä. Lukuväli on lukuvälin sisällä, ja lukuväli on lukuvälin sisällä.
Toteuta tiedostoon intervals.py
funktio count_nested
, jolle annetaan lukuvälit listana. Funktion tulee palauttaa niiden lukuvälien määrä, jotka ovat toisen lukuvälin sisällä. Voit olettaa, että listassa ei ole kahta samaa lukuväliä.
Sinun tulee toteuttaa funktio niin, että se käsittelee tehokkaasti myös suuren määrän lukuvälejä. Funktion tulee antaa vastaus välittömästi myös tehtäväpohjan kahdessa viimeisessä testissä.
import random def count_nested(intervals): # TODO if __name__ == "__main__": print(count_nested([])) # 0 print(count_nested([(1, 2)])) # 0 print(count_nested([(1, 2), (3, 4)])) # 0 print(count_nested([(1, 3), (2, 4)])) # 0 print(count_nested([(1, 4), (2, 3)])) # 1 print(count_nested([(1, 4), (1, 3)])) # 1 print(count_nested([(1, 4), (2, 4)])) # 1 print(count_nested([(1, 1), (1, 2), (1, 3)])) # 2 print(count_nested([(1, 6), (2, 5), (3, 4)])) # 2 print(count_nested([(1, 4), (2, 5), (3, 6)])) # 0 intervals = [(x+1, x+3) for x in range(10**5)] random.shuffle(intervals) print(count_nested(intervals)) # 0 intervals = [(x+1, 2*10**5-x) for x in range(10**5)] random.shuffle(intervals) print(count_nested(intervals)) # 99999