powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / из тестового задания
25 сообщений из 166, страница 5 из 7
из тестового задания
    #39150732
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovmini.weblabAleksandr Sharahov,

для вас, как я поняла, - это типовая задача
а предметную область обозначить можно?
( в смысле куда копать, чтоб по фэншую? =) )

По фэншую 2 сообщения kealon(Ruslan): 18700090 и 18700779
практически полностью и составляют решение.
Т.е. суть задачи состоит в перечислении всех подмножеств множества из N=3 битов.
Всего их (вспоминаем сумму биномиальных коэффициентов) 2^N=8.
Перейти от одного подмножества к другому можно
за одну операцию объединение или разности (в нашем случае xor).
Для каждого отдельного бита все эти xor'ы выродятся в те самые суммы.
На подмножества можно смотреть как на функции перехода xor'ом от одного значения к другому.
-1 появляется от того, что тождественная функция нам не нужна.

переформулирую, допустим, для беглого ознакомления с вопросом, что гуглить?
основы криптографии? что-нибудь по основам CS? что?
...
Рейтинг: 0 / 0
из тестового задания
    #39150735
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabkealon(Ruslan),

ну когда табличку привели, объяснили, что и как нужно нажимать, то решение додумать уже не проблема :-)
идея метода в 18701187 (это в моем понимании, хотя, может, Александр и не согласится)

ПС:
честно говоря, пока не увидела решение Александра, даже в голову не пришло посмотреть на задачу именно в таком ключе
:)

Вы неявно предполагаете, что такая таблица существует для любого количества переключателей.
На самом деле это не доказано и опираться на это нельзя.
Пока лишь доказано, что таблица существует для (2^N)-1 переключателей, где N - любое натуральное.
...
Рейтинг: 0 / 0
из тестового задания
    #39150738
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,


хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите?
...
Рейтинг: 0 / 0
из тестового задания
    #39150744
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabAleksandr Sharahov,
хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите?
правильно будет так:

если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите?
...
Рейтинг: 0 / 0
из тестового задания
    #39150748
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabпереформулирую, допустим, для беглого ознакомления с вопросом, что гуглить?
основы криптографии? что-нибудь по основам CS? что?

Достаточно общих знаний по:
теории множеств (операции, включения-исключения),
двоичной системе (биты, xor),
комбинаторике (биномиальные коэффициенты, основное тождество).

Чтобы досконально разобраться попробуйте по-честному
построить все функции перехода для N=4 бит номера комнаты через xor.
Это не так трудно, поверьте.
...
Рейтинг: 0 / 0
из тестового задания
    #39150750
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Спасибо, вы дали отличную подсказку, думаю, теперь я смогу разрулить задачу :)
...
Рейтинг: 0 / 0
из тестового задания
    #39150753
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabmini.weblabAleksandr Sharahov,
хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите?
правильно будет так:

если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите?

Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит.
...
Рейтинг: 0 / 0
из тестового задания
    #39150779
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovmini.weblabпропущено...

правильно будет так:

если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите?

Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит.
ИМХУ Дверей для алгоритма может быть только 2^N, а не произвольное число. Т.к. алгоритм оперирует двоичными разрядами, т.е. ожидает N двоичных разрядов номера двери. Т.е. для 4х дверей надо 2 разряда (0 ... 3) для 5 дверей надо три разряда, поэтому уже 7 переключателей. Для 9 дверей надо 15 переключателей.
Т.е. если надо 5 дверей, то кодировать все равно 8 дверей, а использовать только первые 5.
...
Рейтинг: 0 / 0
из тестового задания
    #39150947
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да чего там, для 3 дверей уже 2х переключателей не хватит

теперь я не понимаю, как рассчитать достаточное количество переключателей
интересует ход мыслей, как это можно сделать (как получить формулу?)
посмотрела бы на доказательство результата, что привели Александр и Руслан
...
Рейтинг: 0 / 0
из тестового задания
    #39150951
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabда чего там, для 3 дверей уже 2х переключателей не хватит

теперь я не понимаю, как рассчитать достаточное количество переключателей
интересует ход мыслей, как это можно сделать (как получить формулу?)
посмотрела бы на доказательство результата, что привели Александр и Руслан
Тогда ложись спать. Я постом выше написал больше чем требуется для ответа на этот вопрос. Утром не поймешь - переспроси.
...
Рейтинг: 0 / 0
из тестового задания
    #39150956
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
...
Рейтинг: 0 / 0
из тестового задания
    #39150958
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей,
но я не понимаю, как выводится формула
...
Рейтинг: 0 / 0
из тестового задания
    #39150964
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переведи все в двоичную систему. 1 есть во всех строках, т.е. изменяя 1й выключатель мы получаем X ^= 0b111 т.е. инверсию всех битов. 2 есть в 1 и 3 строке, т.е. изменение 2 выключателя равносильно X ^= 0b101 и т.д.
...
Рейтинг: 0 / 0
из тестового задания
    #39150967
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть еще засада с нумерацией: надо нумеровать с нуля, но по задаче нумеруется с 1, т.е. 5 дверей это с 1 по 5, а не с 0 по 4. Битовая математика работает с нуля, надо это учитывать.
...
Рейтинг: 0 / 0
из тестового задания
    #39151006
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabDima T,

я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей,
но я не понимаю, как выводится формула

Доказывается необходимость и достаточность.

