Ahoj,
Pro ty co neznají ksp, tak se jedná o Korespondenční seminář z programování pro středoškoláky, který pořádá Matfyz. Během školního roku je 5 sérií úloh, můžete se přidat kdykoli a začít řešit klidně i uprostřed roku. Jedná se hlavně o úlohy algoritmické, např. použití dynamického programování nebo drobnosti v teorii grafů. Na stránkách získáte zadání úloh, vyřešíte je a pošlete řešení a obratem vám dojdou opravená řešení a přidělené body. Pro řešitele se dvakrát ročně pořádají soustředění. Doporučil bych zkusit řešit každému, kdo chce jít studovat informatiku na nějakou kvalitní vysokou školu. Kdo je úspěšný řešitel ksp, ten bude mít první ročník nejen na matfyzu o něco jednodušší. Právě probíhá třetí série, zapojte se ještě dnes ;-)
Možná je pro dost lidí šok, když jsou v okolí za IT guru, protože dovedou napsat klikátko ve VS nebo nakódit stránky v php, že tady jsou za zelenáče. Myslím, že umístění je až druhořadá věc, nejdůležitější je dozvědět se něco nového. A aspoň si každý může zkusit porovnat síly s lidmi, kteří reprezentují ČR na IOI(olympiáda v informatice).
Ale pro ty, kteří chtějí začít pěkně zlehka, tu máme novou úžasnou formu řešení úloh. Jmenuje se Programátorská džungle https://ksp.mff.cuni.cz/dzungle/. Jedná se téměř o rpg, pohybujete se v dungeonu, kde musíte řešit informatické problémy, abyste se dostali dál. A jste to vy, kdo sbírá zkušenosti a zlepšuje se. Způsob řešení je dost podobný Google Code Jam, dozvíte se úlohu, napíšete řešení v libovolném jazyce, stáhnete testovací data a odešlete vámi spočtený výsledek. Programátorská džungle je pro každého, nejen pro středoškoláky.
Informace o KSP najdete na adrese: https://ksp.mff.cuni.cz/ https://ksp.mff.cuni.cz/about/intro.html
Programátorskou džungli najdete na adrese: https://ksp.mff.cuni.cz/dzungle/ https://ksp.mff.cuni.cz/dzungle/
Příspěvky odeslané z IP adresy 90.180.131.–
Tak to je tím, že cons spojí hlavu a ocas. Tedy z (cons '(0 1) '(2 3)) udělá '((0 1) 2 3). Asi bys chtěl něco jako (cons '(0 1) '( '(2 3))) z čeho ti vznikne '( '(0 1) '(2 3) ). Mně se už nedaří napsat nic rozumného v schemu, takže radím jen teoreticky :D
[seznam]i bys rozhodně neměla v cyklu měnit. Je to krajní mez.[/seznam]
[seznam]většinou chceš použit proměnnou, kterou máš v cyklu, tedy brát prvky na indexech o[/seznam]
[seznam]test je pole charů, nepotřebuješ je přetypovávat[/seznam]
[seznam]nepotřebuješ umocňovat, pokud znáš Hornerovo schéma, vylepší ti to časovou složitost[/seznam]
[seznam]je potřeba na začátku si vynulovat proměnné[/seznam]
[seznam]možná bych tu funkci pojmenoval hex2dec ;)[/seznam]
vysl = 0;
for (o = 0; o < i ; o++){
cislo = prevod[(test[o]];
vysl *= 16;
vysl += cislo;
}
Musíš si ten applet podepsat http://www.captain.at/programming/java/
Eclipse si určitě generuje vlastní build.xml, takže by mělo stačit se jen podívat do složky s projektem. Pokud se ho chceš naučit psát manuálně, tak pak se podívej na manuál antu http://ant.apache.org/manual/using.html
Chytrá metoda je vracet si ukazatel na upravený podstrom. Něco takového:
struct uzel* odebrat(struct uzel* u, int cislo) {
if (u == NULL) { return u; }
if (cislo < uzel->data) {
uzel->levy = odebrat(uzel->levy, cislo);
} else if (cislo > uzel->data) {
uzel->pravy = odebrat(uzel->pravy, cislo);
} else {
if (uzel->levy == NULL) {
struct uzel* vratit = uzel->pravy;
free(uzel);
return vratit;
} else if (uzel->pravy == NULL) {
struct uzel* vratit = uzel->levy;
free(uzel);
return vratit;
} else {
...Error...
}
}
}
Taková funkce se pak volá koren = odebrat(koren, cislo)
Dobrý nápad je si ji zaobalit nějakou, která se o to stará sama.K21 napsal:
Nevim, jestli se da odpovedet slusne. Zkusim to.
Tady neni potreba ani ten Google, staci ti interpreter Pythonu, schopnost psat na pocitaci a spustit program, pripadne si precist chybovou hlasku.
Jo a jinak: ano, musi.
Plácáš nesmysly. Co takhle říct o modulu os.path a některých jeho hezkých funkcích jako exists, isfile, isdir, atd? Proč být na tazatele zlý, když třeba chtěl vědět jestli neexistuje lepší způsob než ten, který ho napadl.
Myslím, že to co chceš je JSplitPane widget ve Swingu: http://java.sun.com/docs/books/tutorial/uiswing/components/splitpane.html
Děláš tam blbosti s proměnnýma hltotal a sltotal. Jsou zbytečně inicializované třikrát a hlavně v každém cyklu při načítání. Takže každý cyklus začínáš s sltotal = 0. Akorat pri posledním načteš 4, pak provedeš rangeCheck, kde máš sltotal = sltotal + slmark, takže to bude sltotal = 4+4. To samé s hltotal. Takže nakonec máš 8+8+1 = 17. Vyndej ty total před for cyklus a přičítej až při kontrole mezí a bude ti to fungovat.
Tebe v podstatě nezajímá co je v té matici, chceš najít všechny permutace indexů.
Příklad jak to třeba udělat rekurzivně: Budeš mít pole velikosti n. Do něj si budeš značit, jestli jsi už daný index použila, na začátku nebude použito nic. Rekurzivně pak budeš přidávat vždy nový index a jakmile dojdeš na konec, tak si jej zapamatuješ.
Pseudokód(ne tak úplně ;-):
n = 4
pouzite = n * [False]
def vsechnyPermutace(permutace, delka):
global n, pouzite
for j in range(n):
if pouzite[j]:
continue
else:
pouzite[j] = True
vsechnyPermutace(permutace+[j], delka+1)
pouzite[j] = False
if n == delka:
print permutace
Místo vypsání permutace ty budeš chtít vzít si prvky, které budou v matici na pozicich m[i][permutace[i]].
Udělej si třídu reprezentující každý záznam. Jednotlivé položky budeš mít uložené v poli/seznamu/... Budeš mít texťák a do něj budeš psát jednotlivé záznamy oddělené znakem, který se v nich nebude objevovat. Můžeš mít třeba každý záznam na nový řádek a ve formátu id|firma|barva. Ale v ascii tabulce je na tohle myšleno a existují znaky 0x1E Record Separator a 0x1F Unit Separator.
Při spuštění programu si pak otevřeš tento soubor, načteš jeho obsah, rozparsuješ a uložíš do vnitřní reprezentace.
Ale hezčí by bylo mít to buď v té databázi(SQLite) anebo třeba v xml souboru. ;-)
Měl jsem na mysli hlavně algoritmy a teorii. Jazyky se dají naučit odkudkoli. Ale když se chce někdo naučit opravdu programovat tak mu nezbývá než zabrousit do knih jako Introduction to Algorithms z MIT.
Ahoj,
Chtěl bych se zeptat středoškoláků, kteří se učí programovat, z jakých serverů kromě programujte.com se ještě učíte anebo na nich získáváte nové poznatky? Jaké jsou hodně navštěvované a lze na nich nalézt spoustu informací?