Sha256: f4f7b935259f648f72e8fa4cc8dbe5c3e2d615913dd76e226b98e3befdab3ff0

Contents?: true

Size: 1.64 KB

Versions: 185

Compression:

Stored size: 1.64 KB

Contents

const PATTERNS = {
  0: [' _ ',
    '| |',
    '|_|',
    '   '],
  1: ['   ',
    '  |',
    '  |',
    '   '],
  2: [' _ ',
    ' _|',
    '|_ ',
    '   '],
  3: [' _ ',
    ' _|',
    ' _|',
    '   '],
  4: ['   ',
    '|_|',
    '  |',
    '   '],
  5: [' _ ',
    '|_ ',
    ' _|',
    '   '],
  6: [' _ ',
    '|_ ',
    '|_|',
    '   '],
  7: [' _ ',
    '  |',
    '  |',
    '   '],
  8: [' _ ',
    '|_|',
    '|_|',
    '   '],
  9: [' _ ',
    '|_|',
    ' _|',
    '   '],
};
export default class Parser {
  convert(text) {
    return Parser.splitIntoRows(text).map(Parser.valuesInRow).join(',');
  }

  static valuesInRow(row) {
    return Parser.splitIntoDigits(row).map(Parser.getDigit).join('');
  }

  static splitIntoRows(text) {
    const rows = [];
    const lines = text.split('\n');
    for (let rowNumber = 0; rowNumber < lines.length; rowNumber += 4) {
      let row = '';
      for (let rowLine = 0; rowLine < 4; rowLine++) {
        row += `${lines[rowNumber + rowLine]}\n`;
      }
      rows.push(row.slice(0, -1));
    }
    return rows;
  }

  static splitIntoDigits(row) {
    const digits = [],
      rows = row.split('\n');
    for (let digitNumber = 0; digitNumber < rows[0].length; digitNumber += 3) {
      let digit = '';
      for (let rowNumber = 0; rowNumber < rows.length; rowNumber++) {
        digit += rows[rowNumber].substr(digitNumber, 3);
      }
      digits.push(digit);
    }
    return digits;
  }

  static getDigit(text) {
    for (const digit in PATTERNS) {
      if (PATTERNS.hasOwnProperty(digit)) {
        if (PATTERNS[digit].join('') === text) {
          return digit;
        }
      }
    }
    return '?';
  }

}

Version data entries

185 entries across 185 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.179 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.178 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.177 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.176 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.175 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.174 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.173 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.172 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.171 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.170 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.169 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.167 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.166 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.165 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.164 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.163 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.162 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.161 tracks/ecmascript/exercises/ocr-numbers/example.js
trackler-2.2.1.160 tracks/ecmascript/exercises/ocr-numbers/example.js