
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.175] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
задача:
На заре развития радио была разработка сигналов для общния между радиолюбителями всего мира. эта система был ???а придумана американским художником Морзе. с развитием вычислительной техники эту систему попытались применить для приема/передачи компьютерной информации. вот что из этого получилось: точка представлена сигналом 0, тире - сигналом 1. получена последовательность сигналов: 1010100000001000 11000 101110110 10101010000011001001 можнл ли, используя нижеуказанную таблицу, расшифровать полуенный код, и что из этого выйдет. А - 01, Б - 1000, В - 011, Г - 110, Д - 100, Е - 0, Ж - 0001, З -1100, И - 00, Й - 0111, К - 101, Л - 0100, М - 11, Н - 10, О - 111, П - 0110, Р - 010, С - 000, Т - 1, У - 001, Ф - 0010, Х - 0000, Ц - 1010, Ч - 1110, Ш - 1111, Щ - 1101, Ь - 1001, Ы - 1011, Э - 00100, Ю - 0011, Я - 0101, 1 - 01111, 2 - 00111, 3 - 00011, 4 - 00001, 5 - 00000, 6 - 10000, 7 - 11000, 8 - 11100, 9 - 11110, 0 - 111111, разделитель - 01000 |
Сообщ.
#2
,
|
|
|
В коде Морзе есть еще один важный параметр - пауза между закодированными символами. Так как здесь идет сплошной поток данных без пауз, а коды Морзы не являются префиксными, то одназначно определить закончилась декодирование очередного символа, или нет, нельзя.
Например, 011000 можно декодировать как АБ, ВС, ЕМЕИ. |
Сообщ.
#3
,
|
|
|
Можно так: парсим с начала строки. Подходят только две буквы: К и Ц. Отрезаем их от основной строки, получаем:
0100000001000 11000 101110110 10101010000011001001 (К) и 100000001000 11000 101110110 10101010000011001001 (Ц) Теперь парсим уже ее. Классическая рекурсия. Если в конце концов все буквы уложатся ровно единственным образом -- то да, можно расшифровать (эту) строку. Если не уложатся -- нельзя. Если вариантов несколько -- пишем еще и спеллчекер ![]() Или тебе ее решить нужно? |
Сообщ.
#4
,
|
|
|
PS
При чем здесь Морзе? Он бы в гробу перевереулся ![]() |
Сообщ.
#5
,
|
|
|
Нельзя. Код должен быть префиксным. Посмотреть хотя бы на 11000. То ли "7", то ли "ГЕЕ", то ли "ЧЕ", то ли "ТТС" и т.д. Вот если только использовать лексический, синтаксический и семантический анализы полученных предложений. Но это слишком накладно по времени.
|
Сообщ.
#6
,
|
|
|
А чего это народу так много на форуме?(это, конечно, хорошо) Пока свой ответ писал уже трое ответили (только не надо про тормоза).
|
Сообщ.
#7
,
|
|
|
Наверно, народ только и ждет, что бы кому-нибудь ответить.
![]() Только я не понял, к кому обращен 3-ий пост? Причем здесь гроб? |
Сообщ.
#8
,
|
|
|
>UnFleshed_One.
>Можно так: парсим с начала строки. Подходят только две буквы: К и Ц. А как же "Н" и "Н"? |
Сообщ.
#9
,
|
|
|
> Только я не понял, к кому обращен 3-ой пост? Причем здесь гроб?
Притом что Морзе придумал не криптоалгоритм, а средство связи ![]() ![]() > Нельзя. Код должен быть префиксным. Посмотреть хотя бы на 11000. То ли "7", то ли "ГЕЕ", то ли "ЧЕ", то ли "ТТС" и т.д. Вот если только использовать лексический, синтаксический и семантический анализы полученных предложений. Но это слишком накладно по времени. Необязательно нельзя. Есть шанс, что цепочка замыкается малым числом вариантов. А применение психлогического анализа (составителей) позволяет предположить что число вариантов очень даже конечно. (Чуть ли не 1). Это если речь идет о той единственной строке. |
Сообщ.
#10
,
|
|
|
> А как же "Н" и "Н"?
Просто третий вариант. |
Сообщ.
#11
,
|
|
|
UnFleshed_One
Не спорю. Число вариантов в любом случае будет конечно. Но научить программу выбрать единственно верный будет ой как сложно. А если она будет находить 0.000000001\% всех предложений (у которых всего 1 вариант), то на кой она нужна. |
Сообщ.
#12
,
|
|
|
> А если она будет находить 0.000000001\% всех предложений (у которых всего 1 вариант), то на кой она нужна.
Я полагаю расшифровать нужно только одну строку ![]() 1010100000001000 11000 101110110 10101010000011001001 |
Сообщ.
#13
,
|
|
|
Взял я вот эту строчку 10101000000010001100010111011010101010000011001001. И за пять минут нашел, что ей соответствует более 4 миллионов вариантов. И как из них выбрать нужный?
|
Сообщ.
#14
,
|
|
|
Я считаю так. Программно можно найти все слова (это, как правильно заметил UnFleshed_One, классическая рекурсия). Исключить из всего этого текст совсем несуразный (напр., подряд "ЦЦ", "ЫЫ" и т.д.). А дальше человек сам быстрее найдёт связный текст, чем человечество создаст искуственный интеллект. А напрямую решить задачу (для произвольного кода) нельзя.
|
Сообщ.
#15
,
|
|
|
Вручную? Они все ровно укладываются? А те у которых хвосты (типа 1) остаются отбросил?
|