![]() |
|
|
![]()
|
|
| pigmanspb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.4.2011 Репутация: нет Всего: нет |
Здравствуйте!
Который день не могу родить решение переборной задачи. Суть ее такова: есть числа от 1 до 5 (пока что), есть арифметические знаки - "+", "-", "*" и скобочки "(", ")". Нужно сгенерировать всевозможные комбинации расстановки скобочек и знаков, т.е. к примеру (1 + (2 - (3 * (4 + 5)))) или (1+((2*3)-(4+5))) - да, вариантов здесь множество. Для пяти цифр, например, это количество K = 14 всех бинарных деревьев разбора выражения умноженные на количество размещений с повторениями трех знаков по четырем местам (между 1 и 5 четыре арифм. операции). Итого, получаем 14*3^4 = 1134. Прошу помощи в генерации всевозможных выражений с парами скобок, которые будут являться бинарными деревьями со арифметическими операциями в узлах и цифрами в листьях. Это сообщение отредактировал(а) pigmanspb - 10.11.2011, 03:57 |
|||
|
||||
| Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Например так, на list comprehensions с явным протягиванием состояния:
[(x, y) | x <- a, y <- b] по сути даёт декартово произведение a и b. Остальное, надеюсь, очевидно. Для трёх листьев:
Проверка:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
![]()
|
| Правила форума «Функциональные языки: общие вопросы» | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |