Форум » Вычисление количества информации » № 5703 » Ответить

№ 5703

Ивашкова: Задача: В исследовательской лаборатории проводится наблюдение за солнечной активностью. Раз в год данные о наблюдениях записываются в базу данных с использованием минимально возможного целого числа байт. Первая часть данных включает в себя результат измерений, состоящий из 5-ти заглавных латинских букв (в латинском алфавите 26 символов). Вторая часть – год измерения (числа от 2000 до 2099 включительно). При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит. Сколько байтов требуется для хранения результатов всех измерений? Первая часть кодируется 25 битами (5 символов по 5 бит каждый) и вторая 16 битами (четыре цифры по 4 бита). Итого 41 бит или 6 байт на 1 результат наблюдений. На результаты всех измерений 6*100=600 байт. В ответе 500 байт? Почему? Что не так в решении?

Ответов - 29, стр: 1 2 All

artmem: s11kai пишет: На это могу сказать только одно, стоит перечитать условие, или указать автору задания на ваши противоречия Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? В условии требуется закодировать посимвольно, используя минимальное количество бит для кода. Про одинаковую длину кодов обычно оговаривается отдельно, как раз таки для устранения двусмысленности условия. В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. А автор присутствовал выше в данном обсуждении, думаю он видел все мнения на этот счет, и своё трактование двусмысленностей допущенных в условии предоставил. Но это не отменяет проблему в условии, которое следует исправить.

s11kai: artmem пишет: Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? ... В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. Про других людей не скажу, не изучал, а вам, для наиболее точного ответа задам уточняющий вопрос, по сколько бит вы отводите на кодирование двух последних чисел?

artmem: s11kai пишет: по сколько бит вы отводите на кодирование двух последних чисел? На кодирование каждой из двух последних цифр я отвожу минимально возможное количество бит. А именно по 4 бита для каких-либо 4х цифр, и по 3 бита на остальные цифры. Так как в числах от 0 до 99 цифры от 0 до 9 имеют одинаковую частоту, то мне не важно, какие цифры я буду кодировать 4мя битами, а какие 3мя. В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами.


s11kai: artmem пишет: В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами. Я так и подумал - вы кодируете: во - первых, цифры во- вторых, кодируете их как захотите, хотя по условию - нужно кодировать символы, и не как вам захочется, а по оговоренному правилу: Ивашкова пишет: При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит : т.е. число бит должно быть и одинаковым для всех символов и минимально возможным!

artmem: s11kai пишет: во - первых, цифры Здесь "цифры" это 2 последних символа года, которые как раз принимают значения цифр. Какое отличие символа от цифры вы имеете здесь в виду? s11kai пишет: во- вторых, кодируете их как захотите Я кодирую посимвольно, то есть каждому символу присваивается некий код. При этом используется минимально возможное число бит. s11kai пишет: т.е. число бит должно быть и одинаковым для всех символов и минимально возможным! А вот про одинаковое число это уже додумки и подгонки под ответ, в условии нет такого утверждения. В подавляющем большинстве условий задач, которые я видел, везде присутствует оговорка про "минимальное" и "одинаковое" число бит.

s11kai: Хорошо, пробуем зайти с другого конца. artmem пишет: Здесь "цифры" это 2 последних символа года, которые как раз принимают значения цифр. Какое отличие символа от цифры вы имеете здесь в виду? Для упрощения понимания примем за символ - шкаф (причем один), на полках (битах) которого нужно будет хранить цифры от 0 до 9, причем количество полок мы должны заложить заранее до начала измерений (изготовления шкафа). artmem пишет: А именно по 4 бита для каких-либо 4х цифр, и по 3 бита на остальные цифры. Т.е. вы, тем самым, берете два шкафа, один с 4-мя, а другой с 3-мя ... artmem пишет: то есть каждому символу присваивается некий код То-то и оно, а по условию, нужно не присваивать некий код, а выделить количество бит, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит как для букв так и для цифр , а буквы вы не сможете закодировать 4-мя, и тем более - 3-мя битами. Откуда следует: минимально возможное количество бит для кодирования обоих частей равно 5! import math bit = 25+5+5 bait = math.ceil(bit/8) print('Ответ:',bait*100) #Ответ: 500 С уважением

