# Razred Prijatelji je iz resitve domace naloge "Facebook". Resitev pete # naloge dopisite kot novo metodo v tem razredu import collections class Prijatelji: def __init__(self): self.graf = collections.defaultdict(set) def dodaj(self, a, b): self.graf[a].add(b) self.graf[b].add(a) def pobrisi(self, a, b): self.graf[a].remove(b) self.graf[b].remove(a) def sta_prijatelja(self, a, b): return b in self.graf[a] def prijatelji(self, a): return self.graf[a] def skupni_prijatelji(self, a, b): return self.graf[a] & self.graf[b] def skupni_prijatelj(self, a, b): return len(self.skupni_prijatelji(a, b)) > 0 import unittest class Testi(unittest.TestCase): def test_vsak_enkrat(self): self.assertTrue(samo_enkrat("abcd")) self.assertTrue(samo_enkrat("ab")) self.assertTrue(samo_enkrat("2fjai409t!)$")) self.assertTrue(samo_enkrat("ab")) self.assertTrue(samo_enkrat("a")) self.assertTrue(samo_enkrat("")) self.assertFalse(samo_enkrat("aa")) self.assertFalse(samo_enkrat("aab")) self.assertFalse(samo_enkrat("baa")) self.assertFalse(samo_enkrat("aabb")) self.assertFalse(samo_enkrat("aabcde")) self.assertFalse(samo_enkrat("abcdeb")) def test_naj_pod(self): self.assertEqual(naj_pod([1, 2, 3, 4, 5], 11), [1, 2, 3, 4]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 1), [1]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 4), [4]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 8), [3, 4]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 9), [2, 3, 4]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 15), [1, 2, 3, 4, 5]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 20), [1, 2, 3, 4, 5]) self.assertEqual(naj_pod([1, 2, 3, 4, 5], 0), []) self.assertEqual(naj_pod([4, 3, 5, 6, 11, 4, 3, 6], 2), []) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 1), [1]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 2), [2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 3), [2, 1]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 4), [2, 1]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 5), [5]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 6), [1, 5]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 7), [1, 5]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 8), [2, 1, 5]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 9), [3, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 10), [3, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 11), [5, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 12), [1, 5, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 13), [11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 14), [2, 1, 5, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 15), [2, 1, 5, 6]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 16), [11, 2, 3]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 17), [6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 18), [6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 19), [6, 11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 20), [6, 11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 21), [6, 11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 22), [5, 6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 23), [1, 5, 6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 24), [5, 6, 11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 25), [2, 1, 5, 6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 26), [2, 1, 5, 6, 11]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 27), [2, 1, 5, 6, 11, 2]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 28), [1, 5, 6, 11, 2, 3]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 29), [1, 5, 6, 11, 2, 3]) self.assertEqual(naj_pod([2, 1, 5, 6, 11, 2, 3, 6], 30), [2, 1, 5, 6, 11, 2, 3]) def test_palindrom(self): self.assertTrue(palindrom("abcba")) self.assertTrue(palindrom("abacaba")) self.assertTrue(palindrom("abccba")) self.assertTrue(palindrom("dbd")) self.assertTrue(palindrom("xx")) self.assertTrue(palindrom("xxx")) self.assertTrue(palindrom("o")) self.assertTrue(palindrom("")) self.assertFalse(palindrom("abaa")) self.assertFalse(palindrom("ab")) self.assertFalse(palindrom("abca")) def test_facebook(self): mreza = Prijatelji() mreza.dodaj("Ana", "Berta") mreza.dodaj("Ana", "Cilka") mreza.dodaj("Ana", "Dani") mreza.dodaj("Berta", "Cilka") mreza.dodaj("Dani", "Eva") mreza.dodaj("Eva", "Francka") mreza.dodaj("Eva", "Greta") mreza.dodaj("Eva", "Helga") mreza.dodaj("Francka", "Greta") mreza.dodaj("Greta", "Helga") self.assertTrue(mreza.naj_podobnik("Cilka") in ["Ana", "Berta", "Dani"]) self.assertEqual(mreza.naj_podobnik("Francka"), "Helga") self.assertEqual(mreza.naj_podobnik("Eva"), "Greta") def test_slepa_mesta(self): self.assertSetEqual(slepa_polja({"a": {"b", "c"}}), {"b", "c"}) self.assertSetEqual(slepa_polja({"a": {"a", "b", "c"}}), {"b", "c"}) self.assertSetEqual(slepa_polja({"a": {"b", "c"}, "b": {"c"}}), {"c"}) self.assertSetEqual(slepa_polja({"a": {"b", "c"}, "c": {"b"}}), {"b"}) self.assertSetEqual( slepa_polja({"a": {"b", "c"}, "b": {"c"}, "c": {"a"}}), set()) self.assertSetEqual(slepa_polja({"a": {"t"}, "t": {"c"}, "c": {"t"}}), set()) self.assertSetEqual(slepa_polja({"a": {"a", "b", "c"}}), {"b", "c"}) self.assertSetEqual(slepa_polja({"a": {"b", "c"}, "b": {"a", "c", "e", "f"}, "c": {"d", "e"}, "e": {"a"}}), {"d", "f"}) self.assertSetEqual(slepa_polja({"a": {"b"}}), {"b"}) self.assertSetEqual(slepa_polja({"a": {"a"}}), set()) self.assertSetEqual(slepa_polja({}), set())