====== Ulice plná domečků ====== Jednoduchá úloha pro začínající programátory. Spíše procvičování programování než řešení problému. ===== Úkol ===== Vaším úkolem je v souboru **''solver.py''** naprogramovat funkci **''houses()''**, která bude vracet řetězec, jenž po vytisknutí vytvoří "grafickou" reprezentaci domečků v ulici (pomocí znaků, viz níže). Vstupem funkce bude plán ulice, což je opět řetězec sestávající ze 3 možných znaků: ''o'' (malé o) představující "prázdný" domeček, ''x'' (malé x) představující "proškrtnutý" domeček a "_" (podtžítko) představující mezeru mezi domečky (volnou parcelu). ===== Rozměry domečků ===== Domeček má základnu širokou 9 křížků, zdi z 9 křížků na sobě a střecha jde do výšky 4 křížků. Stojí-li domečky vedle sebe, sdílejí společnou zeď. Lépe vám napoví příklady níže. ===== Příklady ===== Příklady volání funkce ''houses()'' a výpisu jejího výstupu vám osvětlí, jak by se funkce měla chovat. ==== Jediný domeček (parcela) ==== ++++ Konfigurace o | >>> print(houses('o')) # # # # # # # ######### # # # # # # # # # # # # # # ######### ++++ ++++ Konfigurace x | >>> print(houses('x')) # # # # # # # ######### ## ## # # # # # # # # # # # # # # # # # # # ## ## ######### ++++ ++++ Konfigurace _ | >>> print(houses('_')) ######### ++++ ==== Několik domečků (parcel) vedle sebe ==== Když stavíme domečky vedle sebe, mají vždy společnou zeď mezi sebou (jedná se o řadové domky a 2 zdi by byly zbytečné). A stejně pokud je mezi domky jen parcela (nebo je vedle sebe víc parcel), mají zeď nebo hraniční křížek parcely společný. ++++ Konfigurace xoxox | >>> print(houses('xoxox')) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ######################################### ## ## ## ## ## ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## ## ## ## ## ## ######################################### ++++ ++++ Konfigurace _xo_ox_ | >>> print(houses('_xo_ox_')) # # # # # # # # # # # # # # # # # # # # # # # # # # # # ################# ################# ## ## # # ## ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## ## # # ## ## ######################################################### ++++ ===== Bodování ===== Funkce bude otestována na několika předem daných a několika náhodně vygenerovaných konfiguracích ulic. Podle poměru správně vygenerovaných výstupů a celkového počtu testů bude kód odměněn příslušnou částí maximálního počtu bodů.