Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 13.01.2022
Сообщений: 4

Задача о расстановке знаков в выражении

13.06.2022, 14:32. Показов 3046. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В выражении '1_2_3_4_5' вместо '_' необходимо поставить знак операции сложения или умножения и расставить скобки так, чтобы значение выражения получилось равным 29.
Написать программу, которая выводит все возможные комбинации для решения этой задачи.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2022, 14:32
Ответы с готовыми решениями:

Найти все варианты размещения знаков арифметических операций на месте вопросительных знаков в выражении
Составить программу, которая бы нашла все варианты размещения знаков арифметических операций +,-,* на месте вопросительных знаков в...

Задача о расстановке коней
Расставить максимальное число белых коней, чтобы они не били друг друга. Шахматная доска размера NxM, на ней имеются черные фигуры....

Задача о расстановке ферзей на доске
С помощью предиката queens 2-х аргументов, найдите все правильные расстановки ферзей на шахматной доске размером , в которых в 1,2,7,8-ой...

1
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
13.06.2022, 17:25
Лучший ответ Сообщение было отмечено wook1e как решение

Решение

wook1e,
Python
1
2
3
4
5
6
7
8
9
10
11
from itertools import product
inp, ops, answ = '1_2_3_4_5', '+*', 29
 
tmpl = list(inp)
for ops in product(ops, repeat=inp.count('_')):
    tmpl[1::2] = ops
    s = ''.join(tmpl)
    if eval(s) == answ:
        print(f"{s}={answ}")
 
# output: 1*2*3*4+5=29
со скобками:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from itertools import permutations, product
inp, ops, answ = '1_2_3_4_5', '+*', 29
 
vals = list(map(int, inp.split('_')))
nops = len(vals) - 1
tmpl = list(inp)
unique = set()
 
# всевозможные сочетания операций
for ops in product(ops, repeat=nops):
    # всевозможные приоритеты этих операций
    for prior in(permutations(range(nops))):
        # алгоритм сортировочной станции
        # ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции
        sout, stack = [], []
        for v, op, p in zip(vals, ops, prior):
            sout.append(v)
            while stack and stack[-1][1] >= p:
                sout.append(stack.pop())
            stack.append((op, p))
        sout.append(vals[-1])
        sout.extend(stack)
 
        # вычисление выражения из инфиксной записи, которая лежит в sout
        # можно вычислять только строку, а математику - eval, тогда код короче будет
        stack = []
        for t in sout:
            if isinstance(t, int):
                stack.append((t, str(t)))
            else:
                y, yv = stack.pop()
                x, xv = stack.pop()
                view = '(' + xv + t[0] + yv + ')'
                if t[0] == '+': stack.append((x+y, view))
                if t[0] == '*': stack.append((x*y, view))
 
        # финальная проверка ответа
        result, view = stack[0]
        if result == answ: 
            unique.add(f'{view} == {result}')
 
print('\n'.join(unique))
# (1*((2*(3*4))+5)) == 29
# (1*(2+(3*(4+5)))) == 29
# (1*(((2*3)*4)+5)) == 29
# ((((1+2)+3)*4)+5) == 29
# ((((1*2)*3)*4)+5) == 29
# (((1*2)*(3*4))+5) == 29
# (((1+2)*3)+(4*5)) == 29
# ((1*((2*3)*4))+5) == 29
# (((1*(2*3))*4)+5) == 29
# ((1*2)+(3*(4+5))) == 29
# (((1+(2+3))*4)+5) == 29
# ((1*(2*(3*4)))+5) == 29
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2022, 17:25
Помогаю со студенческими работами здесь

Задача о расстановке лавочек в парке
Условие Лавочки в парке устроены следующим образом. Несколько одинаковых кубических гранитных блоков ставятся в ряд, а на них кладется...

Задача о расстановке королей на шахматной доске
Здравствуйте. Вообщем есть задача о расстановки королей, чтоб никто не бил друг друга. Аналог знаменитой о 8 ферзях. Я вроде сделал, но...

Задача о расстановке n ферзей на доске n на n: как избавиться от рекурсии?
Помогите упростить данный код. Что бы было все в одной функции #include<iostream> #include <sys/time.h> #include...

Сколько знаков арифметических действий в выражении?
Задано арифметическое выражение, состоящее из цифр, скобок и знаков арифметических действий. Вывести цифры зеленым цветом, а остальные...

Расстановка алгебраических знаков в выражении для сохранения равенства
Вообщем мне старая мысль покоя не дает. :) Дело-то вот в чем. Все знают про детские задачки типа "Дано Х + Х - Х = 10, расставте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru