|
из тестового задания
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=16&msg=39151950&tid=1339609]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 427ms |
0 / 0 |