|
|
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Условия игры — даны 4 произвольных цифры Цель игры — с помощью арифметических операций получить из них число 24 Например: даны 1,2,3,4: 1*2*3*4=24 Как реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2011, 19:32 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
А при чём здесь дотнет? Перенесём. Модератор: Тема перенесена из форума "WinForms, .Net Framework". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2011, 21:56 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
LjAPbУсловия игры — даны 4 произвольных цифры Цель игры — с помощью арифметических операций получить из них число 24 Например: даны 1,2,3,4: 1*2*3*4=24корованы можно будет грабить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2011, 22:00 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
LjAPbКак реализовать?В смысле, программно искать решение? Неплохо бы уточнить условия - какие операции допустимы, можно ли использовать скобки, фиксирован ли порядок цифр, можно ли из 2х цифр создать 2-значное число и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2011, 23:39 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, Вообще-то я размышляю над алгоритмом следующей программы: Вводится 6-значное число (номер троллейбусного билета), затем программа расставляет между цифрами знаки "+", "-", "*", "/", "(", ")", и "", чтобы получилось число 100, показывая все возможные варианты. Числа могут быть и двухзначные и трехзначные и, может быть, четырехзначные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2011, 23:49 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Для такой задачи, мне кажется, подошло бы использование генетических алгоритмов. Сначала случайным образом генерируется популяция, например из 30 особей. Т.е. вы случайным образом расставляете операции между числами. Потом в цикле пока не найдем решение: { - оценивается живучесть или близость к правильному решению каждой особи (рассчитывается значение фитнес-функции). - используется метод отбора особей для дальнейшей работы, например элитный метод, т.е. выбираете штук 15 наиболее приспособленных особей. - производится кроссовер (скажем, 2-х точечный) и скрещивание особей - с некоторой вероятностью (пусть будет 10%) какие-то особи могут мутировать, т.е. одна из арифметических операций изменяется случайным образом. } В целом, ГА - универсальный метод, в интернете много информации по нему. Попробуйте, если интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 08:28 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Дональдак, Зачем стрелять из пушки по воробьям? Для 6 цифр можно просто выполнить перебор. Грубо: 5 промежутков, в каждом или арифметическое действие, или "действие" склейки цифр (да, его можно использовать только до арифметики, но для оценки сверху забудем об этом), 5! вариантов выбора порядка этих действий. Итого 5:5*5!=375000 вариантов. Реально ещё меньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 09:56 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Т.е. между двумя цифрами может быть два "оператора", например 5*(6 или даже три, а то и четыре! А открывающая скобка должна иметь закрывающую. Вложенность скобок допустима Например, 1+((2+3)*(4+5)+6) Т.е. перебор тут не совсем тривиален ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 10:00 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, Перебираем порядок выполнения этих 5 операций (те самые 5! в формуле), потом уже ставим в выражении скобки, чтобы они реально выполнялись в этом порядке. То есть при самом переборе никакие скобки не ставятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 10:09 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
tempestadeptEdd.Dragon, Перебираем порядок выполнения этих 5 операций (те самые 5! в формуле), потом уже ставим в выражении скобки, чтобы они реально выполнялись в этом порядке. То есть при самом переборе никакие скобки не ставятся. Нет, скобки могут быть как для обеспечения порядка так и для его изменения. Написал же пример: 1+((2+3)*(4+5)+6) никакого "попорядку" тут нет Т.е. перебираем расстановку операций А потом для каждой перестановки еще перебираем различные конфигурации скобок, проще говоря, перебираем все варианты последовательности применения операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 10:26 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Как посчитать ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 11:06 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
LjAPb Код: plaintext 1. Как посчитать ответ? Если от строкового представления нельзя уйти, то придется парсить исходную строку. Читайте про обратную польскую нотацию, если вы будете использовать скобки, или найдите что-нибудь готовое. На всякий случай, если вы не используете скобок, тригонометрических функций и прочего, то легко можно посчитать за 1 проход по строке. В свое время сталкивался с такой задачей, но для C++, примеров было куча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 11:20 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Edd.DragonТ.е. перебираем расстановку операций А потом для каждой перестановки еще перебираем различные конфигурации скобок, проще говоря, перебираем все варианты последовательности применения операций. Я сказал ровно то же самое. Под "потом ставим скобки" я имею в виду их расстановку перед выводом выражения. Считать скобки его элементами при переборе неразумно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 11:42 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
ДональдакLjAPb Код: plaintext 1. Как посчитать ответ? Если от строкового представления нельзя уйти, то придется парсить исходную строку. Читайте про обратную польскую нотацию, если вы будете использовать скобки, или найдите что-нибудь готовое. На всякий случай, если вы не используете скобок, тригонометрических функций и прочего, то легко можно посчитать за 1 проход по строке. В свое время сталкивался с такой задачей, но для C++, примеров было куча. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 12:01 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
LjAPb Код: plaintext 1. Как посчитать ответ? У тебя изначально строки не было. Были цифры 123456, между которыми ты добавил те или иные операции. Т.е. без парсинга строки ты знаешь, какие операции добавил - их и выполняй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 12:05 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
tempestadeptДональдак, Зачем стрелять из пушки по воробьям? Для 6 цифр можно просто выполнить перебор. Грубо: 5 промежутков, в каждом или арифметическое действие, или "действие" склейки цифр (да, его можно использовать только до арифметики, но для оценки сверху забудем об этом), 5! вариантов выбора порядка этих действий. Итого 5:5*5!=375000 вариантов. Реально ещё меньше Если без скобок, то 5^5=3125 вариантов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 15:18 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
Все возможные комбинации без скобок нашел. Как расставить скобки? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 17:27 |
|
||
|
Игра 24
|
|||
|---|---|---|---|
|
#18+
И расчет, исключая деление на 0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2011, 23:28 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37157157&tid=1343093]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 595ms |

| 0 / 0 |
