Chceš se vypracovat až k výdělku 160.000 Kč/měsíc? Důležité je začít. Staň se programátorem díky rekvalifikačnímu kurzu! Začni dnes!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Machr na C# .NET - Krátký analyzátor textů

Aktivity
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
David Čápka 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
You are the greatest project you will ever work on.
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 Čápka 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 Čápka 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 Čápka 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 Čápka Hartinger
Tým ITnetwork
Avatar
David Čápka 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
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Čápka 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 Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Michal Maršálek
David Čápka 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
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka 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 Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:27.5.2013 19:05

2013 jsou prostě 4 číslice :)

Nahoru Odpovědět
27.5.2013 19:05
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:27.5.2013 19:15

256,5

Taktéž - no ne? :)

 
Nahoru Odpovědět
27.5.2013 19:15
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Nahoru Odpovědět
27.5.2013 19:16
You are the greatest project you will ever work on.
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 Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek - misaz
David Čápka Hartinger:27.5.2013 19:42

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

Nahoru Odpovědět
27.5.2013 19:42
You are the greatest project you will ever work on.
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 Čápka 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
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
David Čápka Hartinger:27.5.2013 20:59

Ještě připomenu, že existují regulární výrazy pánové a v C# zrovna hodně mocné :`

Nahoru Odpovědět
27.5.2013 20:59
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 21:06

Jé - oni nechců počítat znaky - tak to mám jen 538 znaků! :)

 
Nahoru Odpovědět
27.5.2013 21:06
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:27.5.2013 21:07

Používám - od začátku...

 
Nahoru Odpovědět
27.5.2013 21:07
Avatar
Michal Žůrek - misaz:27.5.2013 21:31

matesax : já to nechápu. Jak jsi to zmenšil na 538? Já mám pořád 648.

 
Nahoru Odpovědět
27.5.2013 21:31
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 21:37

Na to se chci zeptat - jak mám teď publikovat zdroják do soutěže? (Aby nebyl šlohnut...)

Mám tam jeden while a samé regex + 5 jednopísmenných proměnných...

 
Nahoru Odpovědět
27.5.2013 21:37
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:27.5.2013 21:41

Pošli to sdracovi do soukromých zpráv a nikdo ti to nešlohne.

 
Nahoru Odpovědět
27.5.2013 21:41
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 21:43

Snažím se to ještě dostat pod 500... :)

 
Nahoru Odpovědět
27.5.2013 21:43
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:27.5.2013 21:48

Ty si blázen...

 
Nahoru Odpovědět
27.5.2013 21:48
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
matesax:27.5.2013 21:55

526 - jestli ještě něco osekám... :)

 
Nahoru Odpovědět
27.5.2013 21:55
Avatar
matesax
Tvůrce
Avatar
matesax:27.5.2013 22:08

518 :)

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

Asi se konečně naučím C#, ať můžu zařvat: "Sparta!”

Nebo si snad myslíte, že se na 300 nedostanu? :)

Nahoru Odpovědět
27.5.2013 22:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na David Čápka Hartinger
Luboš Běhounek Satik:28.5.2013 1:32

Jak moc spravne to musi byt? :)
Řádků: pocitaji se prazdne radky?
Samohlásek: pocitaji se s hackem, carkou, krouzkem?
Slov: jsou slova vzdy oddelena mezerou? muze se prazdny radek pocitat jako slovo?
Emailových adres: budou vsechny zavinace v dokumentu soucasti emailovych adres?
Palindromů: pocita se diakritika?

Nahoru Odpovědět
28.5.2013 1:32
https://www.facebook.com/peasantsandcastles/
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Kit
matesax:28.5.2013 5:53

Výzva... :)

 
Nahoru Odpovědět
28.5.2013 5:53
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:28.5.2013 6:17

Je to tam! 489 :)

 
Nahoru Odpovědět
28.5.2013 6:17
Avatar
matesax
Tvůrce
Avatar
matesax:28.5.2013 7:17

459 a nevěřím, že to jde míň... :)

 
Nahoru Odpovědět
28.5.2013 7:17
Avatar
matesax
Tvůrce
Avatar
 
Nahoru Odpovědět
28.5.2013 8:12
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:28.5.2013 15:25

Asi ne - tak bez něj to dá jen 478. :(

 
Nahoru Odpovědět
28.5.2013 15:25
Avatar
matesax
Tvůrce
Avatar
matesax:28.5.2013 17:27

465 - má to někdo méně? :)

 
Nahoru Odpovědět
28.5.2013 17:27
Avatar
tygr.p
Člen
Avatar
tygr.p:28.5.2013 21:49

Také bych se připojil k otázkám Satika :)

Chtěl bych se zeptat na ty samohlásky...

