Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2018, 01:14
Новичок на форуме
Отправить личное сообщение для sdffdsmdsfmdsmfsmd Посмотреть профиль Найти все сообщения от sdffdsmdsfmdsmfsmd
 
Регистрация: 24.11.2018
Сообщений: 3

Заполнение матрицы
Всем привет,проблема с заполнением матрицы для шифрования методом смены столбцов. Генирация проходит нормально, но заполнение не корректно : текст (кусочек слова), который не входит в диапазон одной строки должен переноситься в следующую строку. Именно это и не получается.
var matrix=[];
    var key=prompt('enter key').split(''),
        text=input.value.toUpperCase().split(""); //console.log(text);
 console.log(key); 
        for (var i=0; i<input.value.length; i++){
            matrix[i]=[];
            for(var j=0; j<key.length; j++){
                if (matrix[i].length>input.value.length){
                    matrix[i+1][j]=text[j+(input.value.length-key.length)];
                }
                else {
                    matrix[i][j]=text[j];
                }
            }
        }
 console.log(matrix);

ну а на картинке пример того как должно быть...
Изображения:
Тип файла: jpg Снимок.jpg (10.9 Кб, 8 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2018, 03:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

sdffdsmdsfmdsmfsmd,
var matrix=[];
        var key=[3,1,4,2,5];
        var text="ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ";
        for (var i=0; i< text.length; ){
            var txt = text.slice(i,i+= key.length).split("");
                    matrix.push(txt)

        }

       console.log(matrix);
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2018, 04:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

sdffdsmdsfmdsmfsmd,
var matrix={};
        var key=[3,1,4,2,5];
        var text="ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ";
        for (var i=0; i< text.length; i++){
            var j = i % key.length;
                j = key[j];
            matrix[j] = ( matrix[j] || "") +  text[i]

        }
        var out = "";
        for (var i=0; i< key.length;) out += matrix[++i];
       console.log(out);
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2018, 18:37
Новичок на форуме
Отправить личное сообщение для sdffdsmdsfmdsmfsmd Посмотреть профиль Найти все сообщения от sdffdsmdsfmdsmfsmd
 
Регистрация: 24.11.2018
Сообщений: 3

Сообщение от рони Посмотреть сообщение
sdffdsmdsfmdsmfsmd,
var matrix={};
        var key=[3,1,4,2,5];
        var text="ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ";
        for (var i=0; i< text.length; i++){
            var j = i % key.length;
                j = key[j];
            matrix[j] = ( matrix[j] || "") +  text[i]

        }
        var out = "";
        for (var i=0; i< key.length;) out += matrix[++i];
       console.log(out);
Спасибо большое ,а дешифровку как реализовать?
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2018, 21:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

sdffdsmdsfmdsmfsmd,
var matrix=[];
        var key=[2,0,3,1,4];
        var text="ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ";
        for (var i=0; i< text.length; ){
            var txt = text.slice(i,i+= key.length).split("");
                    matrix.push(txt)
        }

console.table(matrix);

function encodeStr(text, key) {
    var matrix = {},
        out = "";
    for (var i = 0; i < text.length; i++) {
        var j = i % key.length;
        matrix[j] = (matrix[j] || "") + text[i]
    }
    for (var i = 0; i < key.length; ++i) {
        var j = key[i];
        out += matrix[j]
    }
    return out
};


var key = [2,0,3,1,4];
var text = "ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ";

console.log(encodeStr(text, key) )

var txt = "ИАТЕАИПРРЙСВМРНРНРМУПТКЕШОЕО";

function decodeStr(text, key) {
    var matrix = {},
        out = {};
    for (var i = 0; i < text.length; i++) {
        var j = i % key.length;
        matrix[j] = (matrix[j] || 0) + 1
    }
    for (var i = 0; i < key.length; i++) {
        var j = key[i];
        var len = matrix[j];
        out[j] = text.slice(0, len);
        text = text.slice(len)
    }
    for (var i = 0;; i++) {
        var j = i % key.length;
        if (out[j]) {
            text += out[j].slice(0, 1);
            out[j] = out[j].slice(1)
        } else break
    }
    return text
};

console.log(decodeStr(txt, key));

Последний раз редактировалось рони, 25.11.2018 в 21:20.
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2018, 00:30
Новичок на форуме
Отправить личное сообщение для sdffdsmdsfmdsmfsmd Посмотреть профиль Найти все сообщения от sdffdsmdsfmdsmfsmd
 
Регистрация: 24.11.2018
Сообщений: 3

......это.....просто.....а****нно!
Пока в этом мире есть такие люди, готовые потратить свое время ради того чтобы помочь другим - будем оставаться людьми...
Большое спасибо, извините ,что отнял время
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение матрицы riddele_for_you Элементы интерфейса 2 11.12.2017 10:17
Конструктор матрицы Program_cat Общие вопросы Javascript 1 30.10.2017 12:10
JS, <SELECT> заполнение bma2004 Общие вопросы Javascript 6 13.11.2016 13:48
Для заданной квадратной матрицы сформировать.. valera_77 Общие вопросы Javascript 1 22.04.2015 16:49
Матрица JS запись и чтение из матрицы greg_zel Общие вопросы Javascript 9 04.05.2012 19:55