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.78 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.77 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.76 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.75 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.74 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.73 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.72 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.71 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.70 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.69 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.68 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.67 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.66 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.65 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.64 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.63 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.62 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.61 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.60 tracks/javascript/exercises/ocr-numbers/example.js
trackler-2.2.1.59 tracks/javascript/exercises/ocr-numbers/example.js