52 lines
829 B
JavaScript
52 lines
829 B
JavaScript
return {
|
|
make: make,
|
|
vertical: vertical,
|
|
horizontal: horizontal,
|
|
diagonal: diagonal,
|
|
zero: zero,
|
|
plus: plus,
|
|
opposite: opposite,
|
|
isSmaller: isSmaller,
|
|
key: key,
|
|
ofKey: ofKey
|
|
};
|
|
|
|
function make(row, column) {
|
|
return {row: row, column: column};
|
|
}
|
|
|
|
function zero() {
|
|
return make(0, 0);
|
|
}
|
|
|
|
function vertical(length) {
|
|
return make(length, 0);
|
|
}
|
|
|
|
function horizontal(length) {
|
|
return make(0, length);
|
|
}
|
|
|
|
function diagonal(length) {
|
|
return make(length, length);
|
|
}
|
|
|
|
function plus(v0, v1) {
|
|
return {row: v0.row + v1.row, column: v0.column + v1.column};
|
|
}
|
|
|
|
function opposite(v) {
|
|
return {row: -v.row, column: -v.column};
|
|
}
|
|
|
|
function isSmaller(v0, v1) {
|
|
return v0.row <= v1.row && v0.column <= v1.column;
|
|
}
|
|
|
|
function key(v) {
|
|
return v.row + ':' + v.column;
|
|
}
|
|
|
|
function ofKey(k) {
|
|
return make.apply(null, k.split(':'));
|
|
}
|