Автор | Сообщение |
|
Отправлено: 11.11.22 23:55. Заголовок: № 5703
Задача: В исследовательской лаборатории проводится наблюдение за солнечной активностью. Раз в год данные о наблюдениях записываются в базу данных с использованием минимально возможного целого числа байт. Первая часть данных включает в себя результат измерений, состоящий из 5-ти заглавных латинских букв (в латинском алфавите 26 символов). Вторая часть – год измерения (числа от 2000 до 2099 включительно). При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит. Сколько байтов требуется для хранения результатов всех измерений? Первая часть кодируется 25 битами (5 символов по 5 бит каждый) и вторая 16 битами (четыре цифры по 4 бита). Итого 41 бит или 6 байт на 1 результат наблюдений. На результаты всех измерений 6*100=600 байт. В ответе 500 байт? Почему? Что не так в решении?
| |
|
Ответов - 29
, стр:
1
2
All
[только новые]
|
|
|
Отправлено: 13.03.23 13:24. Заголовок: s11kai пишет: На эт..
s11kai пишет: цитата: | На это могу сказать только одно, стоит перечитать условие, или указать автору задания на ваши противоречия |
| Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? В условии требуется закодировать посимвольно, используя минимальное количество бит для кода. Про одинаковую длину кодов обычно оговаривается отдельно, как раз таки для устранения двусмысленности условия. В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. А автор присутствовал выше в данном обсуждении, думаю он видел все мнения на этот счет, и своё трактование двусмысленностей допущенных в условии предоставил. Но это не отменяет проблему в условии, которое следует исправить.
| |
|
|
Отправлено: 13.03.23 15:01. Заголовок: artmem пишет: Выдел..
artmem пишет: цитата: | Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? ... В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. |
| Про других людей не скажу, не изучал, а вам, для наиболее точного ответа задам уточняющий вопрос, по сколько бит вы отводите на кодирование двух последних чисел?
| |
|
|
Отправлено: 13.03.23 15:33. Заголовок: s11kai пишет: по ск..
s11kai пишет: цитата: | по сколько бит вы отводите на кодирование двух последних чисел? |
| На кодирование каждой из двух последних цифр я отвожу минимально возможное количество бит. А именно по 4 бита для каких-либо 4х цифр, и по 3 бита на остальные цифры. Так как в числах от 0 до 99 цифры от 0 до 9 имеют одинаковую частоту, то мне не важно, какие цифры я буду кодировать 4мя битами, а какие 3мя. В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами.
| |
|
|
Отправлено: 13.03.23 18:25. Заголовок: artmem пишет: В при..
artmem пишет: цитата: | В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами. |
| Я так и подумал - вы кодируете: во - первых, цифры во- вторых, кодируете их как захотите, хотя по условию - нужно кодировать символы, и не как вам захочется, а по оговоренному правилу: Ивашкова пишет: цитата: | При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит |
|
: т.е. число бит должно быть и одинаковым для всех символов и минимально возможным!
| |
|
|
Отправлено: 13.03.23 18:36. Заголовок: s11kai пишет: во - ..
s11kai пишет: Здесь "цифры" это 2 последних символа года, которые как раз принимают значения цифр. Какое отличие символа от цифры вы имеете здесь в виду? s11kai пишет: цитата: | во- вторых, кодируете их как захотите |
| Я кодирую посимвольно, то есть каждому символу присваивается некий код. При этом используется минимально возможное число бит. s11kai пишет: цитата: | т.е. число бит должно быть и одинаковым для всех символов и минимально возможным! |
| А вот про одинаковое число это уже додумки и подгонки под ответ, в условии нет такого утверждения. В подавляющем большинстве условий задач, которые я видел, везде присутствует оговорка про "минимальное" и " одинаковое" число бит.
| |
|
|
Отправлено: 14.03.23 04:28. Заголовок: Хорошо, пробуем зайт..
Хорошо, пробуем зайти с другого конца. 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 С уважением
| |
|
|
Отправлено: 14.03.23 11:25. Заголовок: s11kai пишет: их ко..
s11kai пишет: цитата: | их количество должно быть неизменным в процессе последующих измерений |
| Это додумка - в условии такого нет, перечитайте внимательнее. Все в вашей аналогии было верно, кроме этого утверждения, откуда все и посыпалось. s11kai пишет: цитата: | То-то и оно, а по условию, нужно не присваивать некий код, а выделить количество бит |
| Вы не можете выделить количество бит в отрыве от кодирования. Так что вы тоже кодируете. Вы определяете степень двойки, то есть количество кодовых слов, которые резервируете для символов. В моих формулировках проблемы нет никакой. Если вам так угодно, то я выделяю количество бит равное 4м и 3м. Вы действительно считаете, что ответ одинаковый в двух нижеприведенных задачах? Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?
Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?
| |
|
|
Отправлено: 14.03.23 11:53. Заголовок: Правильно ли я понял..
artmem пишет: цитата: | Если вам так угодно, то я выделяю количество бит равное 4м и 3м. |
| Возникает смутное подозрение, что вы не понимаете смысла выражения: "минимально возможное количество бит" - вам нужно определится либо 3 бита, либо 4, а не оба одновременно! Правильно ли я понял, что это условие придумано вами? artmem пишет: цитата: | Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит |
| Если это так, то, либо мне кажется, что вы "?", либо вы - противоречите самому себе... Удачи!
| |
|
|
Отправлено: 14.03.23 12:32. Заголовок: Давайте последовател..
Давайте последовательно разберемся в моём условии. s11kai пишет: цитата: | противоречите самому себе... |
| Прошу вас, давайте развернутый ответ, мне не совсем понятно, что вы имеете под противоречием и где вы его нашли. И давайте пошагово разберём условие, предоставленное мной. 1 шаг) "Сообщение состоит из одной цифры". Здесь действительно нужно уточнение в скобках, что используются десятичные цифры. Перечислите, пожалуйста, все сообщения, состоящие из одной цифры, где "одной" - длина сообщения, "цифры" - символа десятичной цифры. UPD: Переписал условия. Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимально возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Имеются ли по вашему теперь противоречия, и одинаковый ли в них ответ?
| |
|
|
Отправлено: 17.03.23 10:53. Заголовок: artmem пишет: цифр..
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
| |
|
|
Отправлено: 23.03.23 09:01. Заголовок: Natali1960 пишет: а..
Natali1960 пишет: цитата: | а как тремя битами закодировать числа 8 и 9, может так 000 0 - 8 000 1 - 9 |
| увы, если это делать в совокупности с первыми, то только так: 1000 - 8 1001 - 9
| |
|
|
|
Отправлено: 11.06.23 08:04. Заголовок: отстойное задние, вс..
отстойное задние, встретил бы на егэ, то из-за формулировки не решил бы вообще
| |
|
|
Отправлено: 13.09.23 20:31. Заголовок: Почему 16 байтами ко..
Почему 16 байтами кодируется вторая часть, ведь у нас алфавит - 100, следовательно каждый символ весит 7 байт.
| |
|
|
Отправлено: 13.09.23 21:47. Заголовок: Макисм пишет: Поче..
Макисм пишет: цитата: | Почему 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(хранимое число)) для отображения даты, то такое уже было.
| |
|
Ответов - 29
, стр:
1
2
All
[только новые]
|
|
|