puzzle-lib 2.0.0-alpha.2 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/src/Conversion/conversion.js +18 -1
- package/build/src/Conversion/conversion.js.map +1 -1
- package/build/src/Morse/morse.d.ts +2 -2
- package/build/src/Morse/morse.js +2 -2
- package/build/src/WordSearch/wordSearch.d.ts +0 -6
- package/build/src/WordSearch/wordSearch.js +16 -39
- package/build/src/WordSearch/wordSearch.js.map +1 -1
- package/build/src/index.d.ts +1 -1
- package/build/src/index.js +1 -2
- package/build/src/index.js.map +1 -1
- package/package.json +1 -1
- package/src/Conversion/conversion.ts +20 -1
- package/src/Morse/morse.ts +2 -2
- package/src/WordSearch/wordSearch.ts +18 -44
- package/src/index.ts +1 -5
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ $ npm install --save puzzle-lib
|
|
|
15
15
|
import { decodeMorse, caesarRotations, vigenereEncrypt } from 'puzzle-lib';
|
|
16
16
|
|
|
17
17
|
// Decode morse code
|
|
18
|
-
decodeMorse('
|
|
18
|
+
decodeMorse('.---- ..--- ...--'); // '123'
|
|
19
19
|
|
|
20
20
|
// Get all Caesar cipher rotations
|
|
21
21
|
caesarRotations('hello');
|
|
@@ -82,8 +82,25 @@ function convertCharacter(input, forcedCharacterEncoding) {
|
|
|
82
82
|
}
|
|
83
83
|
return '';
|
|
84
84
|
}
|
|
85
|
+
// Auto-chunk a continuous binary string into 8-bit, 7-bit, or 5-bit groups.
|
|
86
|
+
function chunkBinary(token) {
|
|
87
|
+
if (!appearsBinary(token) || token.length <= 8) {
|
|
88
|
+
return [token];
|
|
89
|
+
}
|
|
90
|
+
const chunkSize = token.length % 8 === 0
|
|
91
|
+
? 8
|
|
92
|
+
: token.length % 7 === 0
|
|
93
|
+
? 7
|
|
94
|
+
: token.length % 5 === 0
|
|
95
|
+
? 5
|
|
96
|
+
: 8;
|
|
97
|
+
return token.match(new RegExp(`.{1,${chunkSize}}`, 'g'));
|
|
98
|
+
}
|
|
85
99
|
function splitString(input) {
|
|
86
|
-
return input
|
|
100
|
+
return input
|
|
101
|
+
.split(' ')
|
|
102
|
+
.filter(item => item !== '')
|
|
103
|
+
.flatMap(chunkBinary);
|
|
87
104
|
}
|
|
88
105
|
/**
|
|
89
106
|
* Determines the most common encoding across all tokens in a string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/Conversion/conversion.ts"],"names":[],"mappings":";;AAuBA,gEA+BC;AAMD,4CAsCC;
|
|
1
|
+
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/Conversion/conversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { EncodingLookupResult } from '../Common/EncodingLookupResult';
|
|
|
3
3
|
import { MorseEncoding } from './MorseEncoding';
|
|
4
4
|
export declare const MORSE_DOT = ".";
|
|
5
5
|
export declare const MORSE_DASH = "-";
|
|
6
|
-
export declare const MORSE_CHARACTER_DIVIDER = "
|
|
7
|
-
export declare const MORSE_WORD_DIVIDER = "
|
|
6
|
+
export declare const MORSE_CHARACTER_DIVIDER = " ";
|
|
7
|
+
export declare const MORSE_WORD_DIVIDER = "/";
|
|
8
8
|
/**
|
|
9
9
|
* Converts a MorseEncoding value to its dot/dash string representation.
|
|
10
10
|
*/
|
package/build/src/Morse/morse.js
CHANGED
|
@@ -14,8 +14,8 @@ const EncodingLookupResult_1 = require("../Common/EncodingLookupResult");
|
|
|
14
14
|
const MorseEncoding_1 = require("./MorseEncoding");
|
|
15
15
|
exports.MORSE_DOT = '.';
|
|
16
16
|
exports.MORSE_DASH = '-';
|
|
17
|
-
exports.MORSE_CHARACTER_DIVIDER = '
|
|
18
|
-
exports.MORSE_WORD_DIVIDER = '
|
|
17
|
+
exports.MORSE_CHARACTER_DIVIDER = ' ';
|
|
18
|
+
exports.MORSE_WORD_DIVIDER = '/';
|
|
19
19
|
// Reserved character used internally for dot/dash swap
|
|
20
20
|
const RESERVED_DIVIDER = 'A';
|
|
21
21
|
const MORSE_BITMASK = MorseEncoding_1.MorseEncoding.Dot | MorseEncoding_1.MorseEncoding.Dash;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { Result } from './Result';
|
|
2
2
|
import { WordSearchDirection } from './WordSearchDirection';
|
|
3
|
-
export declare enum WordSearchSpaceTreatment {
|
|
4
|
-
None = 0,
|
|
5
|
-
RemoveWithinPuzzle = 1,
|
|
6
|
-
RemoveAll = 2
|
|
7
|
-
}
|
|
8
3
|
export interface WordSearchOptions {
|
|
9
4
|
grid: string[][];
|
|
10
5
|
words: string[];
|
|
11
6
|
directions?: WordSearchDirection;
|
|
12
7
|
canBend?: boolean;
|
|
13
|
-
spaceTreatment?: WordSearchSpaceTreatment;
|
|
14
8
|
}
|
|
15
9
|
export declare function parseWordSearchGrid(input: string): string[][];
|
|
16
10
|
export declare function findWords(options: WordSearchOptions): Result[];
|
|
@@ -1,28 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WordSearchSpaceTreatment = void 0;
|
|
4
3
|
exports.parseWordSearchGrid = parseWordSearchGrid;
|
|
5
4
|
exports.findWords = findWords;
|
|
6
5
|
const trie = require("trie-prefix-tree");
|
|
7
6
|
const Result_1 = require("./Result");
|
|
8
7
|
const WordSearchDirection_1 = require("./WordSearchDirection");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
// Remove columns that are entirely spaces across all rows.
|
|
9
|
+
function collapseSpaceColumns(matrix) {
|
|
10
|
+
if (matrix.length === 0) {
|
|
11
|
+
return matrix;
|
|
12
|
+
}
|
|
13
|
+
const maxCols = Math.max(...matrix.map(row => row.length));
|
|
14
|
+
const keepColumn = [];
|
|
15
|
+
for (let col = 0; col < maxCols; col++) {
|
|
16
|
+
keepColumn.push(matrix.some(row => col < row.length && row[col] !== ' '));
|
|
17
|
+
}
|
|
18
|
+
return matrix.map(row => row.filter((_, col) => keepColumn[col]));
|
|
19
|
+
}
|
|
15
20
|
function parseWordSearchGrid(input) {
|
|
16
|
-
const lines = input.split(/\r?\n/).filter(line => line.length > 0);
|
|
21
|
+
const lines = input.split(/\r?\n/).filter(line => line.trimEnd().length > 0);
|
|
17
22
|
const grid = [];
|
|
18
23
|
for (const line of lines) {
|
|
19
24
|
grid.push(line.split(''));
|
|
20
25
|
}
|
|
21
|
-
return grid;
|
|
26
|
+
return collapseSpaceColumns(grid);
|
|
22
27
|
}
|
|
23
28
|
function findWords(options) {
|
|
24
|
-
const { words, directions: directionOption = WordSearchDirection_1.WordSearchDirection.CardinalAndDiagonal, canBend = false,
|
|
25
|
-
|
|
29
|
+
const { words, directions: directionOption = WordSearchDirection_1.WordSearchDirection.CardinalAndDiagonal, canBend = false, } = options;
|
|
30
|
+
const matrix = options.grid;
|
|
26
31
|
// Build trie from words
|
|
27
32
|
const targets = trie([]);
|
|
28
33
|
for (const full of words) {
|
|
@@ -39,8 +44,6 @@ function findWords(options) {
|
|
|
39
44
|
}
|
|
40
45
|
// Resolve directions
|
|
41
46
|
const directionVectors = resolveDirections(directionOption);
|
|
42
|
-
// Handle space treatment
|
|
43
|
-
matrix = applySpaceTreatment(matrix, spaceTreatment);
|
|
44
47
|
// Search
|
|
45
48
|
const results = [];
|
|
46
49
|
const numRows = matrix.length;
|
|
@@ -76,32 +79,6 @@ function resolveDirections(direction) {
|
|
|
76
79
|
}
|
|
77
80
|
return directions;
|
|
78
81
|
}
|
|
79
|
-
function applySpaceTreatment(matrix, treatment) {
|
|
80
|
-
if (matrix.length === 0 || treatment === WordSearchSpaceTreatment.None) {
|
|
81
|
-
return matrix;
|
|
82
|
-
}
|
|
83
|
-
const nextMatrix = [];
|
|
84
|
-
for (let yIdx = 0; yIdx < matrix.length; yIdx++) {
|
|
85
|
-
const line = [];
|
|
86
|
-
let inPuzzle = false;
|
|
87
|
-
for (let xIdx = 0; xIdx < matrix[yIdx].length; xIdx++) {
|
|
88
|
-
const letter = matrix[yIdx][xIdx];
|
|
89
|
-
if (letter !== ' ') {
|
|
90
|
-
inPuzzle = true;
|
|
91
|
-
}
|
|
92
|
-
if (treatment === WordSearchSpaceTreatment.RemoveAll && letter !== ' ') {
|
|
93
|
-
line.push(matrix[yIdx][xIdx]);
|
|
94
|
-
}
|
|
95
|
-
else if (letter !== ' ' && inPuzzle) {
|
|
96
|
-
line.push(matrix[yIdx][xIdx]);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (line.length > 0) {
|
|
100
|
-
nextMatrix.push(line);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return nextMatrix;
|
|
104
|
-
}
|
|
105
82
|
function search(start, matrix, targets, directions, canBend) {
|
|
106
83
|
const results = [];
|
|
107
84
|
if (canBend) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordSearch.js","sourceRoot":"","sources":["../../../src/WordSearch/wordSearch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wordSearch.js","sourceRoot":"","sources":["../../../src/WordSearch/wordSearch.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -25,5 +25,5 @@ export { SemaphoreEncoding } from './Semaphore/SemaphoreEncoding';
|
|
|
25
25
|
export { Point as WordSearchPoint } from './WordSearch/Point';
|
|
26
26
|
export { Result as WordSearchResult } from './WordSearch/Result';
|
|
27
27
|
export { WordSearchDirection } from './WordSearch/WordSearchDirection';
|
|
28
|
-
export { findWords, parseWordSearchGrid
|
|
28
|
+
export { findWords, parseWordSearchGrid } from './WordSearch/wordSearch';
|
|
29
29
|
export type { WordSearchOptions } from './WordSearch/wordSearch';
|
package/build/src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getResistorDisplayValue = exports.NAVAL_FLAGS = exports.getNavalFlag = exports.NATO_ALPHABET = exports.lookupNatoPhonetic = exports.NatoCharacter = exports.MorseEncoding = exports.reverseMorse = exports.parseMorseString = exports.MORSE_WORD_DIVIDER = exports.MORSE_DOT = exports.MORSE_DASH = exports.MORSE_CHARACTER_DIVIDER = exports.morseEncodingToString = exports.lookupMorseEncoding = exports.invertMorse = exports.invertAndReverseMorse = exports.decodeMorse = exports.sigFigRound = exports.sigFigFloor = exports.sigFigCeil = exports.CharacterTableEntry = exports.CharacterEncoding = exports.toOrdinal = exports.toAscii = exports.getOrdinalTable = exports.getAsciiTable = exports.determineStringEncoding = exports.determineCharacterEncoding = exports.convertString = exports.convertCharacter = exports.InlineSvg = exports.EncodingLookupResult = exports.EncodingEntry = exports.EncodingCategory = exports.CharacterImage = exports.vigenereEncrypt = exports.vigenereDecrypt = exports.rotateLetter = exports.isAlpha = exports.caesarRotations = exports.caesarRotate = exports.autokeyEncrypt = exports.autokeyDecrypt = exports.BrailleEncoding = exports.BrailleDot = exports.toggleBrailleDot = exports.lookupBrailleEncoding = exports.getBrailleDot = exports.decodeBrailleStream = void 0;
|
|
4
|
-
exports.
|
|
4
|
+
exports.parseWordSearchGrid = exports.findWords = exports.WordSearchDirection = exports.WordSearchResult = exports.SemaphoreEncoding = exports.SemaphoreDirection = exports.semaphoreDirectionToDegrees = exports.removeSemaphoreDirection = exports.lookupSemaphoreEncoding = exports.hasSemaphoreDirection = exports.getEncodingDegrees = exports.directionsToEncoding = exports.degreesToSemaphoreDirection = exports.decodeSemaphoreStream = exports.addSemaphoreDirection = exports.RESISTOR_COLOR_TABLE = exports.INVALID_RESISTOR = exports.hasResistorValue = exports.hasResistorTolerance = exports.getResistorValue = void 0;
|
|
5
5
|
var braille_1 = require("./Braille/braille");
|
|
6
6
|
Object.defineProperty(exports, "decodeBrailleStream", { enumerable: true, get: function () { return braille_1.decodeBrailleStream; } });
|
|
7
7
|
Object.defineProperty(exports, "getBrailleDot", { enumerable: true, get: function () { return braille_1.getBrailleDot; } });
|
|
@@ -98,5 +98,4 @@ Object.defineProperty(exports, "WordSearchDirection", { enumerable: true, get: f
|
|
|
98
98
|
var wordSearch_1 = require("./WordSearch/wordSearch");
|
|
99
99
|
Object.defineProperty(exports, "findWords", { enumerable: true, get: function () { return wordSearch_1.findWords; } });
|
|
100
100
|
Object.defineProperty(exports, "parseWordSearchGrid", { enumerable: true, get: function () { return wordSearch_1.parseWordSearchGrid; } });
|
|
101
|
-
Object.defineProperty(exports, "WordSearchSpaceTreatment", { enumerable: true, get: function () { return wordSearch_1.WordSearchSpaceTreatment; } });
|
|
102
101
|
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,6CAK2B;AAJzB,8GAAA,mBAAmB,OAAA;AACnB,wGAAA,aAAa,OAAA;AACb,gHAAA,qBAAqB,OAAA;AACrB,2GAAA,gBAAgB,OAAA;AAElB,mDAAgD;AAAxC,wGAAA,UAAU,OAAA;AAClB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,0CASyB;AARvB,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,iGAAA,OAAO,OAAA;AACP,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAEjB,0DAAuD;AAA/C,gHAAA,cAAc,OAAA;AACtB,8DAA2D;AAAnD,oHAAA,gBAAgB,OAAA;AACxB,wDAAqD;AAA7C,8GAAA,aAAa,OAAA;AACrB,sEAAmE;AAA3D,4HAAA,oBAAoB,OAAA;AAC5B,gDAA6C;AAArC,sGAAA,SAAS,OAAA;AACjB,sDAKiC;AAJ/B,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AACb,wHAAA,0BAA0B,OAAA;AAC1B,qHAAA,uBAAuB,OAAA;AAEzB,wEAK0C;AAJxC,oHAAA,aAAa,OAAA;AACb,sHAAA,eAAe,OAAA;AACf,8GAAA,OAAO,OAAA;AACP,gHAAA,SAAS,OAAA;AAEX,oEAAiE;AAAzD,sHAAA,iBAAiB,OAAA;AACzB,wEAAqE;AAA7D,0HAAA,mBAAmB,OAAA;AAC3B,sEAIyC;AAHvC,gHAAA,UAAU,OAAA;AACV,iHAAA,WAAW,OAAA;AACX,iHAAA,WAAW,OAAA;AAEb,uCAYuB;AAXrB,oGAAA,WAAW,OAAA;AACX,8GAAA,qBAAqB,OAAA;AACrB,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,8GAAA,qBAAqB,OAAA;AACrB,gHAAA,uBAAuB,OAAA;AACvB,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,2GAAA,kBAAkB,OAAA;AAClB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AAEd,uDAAoD;AAA5C,8GAAA,aAAa,OAAA;AACrB,sDAAmD;AAA3C,8GAAA,aAAa,OAAA;AACrB,oCAA8D;AAAtD,0GAAA,kBAAkB,OAAA;AAAE,qGAAA,aAAa,OAAA;AACzC,sDAAkE;AAA1D,0GAAA,YAAY,OAAA;AAAE,yGAAA,WAAW,OAAA;AACjC,gDAO6B;AAN3B,mHAAA,uBAAuB,OAAA;AACvB,4GAAA,gBAAgB,OAAA;AAChB,gHAAA,oBAAoB,OAAA;AACpB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,gHAAA,oBAAoB,OAAA;AAGtB,mDAU+B;AAT7B,kHAAA,qBAAqB,OAAA;AACrB,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,iHAAA,oBAAoB,OAAA;AACpB,+GAAA,kBAAkB,OAAA;AAClB,kHAAA,qBAAqB,OAAA;AACrB,oHAAA,uBAAuB,OAAA;AACvB,qHAAA,wBAAwB,OAAA;AACxB,wHAAA,2BAA2B,OAAA;AAE7B,qEAAkE;AAA1D,wHAAA,kBAAkB,OAAA;AAC1B,mEAAgE;AAAxD,sHAAA,iBAAiB,OAAA;AAEzB,8CAA+D;AAAvD,0GAAA,MAAM,OAAoB;AAClC,wEAAqE;AAA7D,0HAAA,mBAAmB,OAAA;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,6CAK2B;AAJzB,8GAAA,mBAAmB,OAAA;AACnB,wGAAA,aAAa,OAAA;AACb,gHAAA,qBAAqB,OAAA;AACrB,2GAAA,gBAAgB,OAAA;AAElB,mDAAgD;AAAxC,wGAAA,UAAU,OAAA;AAClB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,0CASyB;AARvB,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,iGAAA,OAAO,OAAA;AACP,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAEjB,0DAAuD;AAA/C,gHAAA,cAAc,OAAA;AACtB,8DAA2D;AAAnD,oHAAA,gBAAgB,OAAA;AACxB,wDAAqD;AAA7C,8GAAA,aAAa,OAAA;AACrB,sEAAmE;AAA3D,4HAAA,oBAAoB,OAAA;AAC5B,gDAA6C;AAArC,sGAAA,SAAS,OAAA;AACjB,sDAKiC;AAJ/B,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AACb,wHAAA,0BAA0B,OAAA;AAC1B,qHAAA,uBAAuB,OAAA;AAEzB,wEAK0C;AAJxC,oHAAA,aAAa,OAAA;AACb,sHAAA,eAAe,OAAA;AACf,8GAAA,OAAO,OAAA;AACP,gHAAA,SAAS,OAAA;AAEX,oEAAiE;AAAzD,sHAAA,iBAAiB,OAAA;AACzB,wEAAqE;AAA7D,0HAAA,mBAAmB,OAAA;AAC3B,sEAIyC;AAHvC,gHAAA,UAAU,OAAA;AACV,iHAAA,WAAW,OAAA;AACX,iHAAA,WAAW,OAAA;AAEb,uCAYuB;AAXrB,oGAAA,WAAW,OAAA;AACX,8GAAA,qBAAqB,OAAA;AACrB,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,8GAAA,qBAAqB,OAAA;AACrB,gHAAA,uBAAuB,OAAA;AACvB,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,2GAAA,kBAAkB,OAAA;AAClB,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AAEd,uDAAoD;AAA5C,8GAAA,aAAa,OAAA;AACrB,sDAAmD;AAA3C,8GAAA,aAAa,OAAA;AACrB,oCAA8D;AAAtD,0GAAA,kBAAkB,OAAA;AAAE,qGAAA,aAAa,OAAA;AACzC,sDAAkE;AAA1D,0GAAA,YAAY,OAAA;AAAE,yGAAA,WAAW,OAAA;AACjC,gDAO6B;AAN3B,mHAAA,uBAAuB,OAAA;AACvB,4GAAA,gBAAgB,OAAA;AAChB,gHAAA,oBAAoB,OAAA;AACpB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,gHAAA,oBAAoB,OAAA;AAGtB,mDAU+B;AAT7B,kHAAA,qBAAqB,OAAA;AACrB,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,iHAAA,oBAAoB,OAAA;AACpB,+GAAA,kBAAkB,OAAA;AAClB,kHAAA,qBAAqB,OAAA;AACrB,oHAAA,uBAAuB,OAAA;AACvB,qHAAA,wBAAwB,OAAA;AACxB,wHAAA,2BAA2B,OAAA;AAE7B,qEAAkE;AAA1D,wHAAA,kBAAkB,OAAA;AAC1B,mEAAgE;AAAxD,sHAAA,iBAAiB,OAAA;AAEzB,8CAA+D;AAAvD,0GAAA,MAAM,OAAoB;AAClC,wEAAqE;AAA7D,0HAAA,mBAAmB,OAAA;AAC3B,sDAAuE;AAA/D,uGAAA,SAAS,OAAA;AAAE,iHAAA,mBAAmB,OAAA"}
|
package/package.json
CHANGED
|
@@ -98,8 +98,27 @@ export function convertCharacter(
|
|
|
98
98
|
return '';
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
// Auto-chunk a continuous binary string into 8-bit, 7-bit, or 5-bit groups.
|
|
102
|
+
function chunkBinary(token: string): string[] {
|
|
103
|
+
if (!appearsBinary(token) || token.length <= 8) {
|
|
104
|
+
return [token];
|
|
105
|
+
}
|
|
106
|
+
const chunkSize =
|
|
107
|
+
token.length % 8 === 0
|
|
108
|
+
? 8
|
|
109
|
+
: token.length % 7 === 0
|
|
110
|
+
? 7
|
|
111
|
+
: token.length % 5 === 0
|
|
112
|
+
? 5
|
|
113
|
+
: 8;
|
|
114
|
+
return token.match(new RegExp(`.{1,${chunkSize}}`, 'g'))!;
|
|
115
|
+
}
|
|
116
|
+
|
|
101
117
|
function splitString(input: string): string[] {
|
|
102
|
-
return input
|
|
118
|
+
return input
|
|
119
|
+
.split(' ')
|
|
120
|
+
.filter(item => item !== '')
|
|
121
|
+
.flatMap(chunkBinary);
|
|
103
122
|
}
|
|
104
123
|
|
|
105
124
|
/**
|
package/src/Morse/morse.ts
CHANGED
|
@@ -5,8 +5,8 @@ import {MorseEncoding} from './MorseEncoding';
|
|
|
5
5
|
|
|
6
6
|
export const MORSE_DOT = '.';
|
|
7
7
|
export const MORSE_DASH = '-';
|
|
8
|
-
export const MORSE_CHARACTER_DIVIDER = '
|
|
9
|
-
export const MORSE_WORD_DIVIDER = '
|
|
8
|
+
export const MORSE_CHARACTER_DIVIDER = ' ';
|
|
9
|
+
export const MORSE_WORD_DIVIDER = '/';
|
|
10
10
|
|
|
11
11
|
// Reserved character used internally for dot/dash swap
|
|
12
12
|
const RESERVED_DIVIDER = 'A';
|
|
@@ -4,27 +4,35 @@ import {Point} from './Point';
|
|
|
4
4
|
import {Result} from './Result';
|
|
5
5
|
import {WordSearchDirection} from './WordSearchDirection';
|
|
6
6
|
|
|
7
|
-
export enum WordSearchSpaceTreatment {
|
|
8
|
-
None = 0,
|
|
9
|
-
RemoveWithinPuzzle = 1,
|
|
10
|
-
RemoveAll = 2,
|
|
11
|
-
}
|
|
12
|
-
|
|
13
7
|
export interface WordSearchOptions {
|
|
14
8
|
grid: string[][];
|
|
15
9
|
words: string[];
|
|
16
10
|
directions?: WordSearchDirection;
|
|
17
11
|
canBend?: boolean;
|
|
18
|
-
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Remove columns that are entirely spaces across all rows.
|
|
15
|
+
function collapseSpaceColumns(matrix: string[][]): string[][] {
|
|
16
|
+
if (matrix.length === 0) {
|
|
17
|
+
return matrix;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const maxCols = Math.max(...matrix.map(row => row.length));
|
|
21
|
+
const keepColumn: boolean[] = [];
|
|
22
|
+
for (let col = 0; col < maxCols; col++) {
|
|
23
|
+
keepColumn.push(matrix.some(row => col < row.length && row[col] !== ' '));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return matrix.map(row => row.filter((_, col) => keepColumn[col]));
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
export function parseWordSearchGrid(input: string): string[][] {
|
|
22
|
-
const lines = input.split(/\r?\n/).filter(line => line.length > 0);
|
|
30
|
+
const lines = input.split(/\r?\n/).filter(line => line.trimEnd().length > 0);
|
|
23
31
|
const grid: string[][] = [];
|
|
24
32
|
for (const line of lines) {
|
|
25
33
|
grid.push(line.split(''));
|
|
26
34
|
}
|
|
27
|
-
return grid;
|
|
35
|
+
return collapseSpaceColumns(grid);
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
export function findWords(options: WordSearchOptions): Result[] {
|
|
@@ -32,9 +40,8 @@ export function findWords(options: WordSearchOptions): Result[] {
|
|
|
32
40
|
words,
|
|
33
41
|
directions: directionOption = WordSearchDirection.CardinalAndDiagonal,
|
|
34
42
|
canBend = false,
|
|
35
|
-
spaceTreatment = WordSearchSpaceTreatment.None,
|
|
36
43
|
} = options;
|
|
37
|
-
|
|
44
|
+
const matrix = options.grid;
|
|
38
45
|
|
|
39
46
|
// Build trie from words
|
|
40
47
|
const targets = trie([]);
|
|
@@ -53,9 +60,6 @@ export function findWords(options: WordSearchOptions): Result[] {
|
|
|
53
60
|
// Resolve directions
|
|
54
61
|
const directionVectors = resolveDirections(directionOption);
|
|
55
62
|
|
|
56
|
-
// Handle space treatment
|
|
57
|
-
matrix = applySpaceTreatment(matrix, spaceTreatment);
|
|
58
|
-
|
|
59
63
|
// Search
|
|
60
64
|
const results: Result[] = [];
|
|
61
65
|
const numRows = matrix.length;
|
|
@@ -103,36 +107,6 @@ function resolveDirections(direction: WordSearchDirection): number[][] {
|
|
|
103
107
|
return directions;
|
|
104
108
|
}
|
|
105
109
|
|
|
106
|
-
function applySpaceTreatment(
|
|
107
|
-
matrix: string[][],
|
|
108
|
-
treatment: WordSearchSpaceTreatment,
|
|
109
|
-
): string[][] {
|
|
110
|
-
if (matrix.length === 0 || treatment === WordSearchSpaceTreatment.None) {
|
|
111
|
-
return matrix;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const nextMatrix: string[][] = [];
|
|
115
|
-
for (let yIdx = 0; yIdx < matrix.length; yIdx++) {
|
|
116
|
-
const line: string[] = [];
|
|
117
|
-
let inPuzzle = false;
|
|
118
|
-
for (let xIdx = 0; xIdx < matrix[yIdx].length; xIdx++) {
|
|
119
|
-
const letter = matrix[yIdx][xIdx];
|
|
120
|
-
if (letter !== ' ') {
|
|
121
|
-
inPuzzle = true;
|
|
122
|
-
}
|
|
123
|
-
if (treatment === WordSearchSpaceTreatment.RemoveAll && letter !== ' ') {
|
|
124
|
-
line.push(matrix[yIdx][xIdx]);
|
|
125
|
-
} else if (letter !== ' ' && inPuzzle) {
|
|
126
|
-
line.push(matrix[yIdx][xIdx]);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (line.length > 0) {
|
|
130
|
-
nextMatrix.push(line);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return nextMatrix;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
110
|
function search(
|
|
137
111
|
start: Point,
|
|
138
112
|
matrix: string[][],
|
package/src/index.ts
CHANGED
|
@@ -82,9 +82,5 @@ export {SemaphoreEncoding} from './Semaphore/SemaphoreEncoding';
|
|
|
82
82
|
export {Point as WordSearchPoint} from './WordSearch/Point';
|
|
83
83
|
export {Result as WordSearchResult} from './WordSearch/Result';
|
|
84
84
|
export {WordSearchDirection} from './WordSearch/WordSearchDirection';
|
|
85
|
-
export {
|
|
86
|
-
findWords,
|
|
87
|
-
parseWordSearchGrid,
|
|
88
|
-
WordSearchSpaceTreatment,
|
|
89
|
-
} from './WordSearch/wordSearch';
|
|
85
|
+
export {findWords, parseWordSearchGrid} from './WordSearch/wordSearch';
|
|
90
86
|
export type {WordSearchOptions} from './WordSearch/wordSearch';
|