# Obvezni del # Dodatni del ## Tole funkcijo uporabljaj po želji (v dodatnem delu naloge; v prvem z njo nimaš kaj početi) from collections import defaultdict def vsebovanost(krogi): vsebuje = defaultdict(list) vsebovan_v = defaultdict(list) for krog0 in krogi: for krog1 in krogi: x0, y0, r0 = krog0 x1, y1, r1 = krog1 if r0 > r1 and (x1 - x0) ** 2 + (y1 - y0) ** 2 < r0 ** 2: vsebuje[krog0].append(krog1) vsebovan_v[krog1].append(krog0) return vsebuje, vsebovan_v def ptici(krogi): vsebuje, vsebovan_v = vsebovanost(krogi) return ... # Zamenjaj tri pike z ustreznim izrazom def letala(krogi): vsebuje, vsebovan_v = vsebovanost(krogi) return ... def marsovci(krogi): vsebuje, vsebovani = vsebovanost(krogi) return ... krogi = [ (164.4, 136.8, 50.8), (59.2, 182.8, 50.8), (282.8, 71.5, 45.6), (391, 229.4, 58.4), (259.9, 186, 47.6), (428, 89, 63.2), (88.6, 44.3, 37.5), (371.6, 233.6, 10.6), (408.7, 210.5, 8.9), (398.1, 95.5, 13), (449.5, 99.6, 13.6), (455.4, 66.5, 12.4), (139.6, 138, 10.6), (185, 138, 10.6), (69.8, 46.5, 10.6), (267.4, 51.7, 17.2), (225.8, 187.3, 7.5), (242.8, 187.3, 7.5), (259.8, 187.3, 7.5), (276.7, 187.3, 7.5), (293.7, 187.3, 7.5), (267.4, 51.7, 10.6), (99.6, 43.1, 17.2), (99.6, 43.1, 10.6), (150.3, 245.5, 50.8), (144.3, 243.6, 38.8), (127.3, 245.5, 7.5), (161.3, 245.5, 7.5)] import time import unittest from math import pi class TestObvezna(unittest.TestCase): def test_01_povrsina(self): self.assertAlmostEqual(pi * (1 + 4), povrsina([(0, 0, 1), (0, 0, 2)])) self.assertAlmostEqual(77440.4159906211, povrsina(krogi)) def test_02_vecjih_od(self): self.assertEqual(9, vecjih_od(krogi, 30)) self.assertEqual(len(krogi), vecjih_od(krogi, -1)) self.assertEqual(0, vecjih_od(krogi, 1000)) def test_03_sredisc_med(self): self.assertEqual({(164.4, 136.8, 50.8), (185, 138, 10.6), (139.6, 138, 10.6)}, sredisca_med(krogi, 130, 130, 200, 140)) self.assertEqual(set(krogi), sredisca_med(krogi, -1000, -1000, 1000, 1000)) self.assertEqual(set(), sredisca_med(krogi, -1000, -1000, -500, -500)) def test_04_naj_polmer(self): self.assertAlmostEqual(63.2, naj_polmer(krogi)) self.assertAlmostEqual(50.8, naj_polmer(krogi[:3])) class TestDodatna(unittest.TestCase): def test_ptici(self): self.assertEqual({(164.4, 136.8), (391, 229.4)}, ptici(krogi)) self.assertEqual(set(), ptici([(x, x, 0.5) for x in range(10)])) self.assertEqual(set(), ptici([(0, 0, x) for x in range(10)])) def test_letala(self): self.assertEqual({(259.9, 186), (428, 89)}, letala(krogi)) self.assertEqual(set(), letala([(x, x, 0.5) for x in range(10)])) self.assertEqual(set(), letala([(0, 0, x) for x in range(10)])) self.assertEqual({(0, 0), (100000, 0)}, letala([(0, 0, 10000), (100000, 0, 1), (100000, 0, 0.5), (200000, 0, 1)] + [(x, 0, 0.5) for x in range(10)])) def test_marsovci(self): self.assertEqual({(59.2, 182.8), (88.6, 44.3), (150.3, 245.5), (282.8, 71.5)}, marsovci(krogi)) crta = [(x, x, 0.5) for x in range(10)] self.assertEqual({(x, y) for x, y, _ in crta}, marsovci(crta)) self.assertEqual({(0, 0)}, marsovci([(0, 0, x) for x in range(10)])) if __name__ == "__main__": unittest.main()