From 02cae0ff857aa3e944446d3b7803f4276eba333b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Dobrovoljc?= Date: Fri, 15 Dec 2023 08:42:59 +0100 Subject: [PATCH] 08_zmagozmagovalci --- .idea/dictionaries/gapi.xml | 3 + .idea/domace_naloge.iml | 2 +- .../inspectionProfiles/profiles_settings.xml | 1 + .idea/misc.xml | 5 +- 08_zmagozmagovalci/__init__.py | 0 08_zmagozmagovalci/naloga.py | 16 +++++ 08_zmagozmagovalci/naloga_test.py | 69 +++++++++++++++++++ 7 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 .idea/dictionaries/gapi.xml create mode 100644 08_zmagozmagovalci/__init__.py create mode 100644 08_zmagozmagovalci/naloga.py create mode 100644 08_zmagozmagovalci/naloga_test.py diff --git a/.idea/dictionaries/gapi.xml b/.idea/dictionaries/gapi.xml new file mode 100644 index 0000000..bb3ec91 --- /dev/null +++ b/.idea/dictionaries/gapi.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/domace_naloge.iml b/.idea/domace_naloge.iml index d0876a7..cd3a7f0 100644 --- a/.idea/domace_naloge.iml +++ b/.idea/domace_naloge.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml index 105ce2d..dd4c951 100644 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -1,5 +1,6 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 6b8be7e..ad1f51d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,9 @@ - + + + diff --git a/08_zmagozmagovalci/__init__.py b/08_zmagozmagovalci/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/08_zmagozmagovalci/naloga.py b/08_zmagozmagovalci/naloga.py new file mode 100644 index 0000000..a4836fd --- /dev/null +++ b/08_zmagozmagovalci/naloga.py @@ -0,0 +1,16 @@ +def hitrejsi(kolesar1, kolesar2, razmerja): + if dokazov(kolesar1, kolesar2, razmerja): + return kolesar1 + elif dokazov(kolesar2, kolesar1, razmerja): + return kolesar2 + return None + + +def dokazov(kolesar1, kolesar2, razmerja): + dokazi = 0 + for kolesar in razmerja[kolesar1]: + if kolesar == kolesar2: + dokazi += 1 + else: + dokazi += dokazov(kolesar, kolesar2, razmerja) + return dokazi diff --git a/08_zmagozmagovalci/naloga_test.py b/08_zmagozmagovalci/naloga_test.py new file mode 100644 index 0000000..d6fdd0d --- /dev/null +++ b/08_zmagozmagovalci/naloga_test.py @@ -0,0 +1,69 @@ +from .naloga import * + +from itertools import pairwise +import unittest + +razmerja = {'Ana': {'Vera', 'Cilka'}, + 'Berta': {'Greta', 'Klara', 'Iva', 'Cilka'}, + 'Cilka': {'Olga'}, + 'Črtomira': set(), + 'Dani': {'Liza', 'Ana', 'Fanči', 'Cilka', 'Micka', 'Greta'}, + 'Ema': set(), + 'Fanči': {'Liza', 'Poldka', 'Cilka'}, + 'Greta': set(), + 'Helga': set(), + 'Iva': {'Ema', 'Helga'}, + 'Jana': {'Liza', 'Dani', 'Berta', 'Micka', 'Tina', 'Greta'}, + 'Klara': {'Helga', 'Nina'}, + 'Liza': {'Vera', 'Olga', 'Rezka'}, + 'Micka': {'Liza', 'Saša', 'Urša'}, + 'Nina': {'Olga', 'Poldka'}, + 'Olga': {'Poldka'}, + 'Poldka': set(), + 'Rezka': {'Saša'}, + 'Saša': set(), + 'Špela': {'Žana'}, + 'Tina': set(), + 'Urša': {'Vera'}, + 'Vera': set(), + 'Zoja': {'Žana', 'Tina'}, + 'Žana': set()} + +razmerja2 = {x: {y} for x, y in pairwise(sorted(razmerja))} +razmerja2.update({"Žana": set(), "Trelawney": set()}) + + +class Test(unittest.TestCase): + def test_01_obvezna(self): + self.assertEqual("Jana", hitrejsi("Jana", "Berta", razmerja)) + self.assertEqual("Jana", hitrejsi("Berta", "Jana", razmerja)) + self.assertEqual("Berta", hitrejsi("Berta", "Poldka", razmerja)) + self.assertEqual("Berta", hitrejsi("Poldka", "Berta", razmerja)) + self.assertEqual("Berta", hitrejsi("Poldka", "Berta", razmerja)) + self.assertIsNone(hitrejsi("Saša", "Berta", razmerja)) + self.assertIsNone(hitrejsi("Berta", "Saša", razmerja)) + self.assertIsNone(hitrejsi("Špela", "Tina", razmerja)) + self.assertIsNone(hitrejsi("Jana", "Črtomira", razmerja)) + self.assertIsNone(hitrejsi("Črtomira", "Jana", razmerja)) + + self.assertEqual("Ana", hitrejsi("Ana", "Žana", razmerja2)) + self.assertEqual("Ana", hitrejsi("Žana", "Ana", razmerja2)) + self.assertIsNone(hitrejsi("Ana", "Trelawney", razmerja2)) + self.assertIsNone(hitrejsi("Ana", "Trelawney", razmerja2)) + + def test_02_dokazov(self): + self.assertEqual(1, dokazov("Jana", "Berta", razmerja)) + self.assertEqual(0, dokazov("Berta", "Jana", razmerja)) + self.assertEqual(4, dokazov("Jana", "Cilka", razmerja)) + self.assertEqual(1, dokazov("Jana", "Nina", razmerja)) + self.assertEqual(5, dokazov("Jana", "Liza", razmerja)) + self.assertEqual(10, dokazov("Jana", "Olga", razmerja)) + self.assertEqual(12, dokazov("Jana", "Poldka", razmerja)) + self.assertEqual(1, dokazov("Špela", "Žana", razmerja)) + + self.assertEqual(1, dokazov("Ana", "Žana", razmerja2)) + self.assertEqual(0, dokazov("Žana", "Ana", razmerja2)) + + +if __name__ == "__main__": + unittest.main()