|
3 / 3 / 0
Регистрация: 23.08.2021
Сообщений: 71
|
|
Вывести все возможные варианты результата и их вероятности23.08.2021, 18:46. Показов 29038. Ответов 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
|
|
|
1190 / 766 / 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
|
|
|
1190 / 766 / 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
Вывести все возможные варианты разреза трубы Вывести все возможные варианты хода конем Вывести на экран все возможные варианты покупок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|