NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:27.5.2013 16:20

Ahoj všichni, vítám vás u další minisoutěže, tento týden hrajeme o placku Machr na C# .NET a jako vždy o samolepky. Dnešní zadání bude obzvláště zábavné a speciální, výsledná aplikace se bude totiž hodnotit podle toho, jak je zdrojový kód dlouhý. Vyhrává nejkratší, soutěž je omezena na C# .NET a framework verze 3.5.

Zadání není komplikované, vytvořte analyzátor textových souborů, program si načte soubor z textového souboru vstup.txt (bude ve složce s programem) a analyzuje jeho text. Do konzole vypíše následující údaje:

Řádků: x
Samohlásek: x
Slov: x
Číslic: x
Emailových adres: x
Palindromů: x

Palindrom je slovo, které se čte stejně zleva i zprava, třeba kuk nebo oto. Program ignoruje velikost písmen. Sekvence znaků 2013 jsou 4 číslice.

Všechny programy potom spustím na stejném vstupním textu, abych vyzkoušel, jestli fungují. Dále spočítám počet znaků ve zdrojovém souboru Program.cs (samozřejmě nesmíte používat jinou knihovnu nebo třídu mimo těch v .NETu).

Hint: Používejte ternární operátory, namespace bude zbytečný, některé usingy budou zbytečné, kód pravděpodobně odevzdáte na jednom řádku. Nejdříve si program napište normálně a potom začněte s "kompresí" :)

Počítá se opravdu každý znak, machr, co napíše nejkratší program získává placku a nálepky. Čas máte do neděle 2.6. do 15:00.

Editováno 27.5.2013 18:54
Odpovědět
27.5.2013 16:20
New kid back on the block with a R.I.P
Avatar
Paradise
Tvůrce
Avatar
Paradise:27.5.2013 16:32

Hm, tuhle challenge bych mohl zkusit. Dostává se placka i za účast? :D

Editováno 27.5.2013 16:33
 
Nahoru Odpovědět
27.5.2013 16:32
Avatar
Odpovídá na Paradise
Michal Žůrek - misaz:27.5.2013 16:56

ne, jen za výhru

 
Nahoru Odpovědět
27.5.2013 16:56
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.5.2013 16:59

Cestu k souboru ale mohu dát jako option - CLI?

 
Nahoru Odpovědět
27.5.2013 16:59
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:27.5.2013 16:59

Ten jeden řádek je omezen na 80 znaků?

Nahoru Odpovědět
27.5.2013 16:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:00

Podle mne když to dáš jako vstup ze STDIN, bude to OK. Upřesní sdraco.

Editováno 27.5.2013 17:01
Nahoru Odpovědět
27.5.2013 17:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Žůrek - misaz:27.5.2013 17:08

bude vadit moc, když výsledek okem nepostřehneš? :D

Editováno 27.5.2013 17:08
 
Nahoru Odpovědět
27.5.2013 17:08
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 17:08

To mám jako používat jednopísmenné proměnné? :)

 
Nahoru Odpovědět
27.5.2013 17:08
Avatar
Michal Žůrek - misaz:27.5.2013 17:10

Jakými znaky budou odděleny řádky?

A.) \n\r
B.) \n
C.) \r
 
Nahoru Odpovědět
27.5.2013 17:10
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:27.5.2013 17:10

Kéžby jenom proměnné...

 
Nahoru Odpovědět
27.5.2013 17:10
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:27.5.2013 17:19

To tě přece nezajímá, ne? Oddělovače řádků jsou pohlceny během čtení a generovány při výpisu. Nikde jinde se s nimi nepracuje.

Nahoru Odpovědět
27.5.2013 17:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michal Žůrek - misaz:27.5.2013 17:20

No ja to čtu trochu jinak... :)

 
Nahoru Odpovědět
27.5.2013 17:20
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 17:20

Když přečtu soubor a dám foreach pro chary, tak tam budou i escape - ne? Takže ty asi nepočítat a toť vše...

 
Nahoru Odpovědět
27.5.2013 17:20
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:22

Kde by se tam vzaly escape? Ty přece ve vstupních datech nejsou.

Nahoru Odpovědět
27.5.2013 17:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 17:23

Co se pamatuji, tak jsem takto na escape narazil...

 
Nahoru Odpovědět
27.5.2013 17:23
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:23

Co je to za znak, ten tvůj "escape"?

Nahoru Odpovědět
27.5.2013 17:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 17:26

\ddd

 
Nahoru Odpovědět
27.5.2013 17:26
Avatar
Odpovídá na Kit
Michal Žůrek - misaz:27.5.2013 17:26

escape je správně (pokud vím dobře) to "\n" "\r" "\\" atd.

 
Nahoru Odpovědět
27.5.2013 17:26
Avatar
Michal Žůrek - misaz:27.5.2013 17:27

bere se:

2013

jako jedno číslo nebo 4?

 
Nahoru Odpovědět
27.5.2013 17:27
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 17:28

1 číslo, 4 znaky - o co tu asi jde...

 
Nahoru Odpovědět
27.5.2013 17:28
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:29

No a takové přece na vstupu nebudou. Znak \ se dá vyhodnotit jako oddělovač, ddd jako slovo. Ale proč by to tam sdraco dával? V běžném textu se nevyskytují.

Nahoru Odpovědět
27.5.2013 17:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:27.5.2013 17:31

"2013" je jedno číslo, které se skládá ze čtyř číslic: dvojky, nuly, jedničky a trojky.

Nahoru Odpovědět
27.5.2013 17:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 17:31

Kite Kite... :)

foreach(char c in System.IO.File.ReadAllText(args[0]))
{
        if (c == '\n')
                Console.WriteLine("Je tam!");
}

Výstup:

