IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
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ě.

 
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 12 zpráv z 112.