задачи по программированию на языке Haskell

Бюджет: по договоренности
Здравствуйте!
Сможете решить задачи по программированию на языке Haskell?

две задачи: 
Многие из предложенных в этом задании задач сводятся к полному или частичному перебору большого числа вариантов ответов. Поэтому эффективного решения во многих случаях не получится. Во всех задачах указаны размеры исходных данных, для которых решение должно получаться в режиме интерпретации за "приемлемое" время (как правило, не превышающее минуты). Конечно, чем алгоритм эффективнее, тем лучше. 
1) Строка содержит натуральные числа, разделенные знаками '+', '-', '*', например, "12+23*2". Написать функцию addPars :: String -> String, которая добавляет в строку круглые скобки таким образом, чтобы результат вычисления выражения стал максимальным. Например, для приведенной строки "12+23*2" результатом будет "((12+23)*2)" (с точностью до внешней пары скобок). Порядок выполнения операций в результирующей строке должен определяться только скобками, приоритеты операций не учитываются. Функция должна выдавать результат за приемлемое время для строки, содержащей 10-12 операндов. 
2)Квадратная матрица четного порядка содержит только нули и единицы, причем единиц ровно четверть от общего числа. Назовем матрицу правильной, если при всех четырех возможных положениях матрицы при ее поворотах все ее единицы находятся на разных местах (другими словами, при наложении матрицы в ее четырех позициях друг на друга единицы покроют весь квадрат). Кроме этого "правильная" матрица должна быть такой, что все ее нули "неразрывно связаны", то есть из любого нуля в любой другой можно пройти по пути, состоящему из одних нулей, при этом из каждой клетки на этом пути можно шагнуть на одну из четырех соседних "прилегающих" клеток. Написать функцию checkMatrix :: [[Int]] -> Bool, которая проверяет, является ли матрица "правильной". Так, например, следующая матрица является правильной: 
0 1 1 0 
0 1 0 0 
0 0 0 0 
1 0 0 0 
а следующая матрица – неправильная (соблюдено условие покрытия, но не соблюдено правило неразрывности – верхняя левая клетка не соединена с остальными): 
0 1 0 0 
1 0 1 0 
0 0 0 0 
1 0 0 0
Опубликован 27.11.2015 в 00:06

Выберите способ верификации:

Обновите страницу после прохождения верификации.