Re: Скобки
От: leaf  
Дата: 31.01.03 12:46
Оценка: 20 (2)
По сути это задача из задачника Лаврова и Максимовой по мат. логике
(часть 2, параграф 1, задача 2 (страница 52))

-- можно записать и короче, применив функции высшего порядка,
-- но это первое, что пришло в голову.
-- грубо говоря, строка разбивается по знаку '+' (вроде дерева разбора)
-- первый аргумент — конечная часть строки,
-- второй — начальная часть строки.
-- рекурсия по первому аргументу.
-- вызывать так: count "1+-1+1+1"
-- пробелы не допускаются
skobki [] _ = 0
skobki ['1'] [] = 1
skobki ('-':t) [] = skobki t [] + skobki t ['-']
skobki ('+':t) leftpart = skobki t (leftpart ++ ['+']) +
count leftpart * count t
skobki (h:t) leftpart = skobki t (leftpart ++ [h])

count l = skobki l []


Предлагаю народу усложненный вариант задачи: нужно найти её нерекурсивную форму.
Хотя бы только для одной бинарной операции '+' (я уверен, что с двумя операциями
нерекурсивной формы вообще не существует).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.