more node algo fixes ???

This commit is contained in:
Solitai7e 2021-01-31 17:05:22 +00:00
parent 2f399799e6
commit a1bb6260ae

View file

@ -47,6 +47,15 @@ function reorder<T>(array: T[], order: number[]): T[]
return order.map(i => array[i]); return order.map(i => array[i]);
} }
function transpose<T>(matrix: T[][]): T[][]
{
return Object.keys(matrix[0])
.map(Number)
.map(
(c: number) => matrix.map(
(r: T[]) => r[c]));
}
function RowPrecedence(rowIdx: number): number[] function RowPrecedence(rowIdx: number): number[]
{ {
switch (rowIdx) { switch (rowIdx) {
@ -119,11 +128,15 @@ function findNode_current
); );
const filters: any = { const filters: any = {
left: () => reorder(nodes, RowPrecedence(rowIdx)) left: () => transpose(
.flatMap(r => r.slice(0, colIdx).reverse()), reorder(nodes, RowPrecedence(rowIdx))
.map(r => r.slice(0, colIdx).reverse())
).flat(),
right: () => reorder(nodes, RowPrecedence(rowIdx)) right: () => transpose(
.flatMap(r => r.slice(colIdx + 1)), reorder(nodes, RowPrecedence(rowIdx))
.map(r => r.slice(colIdx + 1))
).flat(),
up: () => nodes.slice(0, rowIdx).reverse() up: () => nodes.slice(0, rowIdx).reverse()
.flatMap(r => reorder(r, ColPrecedence(colIdx))), .flatMap(r => reorder(r, ColPrecedence(colIdx))),
@ -155,8 +168,9 @@ function findNode_next
gameProgress gameProgress
), ),
filter: (ns: any[]) => filter: (ns: any[]) => transpose(
reorder(ns, RowPrecedence(rowIdx)).flat() reorder(ns, RowPrecedence(rowIdx))
).flat()
}, },
right: { right: {
@ -167,8 +181,10 @@ function findNode_next
gameProgress gameProgress
), ),
filter: (ns: any[]) => reorder(ns, RowPrecedence(rowIdx)) filter: (ns: any[]) => transpose(
.flatMap(r => [...r].reverse()) reorder(ns, RowPrecedence(rowIdx))
.map(r => [...r].reverse())
).flat()
}, },
up: { up: {