Jaké samohlásky to má počítat? Já znám A E I O U Á É Í Ó Ú AU EU OU

 
Nahoru Odpovědět
28.5.2013 21:49
Avatar
tygr.p
Člen
Avatar
tygr.p:29.5.2013 0:01

Zatim jsem se dostal na 557 a za boha to víc dolu nejde :D

 
Nahoru Odpovědět
29.5.2013 0:01
Avatar
matesax
Tvůrce
Avatar
Odpovídá na tygr.p
matesax:29.5.2013 6:05

Jako veškeré patterny (obecné schéma) a forma výstupního textu by měla být zadaná - to jinak udělat nejde...

Editováno 29.5.2013 6:06
 
Nahoru Odpovědět
29.5.2013 6:05
Avatar
matesax
Tvůrce
Avatar
matesax:29.5.2013 6:38

http://www.interact-sw.co.uk/…ressiontrees

Func je dokonce ve 3.0? Tak to bude kruté... :)

 
Nahoru Odpovědět
29.5.2013 6:38
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek Satik
David Čápka Hartinger:29.5.2013 9:06

To je otázek :D Kdybych někoho přehlédl, ptejte se prosím znovu.

Řádků: pocitaji se prazdne radky? - ano
Samohlásek: pocitaji se s hackem, carkou, krouzkem? - ano
Slov: jsou slova vzdy oddelena mezerou? - počítej i s čárkou, tečkou nebo vykřičníkem.
Muze se prazdny radek pocitat jako slovo? - ne
Emailových adres: budou vsechny zavinace v dokumentu soucasti emailovych adres? - ne
Palindromů: pocita se diakritika? - Ano, např. "nezařazen"

Víte co? Já vám ten ukázkový text během dneška dodám, ať si to odladíte :)

Nahoru Odpovědět
29.5.2013 9:06
You are the greatest project you will ever work on.
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Michael Olšavský
David Čápka Hartinger:29.5.2013 9:07

Počítá, každá statistika je nezávislá.

Nahoru Odpovědět
29.5.2013 9:07
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:29.5.2013 16:43

A výstupní text se počítá? Protože pokud ano, vyházím \n a přeformuluji to... :)

 
Nahoru Odpovědět
29.5.2013 16:43
Avatar
tygr.p
Člen
Avatar
tygr.p:29.5.2013 16:56

Podle mě by hlavně výstupní text měl vypadat tak jako ten příklad nahoře :)

 
Nahoru Odpovědět
29.5.2013 16:56
Avatar
matesax
Tvůrce
Avatar
matesax:30.5.2013 8:32

444 - někdo méně? :)

 
Nahoru Odpovědět
30.5.2013 8:32
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
David Čápka Hartinger:30.5.2013 11:41

Abychom se shodli na tom, zda aplikace funguje korektně, zde je text, na kterém ji budu zkoušet:

Text slouží k vyzkoušení už asi 30. soutěže
v programování, která se zaměřuje na počítání
slov v textu, samohlásek a znaků! Dále zde
naleznete příklady palindromů, jako je třeba
děd, rotor, madam a radar. Zajímavé palindromy
jsou nepochopen a nezařazen, že? Kdybychom
rozříšili definici palindromu, je palindromická
věta třeba: "Ne debile, doma má má máma modely
beden". Takové věty ale rozeznávat nemusíte.
Posledním prvkem jsou emailové adresy, jako třeba
[email protected] nebo [email protected]. Nenechte
se v textu zmást znaky jako @!

Statistiky nemám, jelikož jsem sám program neimplementoval, ale bude bohatě stačit, když se tu spolu dohodnete na výsledku, co vyjde více lidem a bude dávat smysl :)

A pro úplnost dodávám, že nestačí, když výsledný program bude umět vypsat údaje jen přesně o tomto textu :D

Nahoru Odpovědět
30.5.2013 11:41
You are the greatest project you will ever work on.
Avatar
Sc077y
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
Sc077y:30.5.2013 11:54

Soutěže se sice neúčastním, ale chtěl bych podotknout, že by bylo dobré odpovědět na otázku matesaxe, zda se počítá výstupní text a ujasnit jak má vypadat výstup programu, aby nakonec o výherci nerozhodovalo to, jak hodně, omlouvám se za ten výraz, zprasil výstup programu.

 
Nahoru Odpovědět
30.5.2013 11:54
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Sc077y
David Čápka Hartinger:30.5.2013 13:40

Jak má vypadat výstup programu je v zadání. Počítá se délka celého zdrojového kódu, jak je v zadání.

Editováno 30.5.2013 13:40
Nahoru Odpovědět
30.5.2013 13:40
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:30.5.2013 16:19

