Заполнение матрицы
Вложений: 1
Всем привет,проблема с заполнением матрицы для шифрования методом смены столбцов. Генирация проходит нормально, но заполнение не корректно : текст (кусочек слова), который не входит в диапазон одной строки должен переноситься в следующую строку. Именно это и не получается.
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); ну а на картинке пример того как должно быть... |
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); |
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); |
Цитата:
|
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)); |
......это.....просто.....а****нно!
Пока в этом мире есть такие люди, готовые потратить свое время ради того чтобы помочь другим - будем оставаться людьми... Большое спасибо, извините ,что отнял время |
Часовой пояс GMT +3, время: 03:59. |