Úložky

Za vyřešení následujících úložek získáte body do celkového hodnocení soutěže o velké ceny. Plný počet uvedených bodů získá optimální řešení, ostatní řešení mohou získat bodů méně. Úložky můžete řešit v libovolném pořadí. Řešení odevzdávejte v písemné podobě každý den mezi 22.00 a 22.30 (před večerníčkem).

Haskell 1

2 body, odevzdejte Ondrovi do pátku

Definujte funkci last typu [a] -> a, která vrátí poslední prvek seznamu.

Např. last [1,2,3] vrátí 3.

Haskell 2

2 body, odevzdejte Ondrovi do pátku

Definujte funkci fibs typu Int -> [Int], která vrátí seznam prvních n Fibonacciho čísel.

Např. fibs 10 vrátí [1,1,2,3,5,8,13,21,34,55].

Haskell 3

5 bodů, odevzdejte Ondrovi do pátku

Definujte funkci primes typu [Int], která vrátí seznam všech prvočísel.

Haskell 4

5 bodů, odevzdejte Ondrovi do pátku

Definujte funkci cubes :: [Int], která vrátí seznam všech přirozených čísel, která lze vyjádřit alespoň dvěma různými způsoby jako součet třetích mocnin dvou přirozených čísel.

Např. 1729 = 13+123 = 93+103

OpenID

6 bodů, odevzdejte Jirkovi do neděle

přidejte do vaší existující aplikace podporu pro přihlášení pomocí OpenID

SSL klient

2 body, odevzdejte Yardovi nebo Mukimu do pondělí

Napište klientskou aplikaci schopnou připojit se pomocí SSL na webový nebo jiný SSL server.

SSL server

6 bodů, odevzdejte Yardovi nebo Mukimu do pondělí

Napište server schopný přijímat SSL spojení. Server by měl umožnit generický nebo váš vlastní aplikační protokol nad SSL (to znamená komponenta webového SSL serveru nestačí).

Nejkratší cesta

3+2 body, odevzdejte Ondrovi do úterý 18:00

Napište program, který bude hledat nejkratší cestu v orientovaném grafu. Vstupem bude počet vrcholů, výchozí a cílový vrchol a ohodnocený seznam hran (vrcholy číslujeme od 0). Výstupem bude posloupnost vrcholů, přes které vede nejkratší cesta z výchozího do cílového vrcholu.

Např. pro vstup:

5 0 4       // hledáme cestu z vrcholu 0 do vrcholu 4 v grafu o 5 vrcholech
0 1 9       // z vrcholu 0 do 1 vede hrana délky 9
2 1 4       // z vrcholu 2 do 1 vede hrana délky 4
0 3 1       // ...
3 2 3
1 4 1
4 0 1
0 4 10

Je očekávaným výstupem posloupnost:

0 3 2 1 4

Pokud by cesta neexistovala, vydá o tom program příslušnou zprávu.

Můžete předpokládat, že ohodnocení každé hrany je kladné. Za tuto verzi můžete získat až 3 body.

Další 2 body můžete získat za rozšíření o možnost záporného ohodnocení hran. Pozor na záporné cykly. Pokud lze najít libovolně "krátkou" cestu (libovolně nízkého ohodnocení), vydá o tom program příslušnou zprávu.

Kůň na šachovnici

3 body, odevzdávejte Ondrovi do úterý 18:00

Napište program, který na čtvercové šachovnici o dané straně N vygeneruje cestu šachového koně tak, že na každém poli šachovnice bude právě jednou.

Vstupem tedy bude například 5, výstupem třeba A1,C2,B4,...

IP adresa

1 bod, odevzdat Ondrovi na email s předmětem „Ulozky“ do úterý 18:00

Napište regulární výraz, který testuje správnost IPv4 adresy (tj. tvaru xxx.xxx.xxx.xxx), včetně rozsahů!

Duplicity

1 bod, odevzdat Ondrovi na email s předmětem „Ulozky“ do úterý 18:00

Napište program, který (za pomoci regulárních výrazů) z textu vyjme všechny duplicity - všechna zdvojená slova. Např. z textu "PHP PHP je nejlepsi" vytvoří "PHP je nejlepsi". Diakritiku můžete zanedbat (můžete předpokládat, že se používají pouze znaky z dolní poloviny ASCII tabulky).

Správné datum

3 body, odevzdat Ondrovi na email s předmětem „Ulozky“ do úterý 18:00

Sestavte regulární výraz, který testuje správnost data ve formátu d.m.yyyy

Platná data jsou např. 31.1.2008, 29.2.2004

Neplatná data jsou např. 32.12.2008, 29.2.2003