|
3 / 3 / 0
Регистрация: 23.08.2021
Сообщений: 71
|
|
Вывести все возможные варианты результата и их вероятности23.08.2021, 18:46. Показов 28637. Ответов 65
Метки нет (Все метки)
По пятницам мы часто играем в популярную ролевую игру "Релиз до выходных" с коллегами. Правила этой игры довольно сложны и предполагают хорошую стратегию и планирование. Чтобы иметь представление о последствиях тех или иных ходов, часто хочется понимать, насколько вероятен тот или иной исход ситуации, с учетом разных вариантов выпадения игральных костей.
Необходимо написать программу, которая сможет, приняв на вход последовательность операндов и операций, вывести все возможные варианты результата и их вероятности. Выражение на входе может содержать скобки, и следующие операторы в порядке уменьшения их приоритета: * – умножение + и - – сложение и вычитание > - левый операнд больше, чем правый. Результат равен 1, если истинно, и 0 - если ложно В качестве операндов могут выступать: n - целые положительные числа, либо 0 (0≤n≤100 000) dn - результат броска игральной кости, где n целое положительное число, количество граней (1≤n≤100 000). Результатом будет равномерное распределение вероятностей между всеми гранями (от 1 до n). Входные данные (поступают в стандартный поток ввода) Одна строка без пробелов, содержащая выражение для вычисления. Выражение гарантировано вычисляемое и не содержит синтаксических ошибок. Максимальная длина строки 200 символов. Выходные данные (ожидаются в стандартном потоке вывода) Одна или несколько строк, в каждой из которых есть два числа, разделенных пробелом: 1. целое – один из вариантов результата 2. вещественное - процент вероятности такого варианта с математическим округлением до 2 знаков и разделителем . Строки на выходе должны быть отсортированы от меньшего результата к большему. Примечание к округлению - в связи с округлением вероятностей - суммарная вероятность всех исходов может быть не равна 100%, это нормально, компенсировать это в решении не нужно.
1
|
|
| 23.08.2021, 18:46 | |
|
Ответы с готовыми решениями:
65
Вывести все возможные варианты значений Вывести все возможные варианты перестановок от 1 до n |
|
0 / 0 / 0
Регистрация: 02.09.2021
Сообщений: 1
|
||||||
| 02.09.2021, 21:56 | ||||||
|
Добрый день. Есть у кого-нибудь продвижения в решении? Попробовал по совету FedorPup https://habr.com/ru/post/273253/ переопределить eval, предварительно дополнив операторами сравнения, но результат тот же.Я не программист, уже просто интересно решить эту задачку)
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.01.2021
Сообщений: 2
|
||||||
| 02.09.2021, 23:52 | ||||||
|
Всем доброго времени суток, такое дело, что у меня тоже есть решение, которое проваливается на закрытых тестах, выдает, что ответ неверен, где прокололся в решении не получается найти.
Для данной строки, что подается на вход, тоже выдается неправильный ответ: 1 1.00, хотя должен быть 0 71.43 1 28.57 Буду благодарен, за совет)
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.01.2021
Сообщений: 2
|
|
| 03.09.2021, 13:00 | |
|
Упс, случайно написал еще одно сообщение)
0
|
|
|
3 / 3 / 0
Регистрация: 02.09.2021
Сообщений: 7
|
|
| 04.09.2021, 06:09 | |
|
Pupupu13, в вашем коде отрицательные числа некорректно обрабатываются. Попробуйте, к примеру, выражение "-1>0"
0
|
|
|
0 / 0 / 0
Регистрация: 04.09.2021
Сообщений: 2
|
||||||
| 04.09.2021, 17:57 | ||||||
|
Просмотрел коды всех участников. Некоторые довел до правильного результата, например вот этот:
'd100+d100+d100+d100'. Работаем дальше)
0
|
||||||
|
3 / 3 / 0
Регистрация: 02.09.2021
Сообщений: 7
|
|
| 04.09.2021, 20:49 | |
|
Народ, у кого решение не принимает, проверьте выражение "4>3>2", правильный ответ 0 100.00
0
|
|
|
0 / 0 / 0
Регистрация: 04.09.2021
Сообщений: 2
|
|
| 04.09.2021, 21:56 | |
|
eaa, мой компьютер падает, пытаясь это посчитать (то есть перегрузка по времени и по памяти).
Добавлено через 7 минут Мне это говорит о том, что выбраны не правильные алгоритм. Думаю, что ответ нужно искать в этом направлении: Например: dx + dy + ... + dz, (последовательность, где n - элементов) выдаст x+y+...+z - (n-1) результатов от n до x+y+...+z Пока не понял, как в этом случае распределяются вероятности...
0
|
|
|
0 / 0 / 0
Регистрация: 05.09.2021
Сообщений: 1
|
|
| 05.09.2021, 08:36 | |
|
Einsamkeit, После исправления прошло решение или нет?
0
|
|
|
3 / 3 / 0
Регистрация: 02.09.2021
Сообщений: 7
|
|
| 05.09.2021, 08:59 | |
|
ydf, да, решение принято. Дело оказалось не в скорости работы, а в eval и его работе с операторами сравнения.
3
|
|
|
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
|
|
| 05.09.2021, 16:26 | |
|
Это отличное наблюдение, и да, тесты валяться именно из-за этого, но по какой логике? eval() работает именно так, как положено ЯП, первое выражение имеет приоритет, все остальные вычисляются справа - налево, в случае если отсутствует очевидный приоритет в виде отличного правила, называется скобки.
Синтаксически правильно оно пишется так, в зависимости от того, какой результат ожидается: 4>(3>2) (4>3)>2 В кейсе я вижу следующее: 1. Выражение гарантировано вычисляемое и не содержит синтаксических ошибок И не вижу: 2. В случае наличия более чем одного оператора сравнения, приоритет вычисления должен быть слева - направо. Во всех остальных случаях мы имеем кота шредингера, который либо 1 либо 0 на выбор создателей кейса. Почему тогда вычисляем слева - направо, может я тут хочу начать с середины? d50>4>3>2>1>0>1>2>3>4>d50 Добавлено через 33 минуты Добавлю пруфов, без eval(), чтобы у новичков не было ощущения, что это поведение данной функции. 1. print(int(4 > 3 > 2), int((4 > 3) > 2), int(4 > (3 > 2)), sep='\n') 2. https://docs.python.org/3/refe... tion-order Поэтому даже голый Py интерпретирует подобное выражение: 5 > 4 > 3 > 2 > 1 5 > (4 > (3 > (2 > 1))) 5 > (4 > (3 > 1)) 5 > (4 > 1) 5 > 1 1 И так должно быть всегда, в случае если заказчиком прямо не заявлено обратное )))
0
|
|
|
4 / 4 / 0
Регистрация: 05.09.2021
Сообщений: 4
|
|
| 05.09.2021, 17:07 | |
|
Питон интерпретирует цепочку сравнения как цепочку булевых операций объединенных логическим "и":
x < y <= z is equivalent to x < y and y <= z REF Такая вот подковырка, но структура задачи вербально предполагает DIY парсинг без eval плюшек, а в таком варианте нативна С-подобная интерпретация.
0
|
|
|
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
|
|
| 05.09.2021, 17:15 | |
|
Какая разница, что подразумевает задача, если она нарушает логику ЯП.
А так, да, можно самодельные 2 + 2 = 5 написать, и доказать что это фича такая.
0
|
|
|
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 3
|
|
| 07.09.2021, 11:25 | |
|
Всем доброго дня.
Разъясните пожалуйста условия задачи. Как из d4+(d6>2) получается это: 1 8.33 2 25.00 3 25.00 4 25.00 5 16.67
0
|
|
|
4 / 4 / 0
Регистрация: 05.09.2021
Сообщений: 4
|
||||||
| 07.09.2021, 13:44 | ||||||
|
вот так:
0
|
||||||
|
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 3
|
|
| 07.09.2021, 14:11 | |
|
Правильно ли понимаю, что
вместо d4 и d6 при вычислении подставляются значение от 1 до 4 и от 1 до 6 соответственно. Далее перебрать все комбинации этих значений (d), подставить в формулу и вычислить выражение. Далее посчитать сколько в процентах встречается каждый результат вычисления выражения? Добавлено через 8 минут Да, действительно есть чат, спасибо, не заметил. Закинул вопрос туда, посмотрим что ответят.
0
|
|
|
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 3
|
|
| 07.09.2021, 14:17 | |
|
Конечно же прочитал. Но тут обсуждение решения, а вот разжевывания условий нет. А мне как раз условия и не понятны, что вообще нужно посчитать.
1
|
|
| 07.09.2021, 14:17 | |
|
Помогаю со студенческими работами здесь
60
Вывести все возможные варианты разреза трубы Вывести все возможные варианты хода конем Вывести на экран все возможные варианты покупок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|