|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmk, просто и со вкусом =) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 14:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmkПопробую предложить. Каждый выключатель во включенном состоянии имеет свой вес: 1,2,3...40; если выключен: вес равен 0. Остаток от деления суммы весов переключателей на 8 и будет искомая комната. Полагаю, достаточно будет включить или выключить 1 из переключателей, чтобы условие выполнилось. пусть включены следующие выключатели [3, 4, 11, 19, 27, 35] ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 15:08 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmkПопробую предложить. Каждый выключатель во включенном состоянии имеет свой вес: 1,2,3...40; если выключен: вес равен 0. Остаток от деления суммы весов переключателей на 8 и будет искомая комната. Полагаю, достаточно будет включить или выключить 1 из переключателей, чтобы условие выполнилось. пусть включены следующие выключатели [3, 4, 11, 19, 27, 35] шпион в комнате номер 6 ваши действия? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 15:10 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblab, очевидно: включить 37 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 15:20 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmk, sum( [3, 4, 11, 19, 27, 35, 37] ) = 136 136 % 8 = 0 0: соответствует комнате номер 8 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 15:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabвключены следующие выключатели [3, 4, 11, 19, 27, 35] шпион в комнате номер 6 ваши действия? Значимыми считаем первые 7 тумблеров. Остальные игнорируем. Текущая сумма 3+4=7. Требуется получить сумму, которая при делении на 8 даст в остатке 6. Ближайшие такие суммы - 6 и 14. 6 получить одним переключением нельзя. 14 - можно (3+4+7). Наши действия - включить тумблер 7. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 15:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabhclubmkПопробую предложить. Каждый выключатель во включенном состоянии имеет свой вес: 1,2,3...40; если выключен: вес равен 0. Остаток от деления суммы весов переключателей на 8 и будет искомая комната. Полагаю, достаточно будет включить или выключить 1 из переключателей, чтобы условие выполнилось. пусть включены следующие выключатели [3, 4, 11, 19, 27, 35] шпион в комнате номер 6 ваши действия? Предлагаю слегка модифициривать алгоритм: брать не по модулю 8, а по модулю 9 (чтоб 40 нацело не делился на модуль). Ну и результататы, к примеру 0 и 8 считать равными Ну и соответственно изменять переключатель так, чтобы верной была сумма по модулю: let test = [3;4;11;19;27;35];; (List.fold Acc 0 test)%9;; > val it : int = 0 let test = [3;4;6;11;19;27;35];; (List.fold Acc 0 test)%9;; > val it : int = 6 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:01 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Akina, текущая конфигурация [3, 4, 11, 19, 27, 35] если использовать алгоритм hclubmk и включить выключатель 7, то в сумме получим 106 106 % 8 = 2, что соответствует комнате номер 2 если ваш алгоритм отличается (пусть незначительно), то опишите его, и тогда подумаем над новой конфигурацией и действиями ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:18 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
соотвественно, когда мы делаем аналогичную подставу с mod 9 let Acc acc i = acc + i;; let test = [3;5;12;21;30;39];; (List.fold Acc 0 test)%9;; оно отрабатывает корректно let Acc acc i = acc + i;; let test = [3;5;12;13 ;21;30;39];; (List.fold Acc 0 test)%9;; ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Apoj_sql, я подумаю, где-то вечером отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:22 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabесли ваш алгоритм отличается (пусть незначительно), то опишите его, Не отличается по сути, отличается в деталях. Все отличия описаны в решении. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:38 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Akina, Это не очевидно, что ваш алгоритм (перебор?) всегда найдет решение. Можете доказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:45 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
AkinaЗначимыми считаем первые 7 тумблеров. Остальные игнорируем. Боюсь, при раскладке [4,5,6,7] комнату 4 при ограниченности в первые 7 тумблеров, указать не получится, увы. 7 тумблеров - это минимально-необходимое, но недостаточное условие. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 16:54 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmkпри раскладке [4,5,6,7] комнату 4 при ограниченности в первые 7 тумблеров, указать не получится Верно. Это относится к любому случаю, когда бинарная чётность комнаты и текущей суммы равны, но текущая сумма не равна нужной комнате. Думаю, этих соображений достаточно, чтобы сформулировать решение... если нет - попробуйте построить все возможные варианты для произвольной текущей суммы на числовой прямой. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:04 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
PS. У меня получается, что потребуется задействовать 8 тумблеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:05 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Akina, я не постесняюсь задать вопрос, аналогично заданного мне mini.weblab, при неизменности алгоритма и ограниченности 8-ю тумблерами: пусть включены следующие выключатели [4,5,6,7] шпион в комнате номер 4 ваши действия? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
hclubmkпри неизменности алгоритма и ограниченности 8-ю тумблерами Когда нарисуешь, поймёшь, что алгоритм нужно доработать... ибо все точки, если выбросить исходную, отличаются на 2, а не на 1. Кстати, это не только укажет на то, что нужно 8 тумблеров, но и то, что можно модифицировать исходное условие и ввести дополнительное (хотя оно и излишнее) требование, что один тумблер перещёлкивается обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:39 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Ну и соответственно делить надо на 16, а не на 8... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:40 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Так что я должен понять? Что алгоритм нужно доработать? Это мне понятно. Я пытался понять ход твоего решения, и исходя из частного (приведенного) случая, узнать число. Ну да ладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 17:51 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
AkinaЗначимыми считаем первые 7 тумблеров. Остальные игнорируем. Текущая сумма 3+4=7. Требуется получить сумму, которая при делении на 8 даст в остатке 6. Ближайшие такие суммы - 6 и 14. 6 получить одним переключением нельзя. 14 - можно (3+4+7). Наши действия - включить тумблер 7. Все выключены, надо задать комнату 8 Включен 1-й, надо задать комнату 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 18:01 |
|
из тестового задания
|
|||
---|---|---|---|
#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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.
Тупо генерит все варианты и проверяет что из каждого можно получить все 8 комнат одним переключением. Алгоритм в методе algo(), менять только его. SWITCH_COUNT - кол-во переключателей. 40 это очень долго 10^13 вариантов. Тестил на 30. Формула SUM % N не работает при N от 9 до 13, дальше не тестил. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 18:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Думаю надо для начала задачу упростить: Две комнаты кодируются одним выключателем. Три уже проблема. Надо сначала решать с 3 комнатами. Или с 4 (т.к. степень двойки как и 8). Затем тот же алгоритм применить на 8. Для 3-х у меня уже ничего не придумывается Код: 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Если кто будет запускать: добавил кол-во комнат (ROOM_COUNT) PS Aleksandr Sharahov, заглянул под спойлер, понятнее не стало. PPS Это какая-то олимпиадная задачка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 19:26 |
|
|
start [/forum/topic.php?fid=16&startmsg=39149723&tid=1339609]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 439ms |
0 / 0 |