|
3 / 3 / 0
Регистрация: 23.08.2021
Сообщений: 71
|
|
Вывести все возможные варианты результата и их вероятности23.08.2021, 18:46. Показов 29215. Ответов 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
|
|
|
1191 / 767 / 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
|
|
|
1191 / 767 / 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 | |
|
Вывести все возможные варианты разреза трубы Вывести все возможные варианты хода конем Вывести на экран все возможные варианты покупок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|