From 3a09b99dfa7e38b3ae998a7bbac683040c52e182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Dobrovoljc?= Date: Fri, 27 Oct 2023 12:49:52 +0200 Subject: [PATCH] 03_zemljevid_ovir --- .vscode/settings.json | 5 + 01_kolicina_goriva/naloga.py | 13 ++ 02_sikaniranje/naloga.py | 37 ++++++ .../__pycache__/naloga.cpython-311.pyc | Bin 0 -> 2873 bytes .../naloga_test.cpython-311-pytest-7.4.2.pyc | Bin 0 -> 7691 bytes 03_zemljevid_ovir/naloga.py | 82 ++++++++++++ 03_zemljevid_ovir/naloga_test.py | 125 ++++++++++++++++++ 7 files changed, 262 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 01_kolicina_goriva/naloga.py create mode 100644 02_sikaniranje/naloga.py create mode 100644 03_zemljevid_ovir/__pycache__/naloga.cpython-311.pyc create mode 100644 03_zemljevid_ovir/__pycache__/naloga_test.cpython-311-pytest-7.4.2.pyc create mode 100644 03_zemljevid_ovir/naloga.py create mode 100644 03_zemljevid_ovir/naloga_test.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3dd8a3e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python.testing.unittestArgs": ["-v", "-s", ".", "-p", "*_test.py"], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} diff --git a/01_kolicina_goriva/naloga.py b/01_kolicina_goriva/naloga.py new file mode 100644 index 0000000..c6b5783 --- /dev/null +++ b/01_kolicina_goriva/naloga.py @@ -0,0 +1,13 @@ +weight = int(input("Vnesi težo tovora: ")) +fuel_weight = 0 +actual_fuel_weight = 0 + +while weight > 0: + weight = weight // 3 - 2 + fuel_weight += 1 + if weight <= 0: + continue + actual_fuel_weight += weight + +print("Teža goriva:", fuel_weight) +print("Dejanska teža goriva:", actual_fuel_weight) diff --git a/02_sikaniranje/naloga.py b/02_sikaniranje/naloga.py new file mode 100644 index 0000000..5e35acb --- /dev/null +++ b/02_sikaniranje/naloga.py @@ -0,0 +1,37 @@ +ovire = [(1, 3, 6), (2, 4, 3), (4, 6, 7), (3, 4, 9), (6, 9, 5), (9, 10, 2), (9, 10, 8)] +x = 6 + +min_y = None +for x1, x2, y in ovire: + if x >= x1 and x <= x2 and (min_y == None or min_y > y): + min_y = y + +print(min_y) + +# Dodatna naloga + +ovire = [(1, 3, 6), (2, 4, 3), (4, 6, 7), (3, 4, 9), (6, 9, 5), (9, 10, 2), (9, 10, 8)] + +sirina = 0 +for x1, x2, y in ovire: + if x2 > sirina: + sirina = x2 + +max_x = 0 +max_y = 0 + +for x in range(1, sirina+1): + min_y = None + for x1, x2, y in ovire: + if x >= x1 and x <= x2 and (min_y == None or min_y > y): + min_y = y + + if min_y == None: + print(x, "Zmaga!") + break + + if max_y < min_y: + max_y = min_y + max_x = x +else: + print(max_x, max_y) \ No newline at end of file diff --git a/03_zemljevid_ovir/__pycache__/naloga.cpython-311.pyc b/03_zemljevid_ovir/__pycache__/naloga.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b2a1d54bf120a81cdae76d829fda0b0823c12d1 GIT binary patch literal 2873 zcmaJ@O=}xR7~a_rNtQ;kWn1!h?ZlFU?AVH%lpY)krH!GfYseRclGbd!8%K^UxwEoJ z%&O?ngB%P|pb+IIdPozJ-_b)am5d0^E}V{ z&i)w;`USYUexK9-@e0Df_|UpYvvF_<8qWkx_)Yjh&QWACpf?-)8Wk}K*)Dmj1io8-o9 zQp>EX%lcAUUCXTK$xD})w)FM2RXvx|mNK~%OY#AAX5*1fwanU9Dy{NG@Oi7bm8bm|XlJ|wEyhcqQTi%f=9=a~X{n|S~k$SEXb z=EHUefUV$ORfd8a7!7QVu>g)xBMW4#Wt?4iK^M+4mH=A2rs3w+J<4E1064n!p8keF zf+JS{a7j6|g55w+$Dm7y)jNQ!cqs%aJ(e$63UB+13a5#I*k{mm8%CNmktR+3oTipr zJm4J1Eh4x@G|2Om7&RPo zsH_*(iNbB%1puDH-G%E`FjSc57V)4(0FLrRyG!c!x5fG5{C;Po?BDG?U+p|^jf|K4 zRwRnumN!`P?|KKT-a#ueRP``QE@E$+<1 zyupvnbKY`tcGJi6+{oO=+{U*PqTQjVH`jHhW_8=6ZfxjjE#cw5b}X&4PWaDk#mK5G zYm=0t9p(T!yyfw(4W?&v8J1dd%14F`K|~C0;~4<@JOmc!KF2)Y>lrS8U+an2d*Thj zi>3$I_7+L;%7>gsI{`XD-Tu9m50hhH5#wec$NPe5=8A|DRqlkzG1c)?NR@`S_uz zoyzK8E~`-3K3dT7avSf*n1v!Ib9OzZ$5c4G(i!Y}PGMJZ=gJ>d=Crw@Dcu8g*g4n= zI}ecXvT8;<8tAl&QqjS)_nIj*HSBLI>j!+ z&{uF9PXR!#o=9QA>K}yjE5KbeE1+lp39=(}^mbINT5PRR<=kfyt^o$&+Xi zSio;8hMySx{B%kKW;M4P-vmFKc|89*dGEWrp3yef^e@;n#NmNtJOqFQC8QxLB-{{O m2vK}=VVIIAJ~m-EgrhEuxzqRpArHp6(A7z%8p287|Jnc1U2{hO literal 0 HcmV?d00001 diff --git a/03_zemljevid_ovir/__pycache__/naloga_test.cpython-311-pytest-7.4.2.pyc b/03_zemljevid_ovir/__pycache__/naloga_test.cpython-311-pytest-7.4.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3553fbffff4c3566ea906364e9b7f283b823a921 GIT binary patch literal 7691 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 literal 0 HcmV?d00001 diff --git a/03_zemljevid_ovir/naloga.py b/03_zemljevid_ovir/naloga.py new file mode 100644 index 0000000..d5ff3c2 --- /dev/null +++ b/03_zemljevid_ovir/naloga.py @@ -0,0 +1,82 @@ +def dolzina_ovir(vrstica): + count = 0 + for char in vrstica: + if char == "#": + count += 1 + return count + +def stevilo_ovir(vrstica): + count = 0 + ovira = False + for char in vrstica: + if char == "#": + if not ovira: + ovira = True + elif ovira: + count += 1 + ovira = False + if ovira: + count += 1 + return count + +def najsirsa_ovira(vrstica): + sirina_max = 0 + sirina = 0 + for char in vrstica: + if char == "#": + sirina += 1 + else: + if sirina > sirina_max: + sirina_max = sirina + sirina = 0 + if sirina > sirina_max: + sirina_max = sirina + return sirina_max + +def pretvori_vrstico(vrstica): + ovire = [] + ovira = False + start = 0 + for i, char in enumerate(vrstica): + if char == "#": + if not ovira: + start = i + 1 + ovira = True + elif ovira: + ovire.append((start, i)) + ovira = False + if ovira: + ovire.append((start, i + 1)) + return ovire + +def pretvori_zemljevid(vrstice): + ovire = [] + for y, vrstica in enumerate(vrstice, start=1): + for ovira in pretvori_vrstico(vrstica): + ovire.append((*ovira, y)) + return ovire + +def izboljsave(prej, potem): + nove_ovire = [] + star_zemljevid = pretvori_zemljevid(prej) + for ovira in pretvori_zemljevid(potem): + if ovira not in star_zemljevid: + nove_ovire.append(ovira) + return nove_ovire + +def huligani(prej, potem): + dodane_ovire = [] + odstranjene_ovire = [] + + star_zemljevid = pretvori_zemljevid(prej) + nov_zemljevid = pretvori_zemljevid(potem) + + for ovira in star_zemljevid: + if ovira not in nov_zemljevid: + odstranjene_ovire.append(ovira) + + for ovira in nov_zemljevid: + if ovira not in star_zemljevid: + dodane_ovire.append(ovira) + + return dodane_ovire, odstranjene_ovire \ No newline at end of file diff --git a/03_zemljevid_ovir/naloga_test.py b/03_zemljevid_ovir/naloga_test.py new file mode 100644 index 0000000..91a8cce --- /dev/null +++ b/03_zemljevid_ovir/naloga_test.py @@ -0,0 +1,125 @@ +import unittest +from naloga import * + +class Test(unittest.TestCase): + def test_dolzina_ovir(self): + self.assertEqual(3, dolzina_ovir("...###...")) + self.assertEqual(1, dolzina_ovir("...#...")) + self.assertEqual(2, dolzina_ovir("...#..#.")) + self.assertEqual(7, dolzina_ovir("#...#####..#.")) + self.assertEqual(8, dolzina_ovir("...#####.##...#")) + self.assertEqual(9, dolzina_ovir("#...#####.##...#")) + self.assertEqual(6, dolzina_ovir("##...#.#...##")) + self.assertEqual(0, dolzina_ovir("...")) + self.assertEqual(0, dolzina_ovir(".")) + + def test_stevilo_ovir(self): + self.assertEqual(1, stevilo_ovir("...###...")) + self.assertEqual(1, stevilo_ovir("...#...")) + self.assertEqual(2, stevilo_ovir("...#..#.")) + self.assertEqual(3, stevilo_ovir("#...#####..#.")) + self.assertEqual(3, stevilo_ovir("...#####.##...#")) + self.assertEqual(4, stevilo_ovir("#...#####.##...#")) + self.assertEqual(4, stevilo_ovir("##...#.#...##")) + self.assertEqual(0, stevilo_ovir("...")) + self.assertEqual(0, stevilo_ovir(".")) + + def test_najsirsa_ovira(self): + self.assertEqual(3, najsirsa_ovira("...###...")) + self.assertEqual(1, najsirsa_ovira("...#...")) + self.assertEqual(1, najsirsa_ovira("...#..#.")) + self.assertEqual(5, najsirsa_ovira("#...#####..#.")) + self.assertEqual(5, najsirsa_ovira("...#####.##...#")) + self.assertEqual(5, najsirsa_ovira("#...#####.##...#")) + self.assertEqual(6, najsirsa_ovira("######...#####.##...#")) + self.assertEqual(6, najsirsa_ovira("...#####.##...######")) + + def test_pretvori_vrstico(self): + self.assertEqual([(3, 5)], pretvori_vrstico("..###.")) + self.assertEqual([(3, 5), (7, 7)], pretvori_vrstico("..###.#.")) + self.assertEqual([(1, 2), (5, 7), (9, 9)], pretvori_vrstico("##..###.#.")) + self.assertEqual([(1, 1), (4, 6), (8, 8)], pretvori_vrstico("#..###.#.")) + self.assertEqual([(1, 1), (4, 6), (8, 8)], pretvori_vrstico("#..###.#")) + self.assertEqual([], pretvori_vrstico("...")) + self.assertEqual([], pretvori_vrstico("..")) + self.assertEqual([], pretvori_vrstico(".")) + + def test_pretvori_zemljevid(self): + zemljevid = [ + "......", + "..##..", + ".##.#.", + "...###", + "###.##", + ] + self.assertEqual([(3, 4, 2), (2, 3, 3), (5, 5, 3), (4, 6, 4), (1, 3, 5), (5, 6, 5)], pretvori_zemljevid(zemljevid)) + + zemljevid = [ + "..............##...", + "..###.....###....##", + "...###...###...#...", + "...........#.....##", + "...................", + "###.....#####...###" + ] + self.assertEqual([(15, 16, 1), + (3, 5, 2), (11, 13, 2), (18, 19, 2), + (4, 6, 3), (10, 12, 3), (16, 16, 3), + (12, 12, 4), (18, 19, 4), + (1, 3, 6), (9, 13, 6), (17, 19, 6)], pretvori_zemljevid(zemljevid)) + + def test_izboljsave(self): + prej = [ + "..............##...", + "..###.....###....##", + "...###...###...#...", + "...........#.....##", + "...................", + "###.....#####...###" + ] + + potem = [ + "...##.........##...", + "..###.....###....##", + "#..###...###...#...", + "...###.....#.....##", + "................###", + "###.....#####...###" + ] + + self.assertEqual([(4, 5, 1), (1, 1, 3), (4, 6, 4), (17, 19, 5)], izboljsave(prej, potem)) + + self.assertEqual([], izboljsave(prej, prej)) + + def test_huligani(self): + prej = [ + "..............##...", + "..###.....###....##", + "...###...###...#...", + "...........#.....##", + "...................", + "###.....#####...###" + ] + + potem = [ + "...##..............", + "..........###....##", + "#..###...###...#...", + "...###.....#.....##", + "................###", + "###.....##.##...###" + ] + + dodane, odstranjene = huligani(prej, potem) + self.assertEqual([(4, 5, 1), (1, 1, 3), (4, 6, 4), (17, 19, 5), (9, 10, 6), (12, 13, 6)], dodane, "Napaka v seznamu dodanih") + self.assertEqual([(15, 16, 1), (3, 5, 2), (9, 13, 6)], odstranjene, "Napaka v seznamu odstranjenih") + + dodane, odstranjene = huligani(potem, prej) # Pazi, obrnjeno! + self.assertEqual([(15, 16, 1), (3, 5, 2), (9, 13, 6)], dodane, "Napaka v seznamu dodanih") + self.assertEqual([(4, 5, 1), (1, 1, 3), (4, 6, 4), (17, 19, 5), (9, 10, 6), (12, 13, 6)], odstranjene, "Napaka v seznamu odstranjenih") + + self.assertEqual(([], []), huligani(prej, prej)) + + +if __name__ == "__main__": + unittest.main()