var array = [
[
'один',
'два',
'три',
'четыре'
// всего 16 букв
]
];
array[0]
должен быть размещен в таблицу, каждая буква - это отдельная ячейка таблицы. Расположение слов в таблице - не имеет значения. Главная задача - оставить их читаемыми по одной из сторон.|о|д|и|н| |ч|е|т|ы|
|ч|е|р|т| |т|д|о|р|
|е|т|ы|р| |р|в|д|е|
|д|в|а|и| или |и|а|и|н|
| | | | | |ч|е|т|ы|
|ч|е|р| | | | | |р|
|е|т|ы| | | | | |е|
| | | | | или | | | | |
for(var value = 0; value < array[0].length; value++) {
for (var index = 0; index < array[0][value].length; index++) {
// console.log(array[0][value][index]);
}
}
var cells = 4;
.cells = 4 cells = 4
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | или | | | | |
16 букв | | | | |
20 букв
|о|д|и|н|
|е|т|ы|д|
|ч|е|р|в|
|и|р|т|а|
function makeTable(data) {
data = data.join('').split('');
let width = Math.sqrt(data.length) | 0;
let height = (data.length / width) | 0;
while (width * height !== data.length) {
width--;
height = (data.length / width) | 0;
}
const position = [ 0, 0 ];
const directions = [
[ 1, 0 ],
[ 0, 1 ],
[ -1, 0 ],
[ 0, -1 ],
];
let direction = 0;
const result = Array.from({ length: height }, n => Array(width).fill(null));
for (const n of data) {
result[position[1]][position[0]] = n;
if (null !== (result[position[1] + directions[direction][1]] || {})[position[0] + directions[direction][0]]) {
direction = (direction + 1) % directions.length;
}
position[0] += directions[direction][0];
position[1] += directions[direction][1];
}
return result.map(n => n.join(' ')).join('\n');
}
console.log(makeTable([ 'раз', 'два', 'три' ])); /*
р а з
р и д
т а в
*/
console.log(makeTable([ 'один', 'два', 'три', 'четыре' ])); /*
о д и н
е т ы д
ч е р в
и р т а
*/
console.log(makeTable([ 'hello', ',', ' ', 'world', '!!' ])); /*
h e
! l
! l
d o
l ,
r
o w
*/
function makeSnake(letters, width) {
var snake = [];
for (var i = 0; letters.length > 0; i++) {
var chunk = letters.splice(0, width) // отрезаем куски по ширине
if (i%2) chunk.reverse() // разворачиваем нечетные
snake = snake.concat(chunk)
}
return snake
}