Давайте сначала мы докажем в ту сторону, куда проще.
В нашем случае необходимость для 2^N дверей как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N дверей различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей.

Теперь в обратную сторону, достаточность.
Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь может имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код.
Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству.
Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать.
Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого.
Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить любое заданное подмножество исходных N бит.
Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, закодированного упомянутым случайным кодом и подмножеством, которое мы хотим получить.
Вот и все )
...
Рейтинг: 0 / 0
из тестового задания
    #39151015
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, исправлю здесь же самые дикие опечатки:

Доказывается необходимость и достаточность.

Давайте сначала докажем в ту сторону, куда проще.
В нашем случае необходимость для 2^N дверей иметь как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей.

Теперь в обратную сторону, достаточность.
Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код.

Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству.

Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать.

Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого.

Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить заданное подмножество исходных N бит.

Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, полученного XOR'ом подмножества, закодированного упомянутым случайным кодом, и подмножества, которое мы хотим получить.
Вот и все )[/quot]
...
Рейтинг: 0 / 0
из тестового задания
    #39151040
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, Dima T

Спасибо!
Более менее разобралась.

Меня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить.
Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел
(допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе)

Определим ключ как последовательность значимых переключателей

я попробовала переформулировать задачу

Пусть имеются числа от 1 до n.
Требуется закодировать заданное число от 1 до n.
Метод кодировки: изменение одного бита в произвольно заданном ключе
Задача: Рассчитать необходимый и достаточный размер ключа
...
Рейтинг: 0 / 0
из тестового задания
    #39151145
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить.
Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел
(допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе)


Первое из чисел - количество подмножеств множества из N элементов.
В нашем случае элементами являются отдельные биты некоторого числа.
В нашем случае некоторым числом является номер комнаты.

Второе из чисел - количество подмножеств множества из N элементов,
за исключением пустого подмножества. Оно нам не нужно,
т.к. с его помощью мы не будем задавать никаких операций,
ведь XOR с нулем не меняет числа. Тождественная операция у нас и так
всегда есть по условию - мы имеем право в качестве кода использовать
само исходное случайное значение.

Важно понимать, что инвертирование битов числа является следствием
операции XOR над множеством его битов. Именно поэтому проще всего
программа получится когда интервал возможных значений начинается с 0
и заканчиваться числом, в двоичной записи которого все биты равны 1.
В противном случае если вы хотите получить минимальную длину кода,
вам могут потребоваться дополнительные сдвиги диапазона,
чтобы попасть в указанный интервал.

mini.weblabОпределим ключ как последовательность значимых переключателей
Пусть имеются числа от 1 до n.
Требуется закодировать заданное число от 1 до n.
Метод кодировки: изменение одного бита в произвольно заданном ключе
Задача: Рассчитать необходимый и достаточный размер ключа

Это хороший повод поговорить по душам с тестирующим )
Плюс в том, что разговор может получиться длинным и своем поле.
Минус в том, что при этом его легко обидеть.
Ваши шансы возрастают, если разговор будет на троих )
...
Рейтинг: 0 / 0
из тестового задания
    #39151162
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Думаю что это связано с большим уровнем 'шума'. Не могли бы вы прокомментировать более подробно ваше доказательство, пожалуйста

mini.weblabAleksandr Sharahov, Dima T

Спасибо!
Более менее разобралась.


Вы уверены что понимаете как была построена таблица выше и почему она имеет право быть построенной так ?
...
Рейтинг: 0 / 0
из тестового задания
    #39151169
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов.
Этим ты и запутал. Элементов не N а 2^N
Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3
...
Рейтинг: 0 / 0
из тестового задания
    #39151200
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов.
Этим ты и запутал. Элементов не N а 2^N
Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3

Просьба не навязывать мне свои обозначения.
Можете считать, что мне лень в них вникать.

В моем тексте используются мои обозначения.
Хотите критиковать меня - пожалуйста, но используйте при этом мои обозначения.
...
Рейтинг: 0 / 0
из тестового задания
    #39151202
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

см. 18704296 , где написано

Первое из чисел - количество подмножеств множества из N элементов.
В нашем случае элементами являются отдельные биты некоторого числа.
В нашем случае некоторым числом является номер комнаты.
...
Рейтинг: 0 / 0
из тестового задания
    #39151205
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПросьба не навязывать мне свои обозначения.
Можете считать, что мне лень в них вникать.
Ну так будь добр заранее об этом сообщать. Иначе это выглядит как бред
Aleksandr Sharahovmini.weblabМеня смутили числа 2^N и 2^N - 1 , и я долго думала, откуда они взялись ...

Первое из чисел - количество подмножеств множества из N элементов ...
о чем я и написал.
...
Рейтинг: 0 / 0
из тестового задания
    #39151216
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovDima Tпропущено...

Этим ты и запутал. Элементов не N а 2^N
Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3
Просьба не навязывать мне свои обозначения.
Можете считать, что мне лень в них вникать.
Это я больше для mini.weblab писал, на это
mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить.
Предположил что именно могло ее запутать. Возможно ошибся.

А твои доказательства целиком не читал, много букав.
...
Рейтинг: 0 / 0
из тестового задания
    #39151270
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryAleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать.


Доказывается необходимость и достаточность 2^N-1 переключателей для 2^N дверей.
Какое место в доказательстве непонятно?
...
Рейтинг: 0 / 0
25 сообщений из 166, страница 5 из 7
Форумы / Программирование [игнор отключен] [закрыт для гостей] / из тестового задания
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]