Сраный Сбер от которого пахнет могилами как и от значительной части его вкладчиц поверил в себя и теперь ищет лучших из лучших, наивно полагая, что кому-то эта срань сдалась:
Напишите, пожалуйста, программу на любом языке программирования, которая поместит + (2+3), - (3-2), или ничего ( ) в промежутках между цифрами от 9 до 0 (в таком порядке) так, чтобы в результате получилось 200. Например: 98+76-5+43-2-10=200.
Кто хочет себя испытать в решении тру-задач для формошлепов (которые в работе применяются не реже чем никогда)?
Ну и как полагается решение:
Показать все что скрыто
from itertools import product
# Целевая сумма
target = 200
# Цифры от 9 до 0
digits = '9876543210'
# Все возможные комбинации из '+', '-', и пустой строки
operators = ['+', '-', '']
combinations = product(operators, repeat=len(digits)-1)
# Функция для создания выражения из комбинации операторов
def create_expression(digits, ops):
expr = digits[0]
for d, op in zip(digits[1:], ops):
expr += op + d
return expr
# Проход по всем комбинациям и проверка результата
for ops in combinations:
expr = create_expression(digits, ops)
try:
if eval(expr) == target:
print(f'{expr} = {target}')
except ZeroDivisionError:
continue
Какой язык победит в сией битве? На каком решение будем самым коротким и лаконичным?
Тема посвещается памяти @kompspec’а, нашедшего работу за 20 рублей в час, и поэтому прекратившему посещать сий сайт. Любим пони, скайрим.