|
из тестового задания
|
|||
---|---|---|---|
#18+
Вы секретный агент, следящий за вражеским шпионом. Вы следуете за шпионом в отель. В отеле 8 комнат, и шпион остановился в одной из этих 8 комнат. Ваша цель передать коллеге-агенту номер комнаты, в которой поселился враг. Коллега прибудет в отель на следующий день после вашего отъезда из отеля. Передать информацию своему коллеге вы можете, переключив один из переключателей на коммутационной доске из 40 переключателей. (Любой переключатель на доске может быть как включен, так и выключен.) Вы заранее договорились с коллегой о методе шифровки. Ни вы, ни ваш коллега, не знаете начальной конфигурации коммутационной доски. Чтобы передать сообщение, вы можете переключить только один из переключателей. Метод должен работать при любой конфигурации коммутационной доски. До момента передачи сообщения, коммутационная доска будет оставаться в том же состоянии, в котором вы ее оставите. предлагайте решения :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2016, 22:28 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Если переключатели это 0 и 1 (два состояния то их всех можно представить как 40 битное число). Например Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Далее необходимо придумать как закодировать целое число и поместить его внуть этого шумящего числа. Поскольку количество комнат кодируется тремя битами (000...111) то нам нужно минимум три переключения. Еще можно догориться что номер комнаы будет указывать переход 0 -> 1 в последовательности 40 бит (его позиция слева или справа) но условие нас ограничивает. Нам нужно минимум два переключения а максимум - ... наверное 8. Можно еще подмуать о каких нибудь свойствах четности если рассматривать переключатели как матрику 5 на 8. Но я пока ничего не придумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 09:39 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblab, а это точно из тестового задания? я угадаю эту мелодию с гораздо меньшего числа нот ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 10:04 |
|
из тестового задания
|
|||
---|---|---|---|
#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. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 11:03 |
|
из тестового задания
|
|||
---|---|---|---|
#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. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 11:24 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, спойлер еще не нажимал. Т.к. интересно подумать. Правильно-ли я понял что автор имел в виду совершенно-случайное положение рубильников на панели? Тоесть секретный агент предварительно ничено не устанавливает а берёт любой произвольный расклад? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:33 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Попадалась как-то похожая задача. То ли тут, то ли на хабре. Но как порешалась - не помню :( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:41 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Для кодирования 8 вариантов должно быть достаточно 8 битов (8 переключателей). А само решение должно базироваться на сетке чётности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:44 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, да, верно. Т.е. когда мы подходим к переключателям, мы видим совершенно случайное их положение. Если положение переключателей уже кодирует нужную нам комнату, то просто уходим. В противном случае изменяем положение ровно одного переключателя и тем самым кодируем нужную комнату. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:45 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, нет ли в этом связи с кодами Хэмминга? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:48 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, я не заметил, правда может плохо смотрел ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:49 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, это действительно одна из задач тестового задания объясните пожалуйста, как работать с вашей табличкой и как вы решали ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Я еще пол-дня подумаю над пятёрками битов а потом загляну под ваш спойлер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, это действительно одна из задач тестового задания объясните пожалуйста, как работать с вашей табличкой и как вы решали В таком случае возникает вопрос относительно адекватности тестирующего. С таблицей все просто. Каждая строка содержит: в первой ячейке - исходное положение переключателей, в остальных результирующее положение для каждого номера комнаты. Как решал - чуть позже, а то другим будет неинтересно. Ну или попробуйте отреверсить таблицу ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:58 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovВ таком случае возникает вопрос относительно адекватности тестирующего. почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblab, ну зачем там так много переключателей? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:14 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Возможно это некая хеш-функция от 40-битного целого которая возвращает нам результат в диапазоне от 1 до 8. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:14 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, это первое, что приходит в голову, второе - забубенить модульную арифметику, но это все из пушки по воробьям, надо ж и голову иметь. С интересом глянул бы на 40-битное решение ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblab, ну зачем там так много переключателей? просто в данной гостинице такая коммутационная доска ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:20 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahovmini.weblab, ну зачем там так много переключателей? просто в данной гостинице такая коммутационная доска Тогда возникает куда более интересная задача: какой максимально возможный номер комнаты она позволяет закодировать? Нормальный тестирующий должен понимать взаимную связь этих чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:26 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Хм... мне в первом приближении мерещится, что для 8 комнат достаточно 11 переключателей. А 40 переключателей могут кодировать 34 комнаты. Для 32 комнат надо 37 тумблеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:38 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Тогда возникает куда более интересная задача: какой максимально возможный номер комнаты она позволяет закодировать? Нормальный тестирующий должен понимать взаимную связь этих чисел. какая связь между максимально возможным номером комнаты и нормальностью тестирующего? очень спорная, тут вам будет сложно что либо доказать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr SharahovТогда возникает куда более интересная задача: какой максимально возможный номер комнаты она позволяет закодировать? Нормальный тестирующий должен понимать взаимную связь этих чисел. какая связь между максимально возможным номером комнаты и нормальностью тестирующего? очень спорная, тут вам будет сложно что либо доказать :) Допустим, вам надо переместиться в соседнюю комнату. В вашем распоряжении самолет, пароход, автомобиль, собственные ноги. Каким средством передвижения воспользуетесь? Утрировано, конечно, но суть отражает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 13:49 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, неочевидно. немного изменим задачу Допустим, вам надо переместиться в соседнюю комнату. В вашем распоряжении самолет, пароход, автомобиль, собственные ноги. Клиент оплатит все дорожные расходы. Каким средством передвижения воспользуетесь? Сколько времени займет перемещение? Утрировано, конечно, но тоже суть отражает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 14:33 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Попробую предложить. Каждый выключатель во включенном состоянии имеет свой вес: 1,2,3...40; если выключен: вес равен 0. Остаток от деления суммы весов переключателей на 8 и будет искомая комната. Полагаю, достаточно будет включить или выключить 1 из переключателей, чтобы условие выполнилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 14:33 |
|
из тестового задания
|
|||
---|---|---|---|
#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 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, на самом деле это чрезвычайно простая задача, даже и не задача вовсе, просто необыкновенно сильно сбивает с толку ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 19:34 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovDima T, на самом деле это чрезвычайно простая задача, даже и не задача вовсе, просто необыкновенно сильно сбивает с толку ) Сбивает непрактичность, т.е. никогда-нигде подобное не требовалось в реале. Мозг закостенел от практики, может утром на свежую голову что-то озарит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 19:44 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TPS Aleksandr Sharahov, заглянул под спойлер, понятнее не стало. PPS Это какая-то олимпиадная задачка. Дима +1 Тоже заглянул под спойлер. Я не понял как была получена таблица и как решать эту задачу. Есть подозрения что условия избыточные (есть отвлекающие н ненужные сведения) или я просто решаю задачу слишком сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 20:06 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
maytonили я просто решаю задачу слишком сложно. Ты (и я) решаем ее по инерции, по привычке, по классическим алгоритмам. А тут алгоритм из серии "оторви и выбрось", он ненужный, никогда в жизни не пригодиться. Я уже писал что помню что попадалась подобная задача с решением, но даже задумываться не стал из-за отсутствия практического применения алгоритма. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 20:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TХЗ как решать, но я проверялку написал Тупо генерит все варианты и проверяет что из каждого можно получить все 8 комнат одним переключением. Алгоритм в методе algo(), менять только его. SWITCH_COUNT - кол-во переключателей. 40 это очень долго 10^13 вариантов. Тестил на 30. Формула SUM % N не работает при N от 9 до 13, дальше не тестил. Ещё бы написали алгоритм проверки алгоритма проверки. Было ж указано, что при mod 9 8 и 0 одно и то же. У Вас я это не увидел при проверке. ЗЫ Мне уныло лезть в c++: 0) надо ставить к студии с++ 1) я "туда" лез последний раз 6 месяцев назад (надо было решать тестовое задание для моего нонешнего работодателя) 2) удовольствия при п.1 не получил и лезть туда без особой нужды нет ни малейшего желания. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 20:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima Tmaytonили я просто решаю задачу слишком сложно. Ты (и я) решаем ее по инерции, по привычке, по классическим алгоритмам. А тут алгоритм из серии "оторви и выбрось", он ненужный, никогда в жизни не пригодиться. Я уже писал что помню что попадалась подобная задача с решением, но даже задумываться не стал из-за отсутствия практического применения алгоритма. Ну даже если перевести ее в плоскость чистой математики. Вам на вход подали целое число. Вам разрешено а нему прибавить или вычесть 2^N (инвертировать любой битик) таким образом чтобы получить число которое дешифровав таблично или через функцию получить от 1 до 8. Честно. Я не знаю. Для меня - это пока задача больше на интерпретацию смыслов. Мне почему-то она напоминает "бесконечный поезд в космосе" или "самолёт взлетающий с транспортёра". И проблема их не в том что они не решаются а в том что их условие с дефектом или неполное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 21:12 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, думал, что только меня одного так поначалу смутили условия, ну тогда точно задача стоит заметки в бложике ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 21:24 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
maytonИ проблема их не в том что они не решаются а в том что их условие с дефектом или неполное. а вот это уже нужно доказывать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 21:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, объясните, пожалуйста, как пользоваться вашей табличкой =) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 21:34 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, объясните, пожалуйста, как пользоваться вашей табличкой =) Закодировать: 1. найти строку с номером, равным текущему состоянию выключателей, например, 42 (или 0101010 в двоичной системе). 2. найти столбец, соответствующий номеру комнаты (в диапазоне 0..7, ты ж программист). 3. новое состояние выключателей установить равным содержимому ячейки на пересечении найденных строки и столбца. Раскодировать: 1. найти в таблице любую ячейку, содержащую наблюдаемое положение переключателей. 2. определить номер комнаты, соответствующий столбцу найденной ячейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 21:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, попробую :) Спасибо! ПС: я задачу решила методом чита, но засомневалась =) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 22:01 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 22:47 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, еще вопрос почему используете 7 переключателей и 8 комнат? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 22:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabПС: я задачу решила методом чита, но засомневалась =) Что за метод чита? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 23:05 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, еще вопрос почему используете 7 переключателей и 8 комнат? Потому, что для 8 комнат необходимо и достаточно 7 переключателей ) И вообще, для 2^N комнат требуется (2^N)-1 переключателей, что как раз и доказывает, что ваш тестирующий не в ладах с двоичной системой ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 23:24 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, а ссылку на результат можно? кстати еще момент, по условию вы жили в одной из комнат, и по идее эту комнату можно было бы исключить mayton, для шифровки используем первые 3 ячейки. если наш агент приходит в гостиницу и комната для него заказана, используем колонку Room booked если наш агент приходит в гостиницу и комната для него предварительно не заказана, используем колонку Room not booked Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
PS: в крайнем случае используем жвачку ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 00:21 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, а ссылку на результат можно? кстати еще момент, по условию вы жили в одной из комнат, и по идее эту комнату можно было бы исключить Ссылку дам, как только напишу заметку в бложик. По идее в той комнате, где я жил, мог жить не только я. А условия можно очистить от шелухи, например: Компьютер генерирует 2 случайных числа: первое - в диапазоне 0..7, второе - в диапазоне 0..127. Необходимо сначала закодировать первое число, а затем по коду восстановить его. В качестве кодов разрешается использовать числа из диапазона 0..127, которые отличаются от второго случайного числа не более чем одним битом. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 00:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov...Потому, что для 8 комнат необходимо и достаточно 7 переключателей ) И вообще, для 2^N комнат требуется (2^N)-1 переключателей,... тут больше комбинаторика кмк. хз. но для 3 комнат достаточно 2 бита 4 комнат достаточно 3 бита и т.д.. так что формула не работает. либо не так написали Вы её. Но ответ похоже правильный во втором топике Вы написали - 7 бит достаточно. (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 00:40 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kolobok0, в каком именно случае (при каком N) формула не работает? Замечание. 2^N означает 2 в степени N. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 00:48 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovв каком именно случае (при каком N) формула не работает? ... вообще-то и формулу у Вас не вижу... опишите где и что Вы подразумеваете? закономерность которую вижу сам: N = K - 1 где K = комнаты N = переключатели. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:03 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kolobok0Aleksandr Sharahovв каком именно случае (при каком N) формула не работает? ... вообще-то и формулу у Вас не вижу... опишите где и что Вы подразумеваете? закономерность которую вижу сам: N = K - 1 где K = комнаты N = переключатели. Если не видите, тогда почему утверждаете, что моя формула не работает или я не так ее написал? ) Что, где, когда: 18698883 . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:12 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov...И вообще, для 2^N комнат требуется (2^N)-1 переключателей... окейно... Если N - это комнаты... то тогда для 3 комнат: 2 в степени 3 = 8. 8 - 1 = 7 переключателей (что является избыточно). Если 2 в степени N = комнаты... То тогда записав выражение комнаты - 1 = переключатели. отсюда моё замешательство, отсюда и задал вопрос = что Вы имели ввиду... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:26 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kolobok0Aleksandr Sharahov...И вообще, для 2^N комнат требуется (2^N)-1 переключателей... окейно... Если N - это комнаты... то тогда для 3 комнат: 2 в степени 3 = 8. 8 - 1 = 7 переключателей (что является избыточно). Если 2 в степени N = комнаты... То тогда записав выражение комнаты - 1 = переключатели. отсюда моё замешательство, отсюда и задал вопрос = что Вы имели ввиду... Как вы понимаете, в своих рассуждениях, которые были опубликованы несколько раньше введенных вами обозначений, я вовсе не был обязан придерживаться ваших обозначений. В публикациях на (около)математические темы, если не оговорено противное, N обычно означает произвольное натуральное число, а не комнаты, переключатели и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:41 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Подкину вариант. 1) Берём первые три выключателя и называем их "зерно" - S, оно останется неизменным. Берём следующие 7 штук и называем их "маска" - M, одним из них чуть позже щёлкнем. Номер комнаты назовём R. 2) Для i = 1..7: если M[i] включён, то запоминаем новое значение зерна: S = S xor i, полученное преобразованное зерно назовём S*. 3) Щёлкаем переключателем маски номер (S* xor R) (если S* = R, то щёлкать не надо). Котово! Агент-сменщик повторяет шаги 1 и 2, и получает S* - искомый номер комнаты. например: 1) пусть S = 010, M = 0010001, R =5. 2) 010 xor 011 = 001 001 xor 111 = 110 3)5 xor 110 = 101 xor 110 = 011 = 3, щёлкаем третьим выключателем. Приходит сменщик: 1)S = 010, M = 0000001 2)010 xor 111 = 101 = 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov... В публикациях на (около)математические темы... определение выражения типа "формула" из вики: формула — всякая чисто символьная запись где в дальнейшем идёт расшифровка этих самых символов. Простите - так привык с того века. Наверное это мои замороты - хз. В конечном итоге то, что Вы написали вызвало больше вопросов, чем ответов(у меня лично). Чтоб не гадать - я задал Вам вопрос. На который кстати Вы не ответили (по поводу уточнить Ваше высказывание). Если Вы пытались записать выражение типа N = K - 1 где K = комнаты N = переключатели. то нафига степени двоек впрягли? Чтоб типа поболее символов? :) (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 01:55 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kolobok0нафига степени двоек впрягли? Чтоб типа поболее символов? :) Нет, не для этого. А для того, чтобы записать утверждение в общем виде для произвольного натурального параметра N. Дело в том, что я могу доказать справедливость приведенного утверждения лишь для количества комнат, равного натуральной степени двойки. Если вы можете доказать нечто подобное для произвольного количества комнат, то вам, конечно, не за чем "впрягать степени двоек". ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 02:08 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov...Если вы можете доказать... ок. понял. Тупое разложение, на маленьком кол-ве, даёт возможность так сказать(N=K-1). типа практически. Мне пока не получилось подойти универсально к разложению в матрицу. Есть мысли, но пока занят :( попробую позже осуществить второй подход к снаряду... (круглый) ЗЫ у Вас сообщений три шестёрки - явно намёк на пора спать:) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 02:21 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Akinamini.weblabвключены следующие выключатели [3, 4, 11, 19, 27, 35] шпион в комнате номер 6 ваши действия? Значимыми считаем первые 7 тумблеров. Остальные игнорируем. Текущая сумма 3+4=7. Требуется получить сумму, которая при делении на 8 даст в остатке 6. Ближайшие такие суммы - 6 и 14. 6 получить одним переключением нельзя. 14 - можно (3+4+7). Наши действия - включить тумблер 7. Aleksandr Sharahov Akina, Это не очевидно, что ваш алгоритм (перебор?) всегда найдет решение. Можете доказать? 3 4 6 room 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 02:40 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Вообще линейная комбинация, в данном случае, не зависимо от количества элементов, 7,8, или 40 бит, судя по всему не будет давать решение. Доказать это можно достаточно просто: Пусть значение линейной комбинации на определенном наборе единичных бит даёт нам число t. Пусть t%8!=n(номер комнаты). В таком случае, мы должны либо добавить один элемент из линейной комбинации, либо убрать из неё определённый элемент. Однако, достаточно легко допустить что в текущем наборе элементов уже присутствуют все элементы которые можно было добавить для требуемого результата, и в этом же наборе отсутствуют все элементы которые можно было бы убрать для требуемого результата. Таким образом, изменением положения одного бита мы не добьёмся требуемого результата. Aleksandr Sharahovmayton, это первое, что приходит в голову, второе - забубенить модульную арифметику, но это все из пушки по воробьям, надо ж и голову иметь. С интересом глянул бы на 40-битное решение ) маловероятно что оно существует ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 04:25 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
От блин, вы сделали мой день !!! как теперь работать ??????? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 07:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabдля шифровки используем первые 3 ячейки. если наш агент приходит в гостиницу и комната для него заказана, используем колонку Room booked если наш агент приходит в гостиницу и комната для него предварительно не заказана, используем колонку Room not booked Код: plaintext 1. 2. 3. 4.
PS: в крайнем случае используем жвачку Хм... здесь нет чита и нет решения. Вы привели табличку декода 8-ричной системы. И что дальше с этим делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 09:53 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Честно говоря у меня - масса решений. Но все они требуют чтобы изначальное состояние тумблеров было - не случайным. Случайность "обламывает" все поиски по 40 битами. С ней пока можно гарантировать только "чет-нечет" или ДА/Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 10:12 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Да тут Aleksandr Sharahov уже всё сделал вроде-бы, только на собеседование вместо автора не сходил ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 10:30 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, У меня их тоже вроде бы много: ((2^N)-1)! решений для 2^N комнат. Но это лишь одно решение с точностью до перестановки битов в кодах. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 10:36 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Apoj_sqlDima TХЗ как решать, но я проверялку написал Тупо генерит все варианты и проверяет что из каждого можно получить все 8 комнат одним переключением. Алгоритм в методе algo(), менять только его. SWITCH_COUNT - кол-во переключателей. 40 это очень долго 10^13 вариантов. Тестил на 30. Формула SUM % N не работает при N от 9 до 13, дальше не тестил. Ещё бы написали алгоритм проверки алгоритма проверки. Было ж указано, что при mod 9 8 и 0 одно и то же. У Вас я это не увидел при проверке. ЗЫ Мне уныло лезть в c++: 0) надо ставить к студии с++ 1) я "туда" лез последний раз 6 месяцев назад (надо было решать тестовое задание для моего нонешнего работодателя) 2) удовольствия при п.1 не получил и лезть туда без особой нужды нет ни малейшего желания. Тоже проверял. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
При 32х переключателях выдал нельзя получить 6 при включенных 6, 15, 24. PS Не нравиться С - портируй на то что нравиться, код простейший, специально ничего специфичного из С не использовал. На любой ЯП перенесется легкой правкой синтаксиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 10:54 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
ну ё моё, всё просто для описания номера до 8-ми комнат нужно 3 бита (доказывать не буду) для решения задачи достаточно 3 + 3 +1 = 7 ключей выделим 3 взаимно пересекающиеся группы 1, 2, 3, 4 1, 4, 5, 6 1, 6, 7, 2 каждый бит номера комнаты будет равен чётности количества включеных ключей в конкретной группе: чётно - 1, нечетно - 0 установка довольно очевидна исходя из тех битов, которые нужно инвертировать в текущем состоянии 1-й бит измененяем 3-й ключ 2-й бит - 5-й ключ 3-й бит - 7-й ключ 1-й и 2-й - 4-й ключ 2-й и 3-й - 6-й ключ 3-й и 1-й - 2-й ключ все - 1-й ключ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 11:11 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kealon(Ruslan), эх, рановато... каждому интересно ж самостоятельно дойти ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 11:25 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kealon(Ruslan), Заглянул под спойлер и немного успокоился ) Систематическое решение выглядит иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 11:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, ну не обязательно спойлер открывать ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 11:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Ломать голову ближайшие пару дней некогда, заглянул под спойлер, затестил решение kealon(Ruslan), правильно работает на 7 переключателях. На любом большем количестве тоже заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 11:42 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kealon(Ruslan)ну ё моё, всё просто для описания номера до 8-ми комнат нужно 3 бита (доказывать не буду) для решения задачи достаточно 3 + 3 +1 = 7 ключей Мне кажется в этом есть связь с Матричным Кодированием или Исправлением ошибок. Точно не вспомню термин но лет 15 назад мы проходили по Теории Передачи Сигналов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 12:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
maytonkealon(Ruslan)ну ё моё, всё просто для описания номера до 8-ми комнат нужно 3 бита (доказывать не буду) для решения задачи достаточно 3 + 3 +1 = 7 ключей Мне кажется в этом есть связь с Матричным Кодированием или Исправлением ошибок. Точно не вспомню термин но лет 15 назад мы проходили по Теории Передачи Сигналов. не могу сказать, у нас только у радиофизиков вроде было что-то с устойчивостью сигналов, либо я прогулял в общем виде для шифровки N бит таким способом нужно (как и написал Aleksandr Sharahov) SUM(i=1.. N , C(i,N)) = 2^N - C (0,N) = 2^N - 1 ключей где С(k,n) = n! / [k! (n-k)!] ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 12:53 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, почему не решение? пусть вы агент-сменщик, приходите в гостиницу 1) смотрите на коммутационный щит и записываете первые 3 позиции в блокнотик 2) спрашиваете портье, заказана ли для вас комната в гостинице 3) а) комната заказана: смотрите в таблицу, в колонку 'Room booked', находите комбинацию из блокнотика и получаете номер комнаты б) комната не заказана: смотрите в таблицу, в колонку 'Room not booked', находите комбинацию из блокнотика и получаете номер комнаты ( все по ТЗ ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 13:24 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovkealon(Ruslan), эх, рановато... каждому интересно ж самостоятельно дойти ) так вы же уже все объяснили. нет? =) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 13:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahovkealon(Ruslan), эх, рановато... каждому интересно ж самостоятельно дойти ) так вы же уже все объяснили. нет? =) от вас же требуют суть рассказать (а именно как получилась эта табличка) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 13:41 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Если вы можете доказать нечто подобное для произвольного количества комнат, то вам, конечно, не за чем "впрягать степени двоек". ) пробую: пусть у нас N переключателей, Идея метод шифрования (как я его поняла): из текущего состояния, поменяв один переключатель, мы можем перейти в N отличных от начального состояний (что даст в сумме 1+(N) = N+1 различных состояний системы) Итог: с помощью вашего метода, используя N переключателей, можно зашифровать номер N+1 комнату ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 13:57 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, для вас, как я поняла, - это типовая задача а предметную область обозначить можно? ( в смысле куда копать, чтоб по фэншую? =) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 14:16 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabkealon(Ruslan), Александр уже все объяснил 18698560 это называется "как кнопки нажимать", а не решение :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:07 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, для вас, как я поняла, - это типовая задача а предметную область обозначить можно? ( в смысле куда копать, чтоб по фэншую? =) ) По фэншую 2 сообщения kealon(Ruslan): 18700090 и 18700779 практически полностью и составляют решение. Т.е. суть задачи состоит в перечислении всех подмножеств множества из N=3 битов. Всего их (вспоминаем сумму биномиальных коэффициентов) 2^N=8. Перейти от одного подмножества к другому можно за одну операцию объединение или разности (в нашем случае xor). Для каждого отдельного бита все эти xor'ы выродятся в те самые суммы. На подмножества можно смотреть как на функции перехода xor'ом от одного значения к другому. -1 появляется от того, что тождественная функция нам не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
kealon(Ruslan), ну когда табличку привели, объяснили, что и как нужно нажимать, то решение додумать уже не проблема :-) идея метода в 18701187 (это в моем понимании, хотя, может, Александр и не согласится) ПС: честно говоря, пока не увидела решение Александра, даже в голову не пришло посмотреть на задачу именно в таком ключе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:28 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblabAleksandr Sharahov, для вас, как я поняла, - это типовая задача а предметную область обозначить можно? ( в смысле куда копать, чтоб по фэншую? =) ) По фэншую 2 сообщения kealon(Ruslan): 18700090 и 18700779 практически полностью и составляют решение. Т.е. суть задачи состоит в перечислении всех подмножеств множества из N=3 битов. Всего их (вспоминаем сумму биномиальных коэффициентов) 2^N=8. Перейти от одного подмножества к другому можно за одну операцию объединение или разности (в нашем случае xor). Для каждого отдельного бита все эти xor'ы выродятся в те самые суммы. На подмножества можно смотреть как на функции перехода xor'ом от одного значения к другому. -1 появляется от того, что тождественная функция нам не нужна. переформулирую, допустим, для беглого ознакомления с вопросом, что гуглить? основы криптографии? что-нибудь по основам CS? что? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:36 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabkealon(Ruslan), ну когда табличку привели, объяснили, что и как нужно нажимать, то решение додумать уже не проблема :-) идея метода в 18701187 (это в моем понимании, хотя, может, Александр и не согласится) ПС: честно говоря, пока не увидела решение Александра, даже в голову не пришло посмотреть на задачу именно в таком ключе :) Вы неявно предполагаете, что такая таблица существует для любого количества переключателей. На самом деле это не доказано и опираться на это нельзя. Пока лишь доказано, что таблица существует для (2^N)-1 переключателей, где N - любое натуральное. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:37 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:46 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabпереформулирую, допустим, для беглого ознакомления с вопросом, что гуглить? основы криптографии? что-нибудь по основам CS? что? Достаточно общих знаний по: теории множеств (операции, включения-исключения), двоичной системе (биты, xor), комбинаторике (биномиальные коэффициенты, основное тождество). Чтобы досконально разобраться попробуйте по-честному построить все функции перехода для N=4 бит номера комнаты через xor. Это не так трудно, поверьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Спасибо, вы дали отличную подсказку, думаю, теперь я смогу разрулить задачу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabmini.weblabAleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:56 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblabпропущено... правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит. ИМХУ Дверей для алгоритма может быть только 2^N, а не произвольное число. Т.к. алгоритм оперирует двоичными разрядами, т.е. ожидает N двоичных разрядов номера двери. Т.е. для 4х дверей надо 2 разряда (0 ... 3) для 5 дверей надо три разряда, поэтому уже 7 переключателей. Для 9 дверей надо 15 переключателей. Т.е. если надо 5 дверей, то кодировать все равно 8 дверей, а использовать только первые 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 16:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
да чего там, для 3 дверей уже 2х переключателей не хватит теперь я не понимаю, как рассчитать достаточное количество переключателей интересует ход мыслей, как это можно сделать (как получить формулу?) посмотрела бы на доказательство результата, что привели Александр и Руслан ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:05 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabда чего там, для 3 дверей уже 2х переключателей не хватит теперь я не понимаю, как рассчитать достаточное количество переключателей интересует ход мыслей, как это можно сделать (как получить формулу?) посмотрела бы на доказательство результата, что привели Александр и Руслан Тогда ложись спать. Я постом выше написал больше чем требуется для ответа на этот вопрос. Утром не поймешь - переспроси. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:15 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей, но я не понимаю, как выводится формула ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:22 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Переведи все в двоичную систему. 1 есть во всех строках, т.е. изменяя 1й выключатель мы получаем X ^= 0b111 т.е. инверсию всех битов. 2 есть в 1 и 3 строке, т.е. изменение 2 выключателя равносильно X ^= 0b101 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:40 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Тут есть еще засада с нумерацией: надо нумеровать с нуля, но по задаче нумеруется с 1, т.е. 5 дверей это с 1 по 5, а не с 0 по 4. Битовая математика работает с нуля, надо это учитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabDima T, я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей, но я не понимаю, как выводится формула Доказывается необходимость и достаточность. Давайте сначала мы докажем в ту сторону, куда проще. В нашем случае необходимость для 2^N дверей как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N дверей различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей. Теперь в обратную сторону, достаточность. Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь может имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код. Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству. Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать. Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого. Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить любое заданное подмножество исходных N бит. Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, закодированного упомянутым случайным кодом и подмножеством, которое мы хотим получить. Вот и все ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 23:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Сорри, исправлю здесь же самые дикие опечатки: Доказывается необходимость и достаточность. Давайте сначала докажем в ту сторону, куда проще. В нашем случае необходимость для 2^N дверей иметь как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей. Теперь в обратную сторону, достаточность. Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код. Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству. Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать. Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого. Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить заданное подмножество исходных N бит. Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, полученного XOR'ом подмножества, закодированного упомянутым случайным кодом, и подмножества, которое мы хотим получить. Вот и все )[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 23:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Dima T Спасибо! Более менее разобралась. Меня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел (допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе) Определим ключ как последовательность значимых переключателей я попробовала переформулировать задачу Пусть имеются числа от 1 до n. Требуется закодировать заданное число от 1 до n. Метод кодировки: изменение одного бита в произвольно заданном ключе Задача: Рассчитать необходимый и достаточный размер ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 02:06 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел (допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе) Первое из чисел - количество подмножеств множества из N элементов. В нашем случае элементами являются отдельные биты некоторого числа. В нашем случае некоторым числом является номер комнаты. Второе из чисел - количество подмножеств множества из N элементов, за исключением пустого подмножества. Оно нам не нужно, т.к. с его помощью мы не будем задавать никаких операций, ведь XOR с нулем не меняет числа. Тождественная операция у нас и так всегда есть по условию - мы имеем право в качестве кода использовать само исходное случайное значение. Важно понимать, что инвертирование битов числа является следствием операции XOR над множеством его битов. Именно поэтому проще всего программа получится когда интервал возможных значений начинается с 0 и заканчиваться числом, в двоичной записи которого все биты равны 1. В противном случае если вы хотите получить минимальную длину кода, вам могут потребоваться дополнительные сдвиги диапазона, чтобы попасть в указанный интервал. mini.weblabОпределим ключ как последовательность значимых переключателей Пусть имеются числа от 1 до n. Требуется закодировать заданное число от 1 до n. Метод кодировки: изменение одного бита в произвольно заданном ключе Задача: Рассчитать необходимый и достаточный размер ключа Это хороший повод поговорить по душам с тестирующим ) Плюс в том, что разговор может получиться длинным и своем поле. Минус в том, что при этом его легко обидеть. Ваши шансы возрастают, если разговор будет на троих ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 09:59 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Думаю что это связано с большим уровнем 'шума'. Не могли бы вы прокомментировать более подробно ваше доказательство, пожалуйста mini.weblabAleksandr Sharahov, Dima T Спасибо! Более менее разобралась. Вы уверены что понимаете как была построена таблица выше и почему она имеет право быть построенной так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов. Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:16 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TAleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов. Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 Просьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. В моем тексте используются мои обозначения. Хотите критиковать меня - пожалуйста, но используйте при этом мои обозначения. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:44 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, см. 18704296 , где написано Первое из чисел - количество подмножеств множества из N элементов. В нашем случае элементами являются отдельные биты некоторого числа. В нашем случае некоторым числом является номер комнаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:48 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovПросьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. Ну так будь добр заранее об этом сообщать. Иначе это выглядит как бред Aleksandr Sharahovmini.weblabМеня смутили числа 2^N и 2^N - 1 , и я долго думала, откуда они взялись ... Первое из чисел - количество подмножеств множества из N элементов ... о чем я и написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovDima Tпропущено... Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 Просьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. Это я больше для mini.weblab писал, на это mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Предположил что именно могло ее запутать. Возможно ошибся. А твои доказательства целиком не читал, много букав. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:58 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
SashaMercuryAleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Доказывается необходимость и достаточность 2^N-1 переключателей для 2^N дверей. Какое место в доказательстве непонятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 11:44 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Изломал всю голову "простым" решением 18700090 от kealon(Ruslan), точнее тем как его объяснить. Как работает - понятно. Не мог придумать как назвать его таблицу, в итоге получилось как всегда - раз нельзя назвать, значит что-то не так. Тотже алгоритм: для шифрования: берем номер двери и делаем xor всех номеров включенных переключателей. Получаем номер того который надо переключить. для дешифрования: xor всех включенных переключателей. Например: включены переключатели 3,7. Надо указать на 6 дверь. 6 ^ 3 ^ 7 = 2-й переключатель надо переключить 2 ^ 3 ^ 7 = 6-я дверь Требуемое количество переключателей : должны быть все переключатели используемого битового диапазона, т.к. в результате xor может получиться больше, например 4^3 = 7, т.е. если используется 3 бита, то надо все до 2^3 (=8), т.е. от 1 до 7, ноль не надо т.к. X ^ 0 = X, поэтому всего 2^N - 1, где N количество используемых бит. Для 8 дверей хватит 3 бит (7 переключателей) если двери нумеровать с нуля, а не с 1. Иначе надо 15 переключателей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 13:59 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TИзломал всю голову "простым" решением 18700090 от kealon(Ruslan), точнее тем как его объяснить. В 18703610 , не просто доказывается достаточность, но еще и конструируется алгоритм, основанный на манипуляциях с подмножествами. А алгоритм 18700090 - это как бы срез (следствие) общего алгоритма применительно к отдельным битам. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 14:10 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
SashaMercury, как я понимаю (заранее прошу прощение за терминологию) 1) если взять достаточное число бит, то операция побитового инвертирования позволяет получить все числа из множества чисел, которые требуется закодировать 2) пример: нам нужно закодировать числа от 1 до 8 для хранения чисел потребуется 3 бита. Числовой ряд: 000, 001, ..., 111 или множество чисел {1, 2, ..., 8} отображается 1:1 во множество двоичных чисел {000, 001, ..., 111} пусть у нас задано одно из чисел диапазона, допустим 2 -> 001 с помощью побитового инвертирования мы можем получить из двойки все оставшиеся комбинации диапазона - инвертируем 1 бит в числе, получаем С(1, 3) комбинаций (чисел) - инвертируем 2 бита в числе, получаем С(2, 3) комбинаций (чисел) - инвертируем все 3 бита в числе, получаем С(3, 3) комбинаций (чисел) 3) каждую получившуюся комбинацию мы отображаем в бит ключа. для каждой комбинации - свой бит чтобы посчитать размер ключа нужно сложить все комбинации получившиеся в результате операции побитового инвертирования 4) я еще не все до конца додумала ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 16:21 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblabОпределим ключ как последовательность значимых переключателей Пусть имеются числа от 1 до n. Требуется закодировать заданное число от 1 до n. Метод кодировки: изменение одного бита в произвольно заданном ключе Задача: Рассчитать необходимый и достаточный размер ключа Это хороший повод поговорить по душам с тестирующим ) Плюс в том, что разговор может получиться длинным и своем поле. Минус в том, что при этом его легко обидеть. Ваши шансы возрастают, если разговор будет на троих ) это наезд, да ? :) вы просто скажите, где неправильно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 16:30 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabэто наезд, да ? :) вы просто скажите, где неправильно :) Наоборот, все правильно. И это может стать проблемой, если вдруг окажется правильней, чем у экзаменующего ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 17:02 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Привет еще раз. Вобщем 3 часа грыз ручку. Часа два вчера. И сегодня час. Нарисовал следующее решение. Прошу прощения коллеги если боян. Я уже не в состоянии осилить трафик потоков сознания который был написан. Я приаттачу свои мысли на бумаге. И если у кого-то будут вопросы - отвечу. Для меня вывод - решение существует. И в 40 переключателях можно закодировать номера дверей от 1 до 32х. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 17:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Прошу прощения за сбой в нумерации. Пункты 5,6,7 одной фоткой почти вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 17:46 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, прочитай то что жирным написано 18705910 работа с битами тут не нужна. Надо только определить сколько бит надо использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 18:00 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, спасибо. Ты очень любезен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 18:22 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, Переделал у себя в программе нумерацию подмножеств аналогично 18705910 . В результате избавился от массива констант, т.к. теперь биты номера комнаты, входящие в подмножество в точности совпадают с битами номера подмножества. Спасибо за идею. исходник программы Код: pascal 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.
таблица для 4х комнат Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 22:15 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, да, идея отличная ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 00:08 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovSashaMercuryAleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Доказывается необходимость и достаточность 2^N-1 переключателей для 2^N дверей. Какое место в доказательстве непонятно? Для кодирования каким-то способом ? или для чего ? Хотелось бы увидеть точную формулировку того, что вы доказывали ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 07:08 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Странный код Aleksandr Sharahov Код: pascal 1. 2.
В паскале не силен, если правильно понимаю "if Code" дает true при Code<>0, то можно просто Код: pascal 1. 2.
Так и задумывалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 07:34 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TИзломал всю голову "простым" решением 18700090 от kealon(Ruslan), точнее тем как его объяснить. Как работает - понятно. Не мог придумать как назвать его таблицу, в итоге получилось как всегда - раз нельзя назвать, значит что-то не так. Тотже алгоритм: для шифрования: берем номер двери и делаем xor всех номеров включенных переключателей. Получаем номер того который надо переключить. для дешифрования: xor всех включенных переключателей. Например: включены переключатели 3,7. Надо указать на 6 дверь. 6 ^ 3 ^ 7 = 2-й переключатель надо переключить 2 ^ 3 ^ 7 = 6-я дверь Требуемое количество переключателей : должны быть все переключатели используемого битового диапазона, т.к. в результате xor может получиться больше, например 4^3 = 7, т.е. если используется 3 бита, то надо все до 2^3 (=8), т.е. от 1 до 7, ноль не надо т.к. X ^ 0 = X, поэтому всего 2^N - 1, где N количество используемых бит. Для 8 дверей хватит 3 бит (7 переключателей) если двери нумеровать с нуля, а не с 1. Иначе надо 15 переключателей. называется таблица просто - ключ шифровки-дешифровки и таблица автор1, 2, 3, 4 1, 4, 5, 6 1, 6, 7, 2 и простой XOR это два равноценных случая общего решения: авторвыделим 3 взаимно пересекающиеся группы (оно же и даёт ответ о кол-ве необходимых бит SUM(i=1.. N , C(i,N)) = 2^N - C (0,N) = 2^N - 1 ключей) для простого XOR разбивка на группы будет такая 1, 3, 5, 7 2, 3, 6, 7 4, 5, 6, 7 общая формула шифровки M.IndexOf(V XOR со всеми M[ i ] если i-й ключ включён ) расшифровка V = 0 XOR со всеми M[ i ] если i-й ключ включён для простого XOR M=[1, 2, 3, 4, 5, 6, 7] для автор1, 2, 3, 4 1, 4, 5, 6 1, 6, 7, 2 M=[7, 5, 1, 3, 2, 6, 4] любое перемешивание ряда от 1 до (2^N-1) будет ключом, как видно вариантов ключей может быть K!, где K = 2^N -1 (т.е. очень дофига) PS: нумерация M с 1-ы, нумерация комнат с 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 08:15 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TСтранный код Aleksandr Sharahov Код: pascal 1. 2.
В паскале не силен, если правильно понимаю "if Code" дает true при Code<>0, то можно просто Код: pascal 1. 2.
Так и задумывалось? Переменная SetNo хранит номер очередного подмножества. Оно содержит в точности те биты номера комнаты, которые есть в двоичной записи значения SetNo. Поэтому нумерация подмножеств начинается с 1. В переменной Code содержатся состояния выключателей, или, что то же самое, "необходимости" операции XOR над всеми под множествами. Один бит переменной Code - один выключатель, в бите 0 - первый и т.д. Первая строчка организует цикл по подмножествам. Сначала текущее подмножество первое (то что в бите 0). На каждом следующем такте - сдвиг вправо. Т.к. нас интересуют только непустые операции, то цикл закончится при Code=0. Вторая строчка для очередного подмножества с номером SetNo, если необходимо (Code and 1<>0) выполняет операцию XOR над подмножеством, включая-исключая его биты (из SetNo) в результирующее подмножество (биты Result), начальное состояние которого - пустое (Result=0). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 08:32 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, понял. Тот код равносилен такому Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 08:39 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Python code: Код: python 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. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110.
Tаблица для 4х комнат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 20:01 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblab, почитай внимательно что я написал 18705910 , таблиц не надо, кода будет строк 10-15, ну пусть 20 по неопытности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 20:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, так я примерно так и сделала, как ты написал. непосредственно шифровка занимает как раз 15 строк (метод encode_room() ) расшифровка - 8 строк. остальные функции - для удобства к примеру, вот удобная для пользования табличка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 21:11 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblab, тоже спрошу ) А почему бы в качестве Encode/Decode не скопировать мои CodeToNumber, GetNewCode? В питоне нет сдвигов? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2016, 21:41 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Достаточно одной функции для шифрования и расшифровки. В случае расшифровки просто зашифровать дверь номер 0. В результате будет номер закодированной двери. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 07:36 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, Если сделать одну функцию, то либо потребуется дополнительный параметр, управляющий режимом работы, либо вызывающая процедура должна сама выполнять часть работы по кодированию. На мой взгляд, это тот случай, когда две лучше, чем одна ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 09:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblab, тоже спрошу ) А почему бы в качестве Encode/Decode не скопировать мои CodeToNumber, GetNewCode? В питоне нет сдвигов? ) я хотела записать решение, так как я его понимаю с битовыми операциями я не очень-то пока дружу, разберусь - поправлю ( работаю по Agile ) Dima TДостаточно одной функции для шифрования и расшифровки. согласна ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 15:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
UP. Всё таки отличная задача была. Я ходил вокруг нее и облизывался. Тоесть я не спешил ее делать. Обычно такие вкусные задачи оставляю на отпуск на подумать. Но прошло 5 лет и я просто позабыл. Я помню что последнее я рисовал - фасеты. Для трех комнат - три кружочка с пересечениями и вышло 7 фасетов по которым нужно было сделать xor. Но я хотел обобщить этот алгоритм для бОльшего числа комнат. Я помню Шарахов обосновал формулу количества перключателей и комнат. Давайте добъем задачу и сделаем реализацию для N комнат и произвольного числа перключателей. Возможно XOR не единственный вариант и арифметическая сумма - тоже кажется мне идеей интересной хотя-бы на обсудить. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 12:53 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, ну так в 18708203 все решено в общем виде, только задавай нужный тебе BitCount, табличка сама получится Код: pascal 1. 2. 3. 4.
функции CodeToNumber и GetNewCode от размерности не зависят ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:16 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton, а что с ним не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:26 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Да всё нормально. Ворчу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton, а что с ним не так? кстати тут недавно смотрел одну задачку из школы 42, у этих ваших сишников прямо-таки душераздирающие решения ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:31 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Что за школа? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:34 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mayton Что за школа? Обучение азам программистов в разных странах, у нас вроде при поддержке сбера, точно не знаю, велик не мой. Сама задача известна давно, привожу в их интерпретации. The game is composed of 2 stacks named a and b. To start with: - a contains a random number of either positive or negative numbers without any duplicates. - b is empty The goal is to sort in ascending order numbers into stack a. To do this you have the following operations at your disposal: sa : swap a - swap the first 2 elements at the top of stack a. Do nothing if there is only one or no elements. sb : swap b - swap the first 2 elements at the top of stack b. Do nothing if there is only one or no elements. ss : sa and sb at the same time. pa : push a - take the first element at the top of b and put it at the top of a. Do nothing if b is empty. pb : push b - take the first element at the top of a and put it at the top of b. Do nothing if a is empty. ra : rotate a - shift up all elements of stack a by 1. The first element becomes the last one. rb : rotate b - shift up all elements of stack b by 1. The first element becomes the last one. rr : ra and rb at the same time. rra : reverse rotate a - shift down all elements of stack a by 1. The last element becomes the first one. rrb : reverse rotate b - shift down all elements of stack b by 1. The last element becomes the first one. rrr : rra and rrb at the same time. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 20:48 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
А от чего душа раздиралась? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 22:26 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
exp98, от решений, которым не всегда удается отсортировать 100 случайных чисел даже за 700 ходов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 22:45 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Ясно. Я не защищаю и не обвиняю, просто вспомнил кубик Рубика. Теоретически там несколько базовых перестановок, и соответственно их комбинации. Казалось бы всё просто, если их расписать подробно. Но когда берёшь его в руки 1-й раз, 2й, 3-й, то процесс длится о-очень долго, но чаще закончится одной-двумя гранями. Если воспользоваться готовыми блоками преобразований, то очень часто можно и собрать за несколько минут. А по телеку видел соревнование - по 10-20 сек, только палцы сверкали. Похожее наблюдал и в транспорте пару лет назад. Как роботы на конвейере. Тренировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 23:17 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Здесь другое, не зря же вспомнилась эта задача в этом топике ) 700 это гораздо более, чем достаточно. И вариантов решений более, чем 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 23:26 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Обучение азам программистов в разных странах, у нас вроде при поддержке сбера, точно не знаю, велик не мой. Сама задача известна давно, привожу в их интерпретации. The game is composed of 2 stacks named a and b. To start with: - a contains a random number of either positive or negative numbers without any duplicates. - b is empty The goal is to sort in ascending order numbers into stack a. Капец задача. Напоминает ханойские башни но с другим API. Не захотел-бы ее решать. Просто так. Слишком как-то тоскливо что-ли начинать ее делать. Тут мне кажется надо как-то сильнее замотивировать или чуть снизить порог вхождения. Раз в сезон я играю в Klotski. Это настольная игра вроде пентамино и пятнашек. Нужно двигать геометрические фигурки так чтобы они заняли определенное место. Иногда кажется что капец. Решения не существует. Психуешь. Отставляешь игру. Потом возвращаешся. И вдруг... задача решается. И погнал дальше по уровням. А дальше уровни - еще хуже. Те-же фигурки. Но вместо двух мелких добавляется еще одна крупная. Больше тупиков или альфа-бета отсечений. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 00:45 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339609]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
185ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 509ms |
0 / 0 |