2017-12-22 24 views
-2

I은 ​​할 아래 예와 같은 2 차원 매트릭스 :수평 차원 매트릭스 변환 (스케일) - JAVASCRIPT

00000000000000000000000000000000000000000000000000 
00110000011000111111000110000000110000001111100000 
00110000011000110000000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00111111111000111111000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00110000011000111111000111111000111111001111100000 
00000000000000000000000000000000000000000000000000 

내가되도록 특정 인자 (e.g 2.0 or 0.5, ...) 수평 행렬을 스케일링함으로써,이 변환 행렬하려는

000000000000000000000000000000000000000000000000000000000000000000000000000000 ... 
00111100000000000111100000011111111111111000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111111111111111111100000011111111111111000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011111111111111000000111111111111110000 ... 
0000000000000000000000000000000000000000000000000000000000000000000000000000000 ... 

또는

00000000000000000000000000000000000 
00100010011110010000010000001110000 
00100010010000010000010000010001000 
00100010010000010000010000010001000 
00111110011110010000010000010001000 
00100010010000010000010000010001000 
00100010010000010000010000010001000 
00100010011110011110011110001110000 
00000000000000000000000000000000000 
: 매트릭스 나중에 다음과 같습니다

내 자바 스크립트 "매트릭스"- array은 - 다음과 같습니다 : 나는 어떻게 계속하는 단서가 없기 때문에

var matrix = [ 
    '001000100001', 
    '001111101100', 
    '001111101100', 
    '001000100001' 
] 

var matrix = [ 
 
'00000000000000000000000000000000000000000000000000', 
 
'00110000011000111111000110000000110000001111100000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00111111111000111111000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000111111000111111000111111001111100000', 
 
'00000000000000000000000000000000000000000000000000'] 
 

 

 
Array.prototype.scale_horizontal = function(factor) { 
 
    var matrix=this; 
 
    var new_matrix=new_matrix(matrix.length, matrix[0].length*factor, 0) 
 
    for (var y=0; y<matrix.length; y++) { 
 
    for (var x=0; x<matrix[y].length; x++) { 
 
    // no idea 
 
    } 
 
    } 
 

 
} 
 

 

 

 
function new_matrix(rows, cols, value) { 
 
\t var arr = []; 
 
\t for (var i = 0; i < rows; i++) { 
 
\t \t arr.push([]); 
 
\t \t arr[i].push(new Array(cols)); 
 
\t \t for (var j = 0; j < cols; j++) arr[i][j] = value; 
 
\t };return arr; 
 
}

그래서 나는 몇 가지 코드 아이디어에 대해 매우 감사 할 것 이 함수를 코딩.

미리 감사, 조나스

+0

이 논리 '는 항상 두 개의 00로 시작 그런 다음 같은 수의 청크에 factor '를 곱하면됩니다. 정수가 아닌 숫자는 어떨까요? 오류? 모으다? 반올림? 언제나 첫 번째 2 차원 행렬부터 시작 하시겠습니까? 아니면 여러 변형이 서로간에 작동 할 수 있어야합니까? – Shilly

답변

0

당신은 하나의 함수에 모두 넣을 수 있습니다 :

function scaleHorizontal(matrix, factor) { 
    var scaledMatrix = []; 
    for(var i = 0; i < matrix.length; i++) { 
     var row = ''; 
     for(var j = 0; j <= matrix[i].length - 1; j += (1/factor)) { 
      row += matrix[i][Math.round(j)]; 
     } 
     scaledMatrix.push(row); 
    } 
    return scaledMatrix; 
} 

예 출력 :

> scaleHorizontal(matrix, 0.25) 
["0000000000000", 
"0000101010110", 
"0000001010000", 
"0000001010000", 
"0110101010000", 
"0000001010000", 
"0000001010000", 
"0000101111110", 
"0000000000000"]