powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обобщение правильных скобочных последовательностей
7 сообщений из 7, страница 1 из 1
Обобщение правильных скобочных последовательностей
    #36229544
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для символов L[1],L[2],...,L[K],R[1],R[2],...,R[K] строка считается правильной, если:
1. она пустая
2. может быть построена по правилам:
2.1. если S - правильная строка, то L[i]+S+R[i] - правильная
2.1. если S1, S2 - правильные строки, то S1+S2 - правильная

Требуется:
1. Для произвольной строки определить, что она правильная
2. Для числа N определить число правильных строк длины 2*N

С уважением, Naf
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36229931
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну все, первая решена через стек, вторая найдена в википедии
С уважением, Naf
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36230372
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nafну все, первая решена через стек, вторая найдена в википедии
С уважением, Naf

spoj насилуете?
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36230461
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
import Text.ParserCombinators.Parsec
import Control.Monad
import Data.List

left = "([{"   -- |список левых скобок
right = ")]}"  -- |список правых скобок

check = (do
    l <- oneOf left
    check
    r <- oneOf right
    when (elemIndex l left /= elemIndex r right) $ fail ""
    check)
  <|> return ()

isRightString s =
    case parse (check>>(char '\n')) "" (s ++ "\n") of
        Left _ -> False
        Right _ -> True

2: не понял, N -- это число скобок?
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36230589
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта. К чему я про spoj завел разговор: http://www.spoj.pl/problems/FOOL/
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36230715
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAndrew1:
Код: plaintext
1.
import Text.ParserCombinators.Parsec


Сильно! Вот как надо работать со строками, без монады не разберешься!

а нельзя как-нибудь типа:

Код: plaintext
1.
2.
isGood "" = true
isGood x:xs = ((elemIndex x left) ==  (elemIndex (lastChar xs) right)) and (isGood (middlePartOf xs))
...
Рейтинг: 0 / 0
Обобщение правильных скобочных последовательностей
    #36230787
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belugin
Код: plaintext
1.
2.
isGood "" = true
isGood x:xs = ((elemIndex x left) ==  (elemIndex (lastChar xs) right)) and (isGood (middlePartOf xs))

Вряд ли. Кроме того, что lastChar тяжелая функция, которую ленивость не спасет, так еще
Код: plaintext
isGood "{[]}()" = False
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обобщение правильных скобочных последовательностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]