|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Есть колода карт с числами, идеальный расклад 6 карт: 10,9,8,7,6,5 Брать можно только столько, сколько сбросили карт. Предположим что выпало ,9,8,7,6,5,4 тогда надо сбросить 4 чтобы взять 10 Если выпало 10,9, ,7,6, ,4,3 тогда надо сбросить 4,3 чтобы взять 8,5 Усложняем, если выпало 10,9, ,7,6, , ,4 тогда надо сбросить 6,4 чтобы взять 8,5 Если выпало 10, ,8, ,6, , ,4 тогда надо сбросить 6,4 чтобы взять только 9,7 Путаюсь все время, помогите составить алгоритм. язык не важен, какой удобнее PHP, Perl, Python ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 09:18 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Отсортировать набор (массив) и сбрасывать самые мелкие. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 11:37 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
как бы понятно, но путает то что идеально должно быть 6 карт, но по факту в раздаче может прийти и 3 и 2 и 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 11:56 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Ну так сколько пришло в раздаче, столько мелких и сбрасывай. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 13:15 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Нет, наверное вы не поняли. Например в первом примере пришло 6 карт, а надо сбросить одну. А в последнем примере, а сбросить надо 2, причем одна из них не мелкая. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 13:23 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Получается примерно так: [10,9,8,7,6,5,4,3,2,1] - это все возможные карты - 10 цифр в массиве [0, 1, 1,0,0,1,1,1,1,0] - массив boolean, которые свидетельствуют, есть карта в изначальном твоем раскладе или нет (например для расклада [9,8,5,4,3,2]) Пробегаемся по массиву boolean - смотрим, что нам нужно - получаем [10,7,6] и 3 карты для сброса (все, что выше 5 и нет в изначальном раскладе). Пробегаемся по массиву boolean в другую сторону (от нижших цифр к высшим) и сбрасываем 3 карты из имеющегося набора - сбрасываем [4,3,2]. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 14:06 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, И да, кто и как определяет, сколько пришло карт? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 14:07 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Предположим что выпало ,9,8,7,6,5,4 тогда надо сбросить 4 чтобы взять 10 [011111 1000] Если выпало 10,9, ,7,6, ,4,3 тогда надо сбросить 4,3 чтобы взять 8,5 [110110 1100] Усложняем, если выпало 10,9, ,7,6, ,4 тогда надо сбросить 6,4 чтобы взять 8,5 [110110 1000] - тут нашел ошибку, глупо скидывать 6. UPD. Усложняем, если выпало 10,9, ,7,6, ,4 тогда надо сбросить 4 чтобы взять 8 Если выпало 10, ,8, ,6, ,4 тогда надо сбросить 6,4 чтобы взять только 9,7 [101010 1000] В последнем примере выше 4-х не хватает 3-х карт, но по факту нам надо скинуть только 2. ВОТ как это вычислить? ps. сколько пришло карт определяет случай =) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:15 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Берем твой последний пример - первоначальный набор - 4 карты. Из первых 4 карт - 2 пропуска (в полном раскладе от 10 до 1). Т.е. нужно сбросить 2 карты. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:29 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Т.е. ты знаешь сколько карт всего и сколько пропусков старших - число пропусков и есть сколько нужно скинуть. Берем самый плохой случай: [10 .. 1] [0000001111] - [4,3,2,1] - начальный набор. Т.к. у тебя все старшие карты пропущены, по получается, что тебе нужно сбросить все карты. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:34 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Опять же, условие не работает. Если брать выше 4, то по вашей логике в последнем примере надо 3 карты, а не 2 Предположим что мы берем выше 4,перебираем вверх до булевой 1 и после считаем нули, тогда да, есть 2 нуля. Но тогда мы не совпадаем со вторым примером: Если выпало 10,9, ,7,6, ,4,3 тогда надо сбросить 4,3 чтобы взять 8,5 [110110 1100] ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:36 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnikОпять же, условие не работает. Если брать выше 4, то по вашей логике в последнем примере надо 3 карты, а не 2 Предположим что мы берем выше 4,перебираем вверх до булевой 1 и после считаем нули, тогда да, есть 2 нуля. Но тогда мы не совпадаем со вторым примером: Если выпало 10,9, ,7,6, ,4,3 тогда надо сбросить 4,3 чтобы взять 8,5 [110110 1100] 1) Мы знаем сколько у нас карт всего (N = в примере 6). 2) Мы проходим по массиву от 10 до N (10 - самое первое значение) и проверяем, есть такая карта в наборе или нет. Если нет - увеличиваем счетчик пропусков. 3) Сбрасываем столько карт, сколько у нас получилось пропусков. Если число пропусков = N (все карты пропущены) - сбрасываем все карты. Собственно все :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:43 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
да, похоже вы правы. осталось запрограммировать как то. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 17:18 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Код: php 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 17:54 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
yarnik, Если $cardForDrop - пустой, то ничего не сбрасываем, у нас максимальная комбинация уже при раздаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 17:56 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
$cardOnHand=array(10,9,7,6,4); Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
=) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 18:48 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
тоже самое на перле, и работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 19:07 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Благодарю за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 19:09 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Еще улучшил, теперь без маски Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 01:10 |
|
[PHP, Perl, Python] Интересная задачка, нужен алгоритм
|
|||
---|---|---|---|
#18+
Продолжаем улучшать =) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 01:18 |
|
|
start [/forum/topic.php?fid=23&msg=39669354&tid=1460244]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 452ms |
0 / 0 |