Table of Contents

Plot kolem lesa

Majitel má na pozemku malý lesík, který chce oplotit tak, že plot přidělá přímo na některé ze stromů v lesíku. Plot by měl být co nejkratší, ale všechny stromy by měly být uvnitř oplocení (nebo být součástí plotu). Na které stromy plot přidělá?

Prerekvizity Trochu lineární algebry
Náročnost přemýšlení Střední
Náročnost programování Střední (seznamy, n-tice, cykly, podmínky, …)

Specifikace

V modulu solver.py vytvořte funkci build_fence(), která na základě seznamu souřadnic stromů vrátí indexy těch stromů, na které má být plot přidělán, a to v pořadí, v jakém by se měl plot stavět. Soubor solver.py pak odešlete do odevzdávacího systému.

Zárodek takové funkce může vypadat např. takto:

def build_fence(trees):
    fence = list(range(len(trees)))
    return fence

Tato funkce ale nepracuje správně, vrací indexy všech stromů, a takový plot skoro jistě nesplňuje podmínky uvedené níže. Na vás je upravit funkci tak, aby fungovala podle požadavků.

Funkce build_fence() by měla mít následující vstupy a výstupy:

Vstup trees N-tice (tuple) míst, kde se nacházejí v lesíku stromy. Každý strom je reprezentován dvojicí souřadnic (x,y).
Výstup fence Plán stavby plotu, tj. seznam indexů stromů, na které má být plot přidělaný.

Doplňující informace:

Hodnocení

Na vašem řešení bude provedena série testů na cca 20 různých lesících.

Nebude-li některá z těchto podmínek splněna, hodnocení na zbývajících testovacích lesích nebude provedeno.

Získaný počet bodů se skládá