A mezery se počítají také? 444 mám s mezerami - třeba mezi var a názvem proměnné... Jinak mám 428 znaků... Kolik si tedy mám počítat? :) Nějak si pořád nejsem jist, jaké hodnoty jsou správné - mohl by jsi tedy poslat i korektní výsledky? Děkuji.

 
Nahoru Odpovědět
30.5.2013 16:19
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:30.5.2013 16:51

Počítají se i mezery. Jak jsem psal, hodnoty naměřené nemám, hoď sem kolik ti to vypsalo a někdo to buď potvrdí nebo vyvrátí.

Nahoru Odpovědět
30.5.2013 16:51
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:30.5.2013 16:55

Nebyl by alespoň online nástroj na palindromy? (Nechci si moc posouvat historii - abych mohl přecházet mezi verzemi... :) )

 
Nahoru Odpovědět
30.5.2013 16:55
Avatar
tygr.p
Člen
Avatar
tygr.p:30.5.2013 20:26

Počítají se písmena jako palindromy? o_O

 
Nahoru Odpovědět
30.5.2013 20:26
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na tygr.p
Petr Nymsa:30.5.2013 20:29

ne musí to být minimálně slovo o 3 znacích (podle mě) takže třeba kuk,sus,cuc

Nahoru Odpovědět
30.5.2013 20:29
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na tygr.p
David Čápka Hartinger:30.5.2013 20:29

Nepočítají.

Nahoru Odpovědět
30.5.2013 20:29
You are the greatest project you will ever work on.
Avatar
tygr.p
Člen
Avatar
tygr.p:30.5.2013 22:01

Sem si to myslel :o

 
Nahoru Odpovědět
30.5.2013 22:01
Avatar
matesax
Tvůrce
Avatar
matesax:30.5.2013 22:10

Máte někdo méně, než 442? :)

 
Nahoru Odpovědět
30.5.2013 22:10
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Petr Nymsa
matesax:31.5.2013 5:54

Ty znáš slovo o dvou znacích invertně similérní? (Vyjíma citoslovce.)

 
Nahoru Odpovědět
31.5.2013 5:54
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:31.5.2013 6:13

Jak mám brát Text?

 
Nahoru Odpovědět
31.5.2013 6:13
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:31.5.2013 9:02

Obávám se, že nerozumím otázce. Text ber jako slovo. Zadání mi připadá jasné, vlastně nechápu jak se k němu dá vymyslet tolik otázek.

Nahoru Odpovědět
31.5.2013 9:02
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:31.5.2013 10:17

Několik takových slov znám. A nejsou to citoslovce.

Nahoru Odpovědět
31.5.2013 10:17
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 David Čápka Hartinger
matesax:31.5.2013 13:50

Text == texT?

Nic, nic - blbost - neřeš... :)

Editováno 31.5.2013 13:52
 
Nahoru Odpovědět
31.5.2013 13:50
Avatar
tygr.p
Člen
Avatar
tygr.p:31.5.2013 15:37

Správný výstup bych viděl nějak takto...

Řádků: 12
Samohlásek: 170 //Nepočítáno ou au eu...
Slov: 84
Číslic: 2
Emailových adres: 2
Palindromů: 6

 
Nahoru Odpovědět
31.5.2013 15:37
Avatar
matesax
Tvůrce
Avatar
Odpovídá na tygr.p
matesax:31.5.2013 15:41

Samohlásek mi vychází 166, ale hlavně slov jen 76. Emaily, @! (či co to tam je) atd. nejsou slova, jen části obsahující znaky s ASCII mezi A-ž...

 
Nahoru Odpovědět
31.5.2013 15:41
Avatar
matesax
Tvůrce
Avatar
matesax:1.6.2013 6:36

Tak se omlouvám - prostudoval jsem si wiki:

Podle patternu [aeiouáíýyůěé]|ou mi samohlásek vychází 185 po odečtení 5ti ou 180.

http://cs.wikipedia.org/…ohl%C3%A1sky

A dle definice slova by tam mělo být 79 slov.

Editováno 1.6.2013 6:38
 
Nahoru Odpovědět
1.6.2013 6:36
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
David Čápka Hartinger:2.6.2013 15:35

Zde s nejkratším kódem vítězí matesax, který se dostal pod 500 znaků, když bych z kódu odstranil mezery. Prosím o adresu x do PM.

Nahoru Odpovědět
2.6.2013 15:35
You are the greatest project you will ever work on.
Avatar
Libor Šimo (libcosenior):2.6.2013 17:00

Gratulujem matesax-ovi. :)

Nahoru Odpovědět
2.6.2013 17:00
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
matesax
Tvůrce
Avatar
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na matesax
David Dostal:2.6.2013 18:37