artmem: s11kai пишет: их количество должно быть неизменным в процессе последующих измерений Это додумка - в условии такого нет, перечитайте внимательнее. Все в вашей аналогии было верно, кроме этого утверждения, откуда все и посыпалось. s11kai пишет: То-то и оно, а по условию, нужно не присваивать некий код, а выделить количество бит Вы не можете выделить количество бит в отрыве от кодирования. Так что вы тоже кодируете. Вы определяете степень двойки, то есть количество кодовых слов, которые резервируете для символов. В моих формулировках проблемы нет никакой. Если вам так угодно, то я выделяю количество бит равное 4м и 3м. Вы действительно считаете, что ответ одинаковый в двух нижеприведенных задачах? Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?

 Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?

s11kai: artmem пишет: Если вам так угодно, то я выделяю количество бит равное 4м и 3м. Возникает смутное подозрение, что вы не понимаете смысла выражения: "минимально возможное количество бит" - вам нужно определится либо 3 бита, либо 4, а не оба одновременно! Правильно ли я понял, что это условие придумано вами? artmem пишет: Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит Если это так, то, либо мне кажется, что вы "?", либо вы - противоречите самому себе... Удачи!

artmem: Давайте последовательно разберемся в моём условии. s11kai пишет: противоречите самому себе... Прошу вас, давайте развернутый ответ, мне не совсем понятно, что вы имеете под противоречием и где вы его нашли. И давайте пошагово разберём условие, предоставленное мной. 1 шаг) "Сообщение состоит из одной цифры". Здесь действительно нужно уточнение в скобках, что используются десятичные цифры. Перечислите, пожалуйста, все сообщения, состоящие из одной цифры, где "одной" - длина сообщения, "цифры" - символа десятичной цифры. UPD: Переписал условия. Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимально возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Имеются ли по вашему теперь противоречия, и одинаковый ли в них ответ?

Natali1960: artmem пишет: цифры от 0 до 9 имеют одинаковую частоту, то мне не важно, какие цифры я буду кодировать 4мя битами, а какие 3мя Простите, что вмешиваюсь, но мне понравилась ваша мысль кодировать двоичным кодом один символ, хранящий цифры от 0 до 9 тремя битами. У меня получается тремя битами закодировать только от 0 до 7 - 8 чисел 000 - 0 001 - 1 010 - 2 011 - 3 100 - 4 101 - 5 110 - 6 111 - 7 а как тремя битами закодировать числа 8 и 9, может так 000 0 - 8 000 1 - 9

s11kai: Natali1960 пишет: а как тремя битами закодировать числа 8 и 9, может так 000 0 - 8 000 1 - 9 увы, если это делать в совокупности с первыми, то только так: 1000 - 8 1001 - 9

ek08: отстойное задние, встретил бы на егэ, то из-за формулировки не решил бы вообще

Макисм: Почему 16 байтами кодируется вторая часть, ведь у нас алфавит - 100, следовательно каждый символ весит 7 байт.

noname: Макисм пишет: Почему 16 байтами кодируется вторая часть, ведь у нас алфавит - 100, следовательно каждый символ весит 7 байт. *16 битами В условия задачи говорится о посимвольном кодировании. Мы кодируем цифры от 0 до 9, а не числа. Потом записываем ответ, кодируя каждую ЦИФРУ в ЧИСЛЕ: 0010 0000 1001 1001 = "2099" Итого 16 бит или 2 байта. Так предполагает автор темы. В условии так же указано, что каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит Посколкьу у нас диапазон от 2000 до 2099, то мы можем первую цифру закодировать двумя битами. вторую одним. Дальше по 4. Итого 2+1+4+4 = 11 + 25 = 36 / 8 = 4,5 байт ~ 5 байт * 100 = 500 По крайне мере так можно натянуть сову на глобус, когда знаешь конечный ответ. Енивей. Если ты всё же имел ввиду 7 бит и предлагаешь во второй части хранить числа, а потом представлять их как "20" + str(BinToDec(хранимое число)) для отображения даты, то такое уже было.



полная версия страницы