[Zápočet] Java 21.1.2009

Osiris at 2009-01-21 12:18:08

Dneska jsme měli naprogramovat variaci na unixovský cut:

Program měl běžet ve dvou modech, s delimiterama, pak bral pole podle oddělovačů, a binární mód, který bral co znak, to sloupec
parametry byly takovehle (b je binarni mod):

program -d delimiter -f pole 
program -b pole   

Prislo mi to docela lehke, ale zasekl jsem se na regularnich vyrazech, takze jsem to dodelal asi 45 minut pred koncem, nez mi to Hnetynka uznal.

[[ slouceno by Hypiz ]]

Necroman at 2009-01-21 13:27:41

Dnesni zadani bylo na prvni pohled lehke, ale nachytalo se na nem dost lidi:

vytvorte alternativu linuxoveho prikazu  cut  - program cte data ze std vstupu a pise na std vystup. z kazdeho radku zobrazi ty sloupce, oddelene zadanym oddelovacem, ktere jsou zadane v prikazu. parametry:
-d : - nastaveni oddelovace na jednotlivych radcich
-f 2,3-5,-7,4- - nastaveni, ktere sloupce vybrat, muze byt zadan jeden, interval ci z jedne strany otevreny interval
-b 2,3-5,-7,4- - vypsat ne sloupce, ale znaky ci intervaly znaku na dane pozici, intervaly jsou stejne, jako u -f

v mem pripade jsem mel zaklad hotovy za hodinu, druhou hodinu jsem ladil problemy s indexy, kterych bylo mraky, dalsi pul hodinu problem se spatne pochopenym zadanim :) a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy. Nakonec jsem to s primhourenymi oci dal, ale kdyz jsem na samem konci odchazel, dobre jeste 10 lidi tam sedelo a nevypadalo to, ze by to dokoncili.

Control at 2009-01-21 14:02:52

Doplneni zadani

Clovek si mohl byt jisty ze:

  • oddelovacem nebude
    (vstup se mohl nacitat po radcich)

  • rozsahy x-y, kde x > y mohl oznamit jako chybu

Pozor:

  • Pri parsovani rozsahu (napr. 1-5) pozor, pokud zavolate Integer.parseInt("-5") udela presne to, co ma vrati -5.

  • Pokud budete spoustet program z konzole z pomoci "java -jar ./dist/jmenoVasehoProjektu.jar < vstupniData" tak pri kazdem buildu v NetBeansy adresar ./dist/ smazou a znovu vytvori => filedescriptor zustane v pameti (protoze mate otevreny terminal ve kterem jste v adresari /dist/).
    Dusledkem bude, ze v danem okne terminalu nebudou v ./dist/ zadne soubory a spusteni pres java -jar vyhodi: "jmenoVasehoProjektu.jar is unreachable".
    Moznym resenim je spoustet vse pres:
    cd pwd ; java -jar ./dist/jmenoVasehoProjektu.jar < vstupniData

  • Pozor taky, pokud naalokujete prilis mnoho pameti (samotne netbeans berou radove stovky Mb) system Vam sestreli X-ka (stalo se mi, ze se pc po spusteni programu (s chybou) sam "odhlasil")

  • Potvrzuju, ze alespon pro 8 lidi to nebyla posledni navsteva zapoctoveho terminu z Javy... a to nebyl Swing/sitoviny/thready

HonzaK at 2009-01-28 20:42:00

Necroman wrote: ...a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy.

Mohl byste, prosim, nekdo popsat o jake problemy slo a jak ste je resili ? Podle dokumentace by metoda split mela brat jako oddelovac prave regexp, takze bych cekal, ze to bude fungovat rovnou...?!
Diky

Necroman at 2009-01-28 22:36:30

HonzaK wrote:

Necroman wrote: ...a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy.

Mohl byste, prosim, nekdo popsat o jake problemy slo a jak ste je resili ? Podle dokumentace by metoda split mela brat jako oddelovac prave regexp, takze bych cekal, ze to bude fungovat rovnou...?!
Diky

Pokud zadas jako oddelovac treba \ nebo [ nebo . nebo jakykoliv jiny specialni znak z reg. vyrazu, tak mas problem... je treba je manualne odescapovat pridanim \pred nej. Jako vstup do string.split musi byt spravny regularni vyraz a to v tomto pripade neni treba samotny backslash.