Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Шифр Цезаря


Автор: о0НиК0о 4.4.2007, 18:07
Нужно примерно следующие:
Пользователь вводит какой-нибудь текст, и после клика на кнопку все символы меняются по следующей схеме:

А меняется на  ЮЯ
Б – ЯА
В – АБ 
Г – БВ 
Д – ВГ 


т.е. каждый символ заменяется двумя предыдущими.
Обратная дешифровка тоже желательна.

Автор: Sardar 4.4.2007, 22:34
о0НиК0о, ты издеваешься лабы постить? smile

Код

var str = "привет";
alert(cesar(str));

function cesar(str) {
//если я пропустил какие буквы, добавь
    var alfa = "абвгдеёжзиклмнопрстуфхцчшщыьэюя";
    var ret = "", d;
    for(var i=0; i<str.length; i++) {
       //если точно задать коды символов, то поиск лучше убрать. если алфавит
       //упорядочен от балды, то на крайняк замени на поиск в хештаблице
       if((d = alfa.indexOf(str.charAt(i))) < 0) throw "Not in alfabet: " + str.charAt(i);
       //alert(d + ", " + cycle(d-2, alfa.length) + ", " + cycle(d-1, alfa.length));
       ret += alfa.charAt(cycle(d-2, alfa.length)) + alfa.charAt(cycle(d-1, alfa.length));
    }
    return ret;
}

function cycle(i, limit) {
   return (i = i % limit) < 0? limit + i: i;
}

Автор: о0НиК0о 4.4.2007, 23:02
Спасибо  smile
 
p.s. это не лаба.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)