./Praes.exe /mnt/Data/Mono­Projects/Rumdych/Rum­dych/bin/Debug/sou­rce
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!
Je tam!

 
Nahoru Odpovědět
27.5.2013 17:31
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:38

Není. Escape znak je reprezentován pouze tím symbolem '\'. To 'n' už není escape znak. Takže v tom souboru je možná znak s ordinální hodnotou 13, což je LF, ale nic to nevypovídá o znaku s ordinální hodnotou 92, což je \.

Zkus si to schválně otestovat na '\\' - tak se v C# dá zapsat backslash, který se nejčastěji používá jako escape znak.

Editováno 27.5.2013 17:39
Nahoru Odpovědět
27.5.2013 17:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 17:39

David Hartinger

Nechceš tam připsat ještě tyto escape? (Zjistit jejich počet.)

 
Nahoru Odpovědět
27.5.2013 17:39
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 17:41

Kdyby to nevzal jako escape, tak by to nezkompiloval - neprošlo by to charem... Rozhodně to nebudu počítat do celkového počtu znaků...

Editováno 27.5.2013 17:42
 
Nahoru Odpovědět
27.5.2013 17:41
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:46

Ale ty nemáš za úkol kompilovat vstupní text a převádět escape znaky. Máš kompilovat svůj program v C#, který bude číst vstupní text a vypsat z něj report. Žádné escape znaky v něm přece nebudou.

Escape znaky jsou záležitostí kompilátoru, ale ne tvého programu.

Nahoru Odpovědět
27.5.2013 17:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 17:51

Jasně když mi to tedy očividně escape našlo, tak to budu ignorovat a počítat jako normální znaky...

 
Nahoru Odpovědět
27.5.2013 17:51
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 17:54

Očividně ti to escape znak nenašlo, ale našlo to jen '\n', což není escape znak. To je LF. LF není escape znak, ale netisknutelný znak pro návrat vozíku.

Nahoru Odpovědět
27.5.2013 17:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Libor Šimo (libcosenior):27.5.2013 18:19

'\n' nie je escape znak ale escape seqvencia!

Nahoru Odpovědět
27.5.2013 18:19
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:27.5.2013 18:45

2013 jsou 4 čísla :)

Vstup je na souboru vstup.txt, jak je zadáno.

Nahoru Odpovědět
27.5.2013 18:45
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michal Maršálek:27.5.2013 18:47

To jako "devbook" je sedm slov? :) To je přece to samé.

 
Nahoru Odpovědět
27.5.2013 18:47
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Maršálek
David Hartinger:27.5.2013 18:52

Ono by bylo složité řešit třeba desetinná čísla atd., pokud ti vadí označení číslo, změním ho na číslice. Devbook je 7 znaků.

Nahoru Odpovědět
27.5.2013 18:52
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.5.2013 19:02

Je tam číslic - takže prostě 0-9 - bez čárek a spol... Ne?

 
Nahoru Odpovědět
27.5.2013 19:02
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:27.5.2013 19:05

2013 jsou prostě 4 číslice :)

Nahoru Odpovědět
27.5.2013 19:05
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.5.2013 19:15

256,5

Taktéž - no ne? :)

 
Nahoru Odpovědět
27.5.2013 19:15
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:27.5.2013 19:16

Taktéž.

Nahoru Odpovědět
27.5.2013 19:16
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 19:35

Slova musím počítat i s diakritikou? :)

 
Nahoru Odpovědět
27.5.2013 19:35
Avatar
Michal Žůrek - misaz:27.5.2013 19:37

zalomení řádku ve zdrojovém kód je za jeden znak nebo za dva?

 
Nahoru Odpovědět
27.5.2013 19:37
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:27.5.2013 19:38

Jak jinak? "žluťák" je jedno slovo.

Nahoru Odpovědět
27.5.2013 19:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:27.5.2013 19:42

To jsou přece 2 řádky, ale odstavce se běžně nelámou.

Nahoru Odpovědět
27.5.2013 19:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Žůrek - misaz
David Hartinger:27.5.2013 19:42

Zalomení řádku se nepočítá jako znak.

Nahoru Odpovědět
27.5.2013 19:42
New kid back on the block with a R.I.P
Avatar
Michal Žůrek - misaz:27.5.2013 19:52

Já už mám nějaký paskvil hotový. Dám ho sem až v neděli.

Tentokrát budete mít jednoduché hodnocení :)

 
Nahoru Odpovědět
27.5.2013 19:52
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 20:11

719 znaků je jak moc zlé? :)

 
Nahoru Odpovědět
27.5.2013 20:11
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:27.5.2013 20:12

Anglicky? :)

 
Nahoru Odpovědět
27.5.2013 20:12
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 20:25

Nyní mám 571 znaků. Ale jak to má být s výstupním stringem? Bylo by nefér mít kvůli němu více znaků - jaký má tedy mít formát? U mě:

"Celkem:{0}\nSamohlásek:{1}\nŘádků:{2}\nSlov:{3}\nČíslic:{4}\nEmailovýchadres:{5}\nPalindromů:{6}"
 
Nahoru Odpovědět
27.5.2013 20:25
Avatar
Odpovídá na David Hartinger
Michael Olšavský:27.5.2013 20:27

Počítá se emailová adresa nebo palindrom do kolonky slova? Nebo by tam byly navíc?

 
Nahoru Odpovědět
27.5.2013 20:27
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:27.5.2013 20:27

ani ne. Ještě můžeš pár znaků připsat :D To bych totiž prohrál.

 
Nahoru Odpovědět
27.5.2013 20:27
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:27.5.2013 20:28

Proboha co vše si umazal?

 
Nahoru Odpovědět
27.5.2013 20:28
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 20:29

Co - kolik máš? :)

 
Nahoru Odpovědět
27.5.2013 20:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 112.