Sha256: 8abfc2e569288bc92bd1d56841cd6c04cec602a0ee3f2ee7173df4e229fdd380

Contents?: true

Size: 1.58 KB

Versions: 141

Compression:

Stored size: 1.58 KB

Contents

'use strict';

var PATTERNS = {
  0: [' _ ',
    '| |',
    '|_|',
    '   '],
  1: ['   ',
    '  |',
    '  |',
    '   '],
  2: [' _ ',
    ' _|',
    '|_ ',
    '   '],
  3: [' _ ',
    ' _|',
    ' _|',
    '   '],
  4: ['   ',
    '|_|',
    '  |',
    '   '],
  5: [' _ ',
    '|_ ',
    ' _|',
    '   '],
  6: [' _ ',
    '|_ ',
    '|_|',
    '   '],
  7: [' _ ',
    '  |',
    '  |',
    '   '],
  8: [' _ ',
    '|_|',
    '|_|',
    '   '],
  9: [' _ ',
    '|_|',
    ' _|',
    '   ']
};

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

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

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

function valuesInRow(row) {
  var digits = splitIntoDigits(row);
  return digits.map(getDigit).join('');
}

exports.convert = function (text) {
  var rows = splitIntoRows(text);
  return rows.map(valuesInRow).join(',');
};

Version data entries

141 entries across 141 versions & 1 rubygems

Version Path
trackler-2.2.1.98 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.97 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.96 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.95 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.94 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.93 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.92 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.91 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.90 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.89 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.88 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.87 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.86 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.85 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.84 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.83 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.82 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.81 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.80 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.79 tracks/javascript/exercises/ocr-numbers/example.js