123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 'use strict';
- const YES_MATCH_SCORE_THRESHOLD = 2;
- const NO_MATCH_SCORE_THRESHOLD = 1.25;
- const yMatch = new Map([
- [5, 0.25],
- [6, 0.25],
- [7, 0.25],
- ['t', 0.75],
- ['y', 1],
- ['u', 0.75],
- ['g', 0.25],
- ['h', 0.25],
- ['j', 0.25]
- ]);
- const eMatch = new Map([
- [2, 0.25],
- [3, 0.25],
- [4, 0.25],
- ['w', 0.75],
- ['e', 1],
- ['r', 0.75],
- ['s', 0.25],
- ['d', 0.25],
- ['f', 0.25]
- ]);
- const sMatch = new Map([
- ['q', 0.25],
- ['w', 0.25],
- ['e', 0.25],
- ['a', 0.75],
- ['s', 1],
- ['d', 0.75],
- ['z', 0.25],
- ['x', 0.25],
- ['c', 0.25]
- ]);
- const nMatch = new Map([
- ['h', 0.25],
- ['j', 0.25],
- ['k', 0.25],
- ['b', 0.75],
- ['n', 1],
- ['m', 0.75]
- ]);
- const oMatch = new Map([
- [9, 0.25],
- [0, 0.25],
- ['i', 0.75],
- ['o', 1],
- ['p', 0.75],
- ['k', 0.25],
- ['l', 0.25]
- ]);
- function getYesMatchScore(value) {
- const [y, e, s] = value;
- let score = 0;
- if (yMatch.has(y)) {
- score += yMatch.get(y);
- }
- if (eMatch.has(e)) {
- score += eMatch.get(e);
- }
- if (sMatch.has(s)) {
- score += sMatch.get(s);
- }
- return score;
- }
- function getNoMatchScore(value) {
- const [n, o] = value;
- let score = 0;
- if (nMatch.has(n)) {
- score += nMatch.get(n);
- }
- if (oMatch.has(o)) {
- score += oMatch.get(o);
- }
- return score;
- }
- module.exports = (input, options) => {
- if (getYesMatchScore(input) >= YES_MATCH_SCORE_THRESHOLD) {
- return true;
- }
- if (getNoMatchScore(input) >= NO_MATCH_SCORE_THRESHOLD) {
- return false;
- }
- return options.default;
- };
|