PyLadiesCZ / pyladies.cz

Website of the Czech PyLadies chapter / Web českých PyLadies
https://pyladies.cz
MIT License
44 stars 87 forks source link

handout6 úloha 4: sjednocení nebo průnik? #490

Open messa opened 6 years ago

messa commented 6 years ago

@frenzymadness udělal tuto změnu: https://github.com/PyLadiesCZ/pyladies.cz/commit/73ee4567ab01e0992f85f95fa1f74d39d0a7d21d

-        \item zvířata, která jsou v obou seznamech,
-        \item zvířata, která jsou jen v prvním seznamu,
-        \item zvířata, která jsou jen ve druhém seznamu.
+        \item zvířata, která jsou v obou seznamech (sjednocení množin: první ∪ druhá),
+        \item zvířata, která jsou jen v prvním seznamu (rozdíl množin: první - druhá),
+        \item zvířata, která jsou jen ve druhém seznamu (rozdíl množin: druhá - první).

Doteď jsme jeli s interpretací, že "v obou seznamech" znamená průnik. Přijde nám to i vyplývající z toho textu: v obou = v prvním i ve druhém.

Mohli bychom to prosím upravit na průnik? Nebo upravit text?

frenzymadness commented 6 years ago

Podle mě může "v obou seznamech" znamenat jak průnik tak sjednocení. Přišlo mi lepší místo vymýšlení nových formulací prostě doplnit příměr na množinové operace (po konzultaci na našem aktuálním kurzu). Myslím si, že je asi jedno, co v tom zadání bude, protože ani jedno není výrazně složitější/jednodušší na implementaci než to druhé.

Mimochodem, tato změna samozřejmě prošla review, kde bylo možné se k ní vyjádřit: https://github.com/PyLadiesCZ/pyladies.cz/pull/482

Jestli si to chcete změnit na průnik, upravil bych formulaci na "zvířata, která jsou v prvním a zároveň ve druhém seznamu (průnik množin …"

hroncok commented 6 years ago

průnik je jednoznačně složitější

messa commented 6 years ago

@hroncok

průnik je jednoznačně složitější

Přijde mi to naopak, že průnik je jednodušší:

def prunik(seznam1, seznam2):
    v_obou = []
    for polozka in seznam1:
        if polozka in seznam2:
            v_obou.append(polozka)
    return v_obou

def sjednoceni(seznam1, seznam2):
    vsechny = list(seznam1)
    for polozka in seznam2:
        if polozka not in seznam1:
            vsechny.append(polozka)
    return vsechny
hroncok commented 6 years ago

ok, tak jsme kecal :D asi příliš rychlé soudy. zapomněl jsme, že nestačí jeden seznam nasypat na konec druhého.