24.11.2018, 01:14
|
Новичок на форуме
|
|
Регистрация: 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);
ну а на картинке пример того как должно быть...
|
|
24.11.2018, 03:49
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,111
|
|
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);
|
|
24.11.2018, 04:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,111
|
|
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);
|
|
25.11.2018, 18:37
|
Новичок на форуме
|
|
Регистрация: 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);
|
Спасибо большое ,а дешифровку как реализовать?
|
|
25.11.2018, 21:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,111
|
|
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.
|
|
26.11.2018, 00:30
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 3
|
|
......это.....просто.....а****нно!
Пока в этом мире есть такие люди, готовые потратить свое время ради того чтобы помочь другим - будем оставаться людьми...
Большое спасибо, извините ,что отнял время
|
|
|
|