|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема
|
Задачка за регулярен израз
|
|
Автор | Пиprиш (Нерегистриран) |
Публикувано | 07.03.04 16:13 |
|
Ето ви една леко гадна задачка - да се напише рег. израз, който определя, дали един низ се състои от четен брой 0 и четен брой 1.
| |
Тема
|
Re: Задачка за регулярен израз
[re: Пиprиш]
|
|
Автор | u3pyT (Нерегистриран) |
Публикувано | 07.03.04 18:44 |
|
ake mi kaje6 kakvo ima6 predvid s regulqren moje i da q napisha taq zada4a!
| |
Тема
|
Re: Задачка за регулярен израз
[re: Пиprиш]
|
|
Автор |
Labrett (трън) |
Публикувано | 07.03.04 18:46 |
|
Тази задачка ми хареса :)
Ето ти я на python:
import re
str = '101001010100 ...'
pattern = r'(?:.*[^01].*)|0'
tup = re.subn(pattern, '', str)
if (tup[1] > 1) and (!(tup[1]%2)) and (!(len(tup[0]) % 2)):
-> отговаря
else:
-> не отговаря
Пояснявам какво прави - r'(?:.*[^01].*)|0' ще match-не целия стринг ако в него има други неща освен нули и единици, в противен случай ще match-ва нулите.
subn() замества всеки match в стринга със стринг, посочен като втори параметър, в случая - празен стринг. Връща tupple, в който първият член е получаващият се стринг (само единици, които можем да видим дали са четен брой), а вторият - броя замествания, които също проверяваме за четност. В случай, че в стринга е имало нещо друго освен нули и единици, резултатът е ('', 1) и проверката също fail-ва.
______________
Ако искаш изненада, защо просто не се влюбиш?Редактирано от Labrett на 07.03.04 18:52.
| |
Тема
|
Re: Задачка за регулярен израз
[re: Labrett]
|
|
Автор | Пиprиш (Нерегистриран) |
Публикувано | 07.03.04 20:07 |
|
Идеята е само с един регулярен израз без да броиш нули и единици :)
| |
Тема
|
Re: Задачка за регулярен израз
[re: Пиprиш]
|
|
Автор | zulum (Нерегистриран) |
Публикувано | 07.03.04 20:13 |
|
neshto ot roda na ((00)*|(11)*), veche go zabravih sintaksisa tochno kyv e..
| |
Тема
|
Re: Задачка за регулярен израз
[re: zulum]
|
|
Автор | zulum (Нерегистриран) |
Публикувано | 07.03.04 20:16 |
|
a ne e tva ne razbrah tochno tva koeto se iska
| |
Тема
|
Re: Задачка за регулярен израз
[re: Пиprиш]
|
|
Автор |
Mylord (()) |
Публикувано | 07.03.04 20:20 |
|
Смея да твърдя, че въпросът ти наистина беше хубав, но има и хора, които мислят :-)
От теоретичната информатика, която принципно трябва да знаем, е известно, че един съвсем обикновен автомат не може да брои. Трябва ни т.нар. Push-Down-Automat.
А по дефиницията за регулярен израз (regular expression) би трябвало този израз да се разпознава от един съвсем обикновен автомат.
Кратикият и точен отговор: регулярният израз, които търсиш можеш да си го намериш в празното множество.
PS: Можеш да зададеш въпроса с Push-Down-Аutomat - да видим дали ще има решение във форума.
PPS: Много съм бъбрив. Извинете ме.
When things are nice I never prefer one to the other.
| |
Тема
|
Re: Задачка за регулярен израз
[re: Mylord]
|
|
Автор | zulum (Нерегистриран) |
Публикувано | 07.03.04 21:06 |
|
Blagodaria za vylnuvashtoto teoritichno prosvetlenie, no vyobshte ne
se iska reg exp-a da broi, a prosto da razpoznava niakakvi izrazi dali
sa edi si kakvo...
| |
Тема
|
Re: Задачка за регулярен израз
[re: Mylord]
|
|
Автор | Пиprиш (Нерегистриран) |
Публикувано | 07.03.04 22:30 |
|
Въпросът ми хрумна точно докато зяпах 'обикновен' краен автомат, който прави това нещо, и се узорих, докато го напиша като рег. израз...
Така че, помисли още ![](http://i.dirbg.com/clubs/icons/cool.gif)
| |
Тема
|
Re: Задачка за регулярен израз
[re: Пиprиш]
|
|
Автор |
Labrett (трън) |
Публикувано | 07.03.04 23:00 |
|
ами той е само един regexp и само веднъж го match-ваме
И само един if има отдолу ;)
______________
Ако искаш изненада, защо просто не се влюбиш?
| |
|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
|
|
|