Zápočet 31.5.2007

Osiris at 2007-05-31 12:13:34

Dnešní úkol : Naprogramovat PacMana, který žere hvězdičky ze zadaného bludiště. Musi je sezrat uplne vsechny

- stena

    • jidlo

    • volno

Dale bludiste bylo obdelnikove, mohli jsme pocitat s tim, ze je spravne zadane. Pohyb po bludisti jsme meli udelat randomizovane, PacMan nemuze jit pres steny. Start byl na pozici 0,0.

Priklad bludiste :

*#****#
*###***
....**#

Bludiste se zadavalo ze souboru, pri prepinaci -v se melo vypisovat kazdy tah.

Byly 3 hodiny času, já jsem to měl asi za hodinku, STL bylo povoleno.

Eddie at 2007-05-31 16:06:16

Ještě dodám, že jediný háček byl v tom, že velikost pole nebyla předem známa, takže bylo potřeba v průběhu načítání pole doalokovávat. Někteří to ale dělali i tak, že si soubor prošli dvakrát - v prvním průchodu si zjistili počet řádků a sloupců a v druhém pak už věděli kolik toho mají číst. Co jsem slyšel, tak i toto řešení opravující uznával, ale řekl, že příště radši zadá, že vstup bude na stadardním vstupu, což už tak obejít nejde.

Jinak mi to přišlo hodně jednoduché, oproti tomu zadání trace je to nesrovnatelné.

Lucas at 2007-05-31 16:40:43

A ja len za seba .. ze od kedy viem pouzivat STL .. resp. co to je .. tak alokovat a dealokovat ziadne pole nemusim .. a ci to bolo bludisko konecne alebo nekonecne .. tak to je pri tom uplne jedno.
Takze len moja rada pre neuspesnych - hodi sa vam naucit nieco o stringoch resp. vektoroch z STL-ka .. :wink:
S nimi mi to dnes slo jedna baasen..

Osiris at 2007-05-31 16:45:38

doalokovavat se to nemuselo, resp. kdyz se pouzily veci z STL tak to bylo strasne snadne :

vector<string> radky;

string nacitanaradka;

int c;

while ((c=getc(soubor))!=EOF)
{if (c == '
'){radky.push_back(nacitanaradka);nacitanaradka = "";}else{nacitanaradka = nacitanaradka + (char)c;}
}

radky.push_back(nacitanaradka);

z tohohle ti vylezlo nadherne cele hraci pole...

Wolda at 2007-05-31 18:06:08

Ja jsem ulohu resil bez STL (s tim, ze jsem vstupni soubor cetl 2x) a prislo mi to i tak dost snadne. Rozhodne jsem STL nikde nepotreboval a odchazel jsem zhruba paty (pricemz poslednich 20minut jsem uz jen ruzne blbnul se svym testovacim bludistem).

Kdyby bylo zakazano cist vstup 2x (napr. by se nacital ze standardniho vstupu), tak bych ho holt nejprve nacetl do bufferu, ktery bych dynamicky zvetsoval, dokud by bylo stale co cist (neboli mel bych 2 buffery a ty stridal). Mozna se pletu, ale neprijde mi, ze by tento zpusob byl v necem zdlouhavy, takze i tak by se to dalo stihnout bez STL.

hippies at 2007-06-03 13:57:14

neni to o stihani, je to o pohodlnosti;) ale myslim, ze STL by melo byt zakazane, od toho je OOP