Také gratuluji. 442 znaků je opravdu málo. Nechceš sem hodit zdroják? Zkoušel jsem si pro sebe udělat detekci palindromů a zajímalo by mě, jestli jsi to řešil obdobně.

 
Nahoru Odpovědět
2.6.2013 18:37
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Dostal
matesax:2.6.2013 18:51

Poslat mohu všechny verze, co si pamatuji. Bohužel ta která splňovala podmínky soutěže nejvíce, měla jen 490 znaků, nebo tak nějak... Protože jsem nepočítal s několika faktory - samohlásky se nedají obejít - jen vypsat, počet řádků se musí brát ze Split - ne z Matches - tak jsem musel přidat začátek - ^ atd. Tudíž nejmenší funkční verze:

using System.Text.RegularExpressions;
using System.Linq;

class M
{
        static void Main(string[]a)
        {
                var s=Regex.Replace(System.IO.File.ReadAllText(a[0]),"[!-/]|ch| @","");

                foreach(string b in s.Split(' ','\n'))
                        s+=(b.Length>1&&b.SequenceEqual(b.Reverse()))?'-':'>';

                foreach(string o in @"Lines/^|\n;Vowels/ou|[aeiouáíýyůěé];Words/-|>;Digits/\d;Emails/\S@;Palindromes/-".Split(';'))
                {
                        var c=o.Split('/');
                        System.Console.Write(c[0]+':'+Regex.Matches(s,c[1]).Count+'\n');
                }
        }
}

439:

using System.Text.RegularExpressions;using System.Linq;using System;class M{static void Main(string[]a){var s=System.IO.File.ReadAllText(a[0]);foreach(string b in s.Split(null))if (b.All(i=>i>43))s+=b.SequenceEqual(b.Reverse())?'-':'>';foreach(string o in @"Řádků/^|\n;Samohlásek/[aeiouáíů];Slov/-|>;Číslic/\d;Emailových adres/\S@;Palindromů/-".Split(';')){var c=o.Split('/');Console.Write("{0}:{1}\n",c[0],Regex.Matches(s,c[1]).Count);};}}
Editováno 2.6.2013 18:54
 
Nahoru Odpovědět
2.6.2013 18:51
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na matesax
David Dostal:2.6.2013 19:03

Díky. Já jsem palindromy měl takto:

Regex palindrom = new Regex(@"\b(?<a>\w)+\w?(?<-a>\k<a>)+(?(a)(?!))\b");

(nešlo mi o počet znaků)

Editováno 2.6.2013 19:04
 
Nahoru Odpovědět
2.6.2013 19:03
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Dostal
Petr Nymsa:2.6.2013 19:18

Hoši, nechcete něco napsat o Regexu ? :)

Nahoru Odpovědět
2.6.2013 19:18
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na Petr Nymsa
David Dostal:2.6.2013 19:21

Před prázdninami asi ne, jinak by to neměl být problém. Kdyžtak se připomeň.

 
Nahoru Odpovědět
2.6.2013 19:21
Avatar
johny4300
Člen
Avatar
johny4300:3.6.2013 19:53

Hele, když už je konec soutěže může mi někdo říct jaký je regulární výraz pro palindrom?

 
Nahoru Odpovědět
3.6.2013 19:53
Avatar
Odpovídá na matesax
Luboš Běhounek Satik:3.6.2013 20:05

jeste by se to dalo trosku zkratit vyhozenim string[]a

Nahoru Odpovědět
3.6.2013 20:05
https://www.facebook.com/peasantsandcastles/
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
matesax:3.6.2013 20:07

A jak bych načetl soubor pro parsování??? :)

 
Nahoru Odpovědět
3.6.2013 20:07
Avatar
matesax
Tvůrce
Avatar
Odpovídá na johny4300
matesax:3.6.2013 20:09

Žádný - nebo mi to alespoň přijde nereálné - já to udělal přes LINQ:

b.Length>1&&b.SequenceEqual(b.Reverse())

Zdroják jsem poslal - proč si jej neprohlédneš?

 
Nahoru Odpovědět
3.6.2013 20:09
Avatar
Odpovídá na matesax
Michal Žůrek - misaz:3.6.2013 20:14

Když jsme zkoušel taky jsem použil toto.

Jenomže proti tobě jsem neměl šanci.

 
Nahoru Odpovědět
3.6.2013 20:14
Avatar
Odpovídá na matesax
Luboš Běhounek Satik:3.6.2013 20:43

Zadat ho napevno, usetril bys 4 znaky (v zadani bylo vstup.txt) :D

Editováno 3.6.2013 20:44
Nahoru Odpovědět
3.6.2013 20:43
https://www.facebook.com/peasantsandcastles/
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 112 zpráv z 112.