我有单词数组(例如岛,狗,猫,新闻)和空矩阵4x4。 如何将单词插入矩阵中,单词可能是弧形的?
结果示例:
我可以使用什么算法?
我尝试用js做,但是没有想法。
var wordPazzle = {
words : ['island', 'dog', 'cat', 'news'],
generateMatrix : function() {
//apply algorithm this
}
}
更新:我看到Lee algorithm,但不知道如何将其应用于我的功能。
答案 0 :(得分:0)
使用以下路径,我得到一个有效的矩阵:
1 2 3 4
8 7 6 5
9 10 11 12
13 14 15 16
此路径的实现非常简单。
function generateMatrix(length, height, words){
wordConcatenated = words.join("");
matrix=[]
count = 0;
for (var y = 0; y < height; y++){
matrix[y] = [];
for (var x = 0; x < length; x++){
if (y%2){
index = length - 1 - x;
} else {
index = x;
}
matrix[y][index] = wordConcatenated[count];
count++;
}
}
console.log(matrix)
}
generateMatrix(4,4, ['island', 'dog', 'cat', 'news']);
答案 1 :(得分:0)
所以,如果你需要任何有效矩阵,那么只需选择任何有效的方向(例如
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
var wordPazzle = {
words : ['island', 'dog', 'cat', 'news'],
generateMatrix : function() {
var a = [];
for ( var i = 0; i < 4; i++ )
a[i] = [];
var w = this.words, i0 = 0, j0 = 0;
for ( var i = 0; i < w.length; i++ ) {
for ( var j = 0; j < w[i].length; j++ ) {
a[i0][j0] = w[i][j];
if (i0%2 == 0 ) {
if (j0 < 3 )
j0++;
else
i0++;
} else {
if (j0 > 0)
j0--;
else
i0++;
}
}
}
console.log(a);
return a;
}
};