За последние 24 часа нас посетили 17304 программиста и 1567 роботов. Сейчас ищут 1663 программиста ...

Задачка(препод загадал)

Тема в разделе "Решения, алгоритмы", создана пользователем alexander.pro, 23 апр 2009.

?

Решаемо???

Голосование закрыто 27 апр 2009.
  1. Да

    0 голосов
    0,0%
  2. Нет

    0 голосов
    0,0%
  1. alexander.pro

    alexander.pro Активный пользователь

    С нами с:
    11 июл 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Г. Кострома
    Вот интересно, как решается такая задачка на PHP.
    Есть строка: $str = 'ABCBCABCA', где ABC - 1 BC - 2 AB - 3 CA - 4.
    Требуется написать дешифратор.
    Пытался решить - ответ не однозначный(всегда разная комбинация).
    Если у кого какие идеи?
     
  2. kostyl

    kostyl Guest

    конечные автоматы
     
  3. Относительно постановки задачи, задача может не иметь однозначного решения.
     
  4. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Во-первых, PHP тут не имеет значения. Такая задачка решается на PHP также как и на десятке других языков программирования. Весь вопрос в алгоритме.

    Во-вторых, простой случай - 'ABCABC' - это {ABC}+{ABC} или все-таки {AB}+{CA}+{BC}???
     
  5. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Данная строка расшифровывается однозначно. Но могут быть варианты, когда однозначности не будет.
    А алгоритм простой:
    1. Начинаем с конца строки
    2. Если три последних символа не равны ABC, то последние два символа однозначно приводятся к значению и строка анализируется дальше.
    3. Если последние три символа равны ABC, то пробуем расшифровать две строки: одна без BC и одна без ABC.
    3.1. Если расшифровывается только одна, то получаем правильный вариант строки.
    3.2. Если расшифровываются обе, то получаем как минимум два варианта.
     
  6. alexander.pro

    alexander.pro Активный пользователь

    С нами с:
    11 июл 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Г. Кострома
    Cron
    В том и дело что ты не будешь знать, что там...
    Тебе могут дать и 'ABC' и 'ABCBCBCBCBCACBABCA'
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Задача имеет множество решений.
    А вообще, в таких случаях должен быть задан приоритет операций, тогда задача имеет однозначное решение.
    В данном случае лично мне сложно предположить, как бы эта задача имела однозначное решение, если приоритеты операций отождествлены.
    При одинаковом раскладе мы можем иметь n-ое количество решений, в зависимости от количества сомножителей. ((ab^n)*..)
     
  8. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    alexander.pro
    Да я понимаю, что мы сразу не знаем какая строка. Я спрашиваю, как препод предложил решать вопрос с двойственной трактовкой строки.
     
  9. kostyl

    kostyl Guest

    А чем вам не нравиться решение AlexGousev?
     
  10. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Смотря что там зашифровано!
    Если литературный текст, то пробуем все возможные комбинации, сравниваем результат со словарями и в зависимости от кол-ва найденых слов присваиваем некий вес дешифровке, когда будут перепробованы все возможные варианты выбираем вариант с максимальным весом... - это первое что пришло в голову!
     
  11. А на основании чего вы приняли допущение, что ABC имеет больший приоритет, чем BC, или AB ?
     
  12. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    флоппик
    Никаких приоритетов. Просто если последние три символа равны ABC, то имеет место два варианта: ABC и BC. В остальных случаях интерпретация однозначная.
     
  13. klerick

    klerick Guest

    Интересная задача. Без приоритетов действительно не обойтись. Однозначность может быть только в том случае, если размер входных данных ('BC', 'CB' и т.д.) будет равным.
     
  14. kostyl

    kostyl Guest

    Блин, о чем спор? Интерпретация однозначная при правильном условии и таблице кодов.