Skip to content

Instantly share code, notes, and snippets.

@norahiko
Created February 10, 2014 03:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save norahiko/8909674 to your computer and use it in GitHub Desktop.
Save norahiko/8909674 to your computer and use it in GitHub Desktop.
"use strict";
function octalToBin(oct) {
return oct.split("").map(function(o) {
return ("00" + parseInt(o).toString(2)).slice(-3);
}).join("");
}
function solve(input) {
var bin = octalToBin(input).match(/.{6}/g);
var verticals = ""
var horizontals = ""
for(var x = 0; x < 5; x++) {
verticals += "-"
for(var y = 0; y < 6; y++) {
verticals += (bin[y][x] !== bin[y][x+1]) ? "1" : "0";
}
}
for(var y = 0; y < 5; y++) {
horizontals += "-"
for(var x = 0; x < 6; x++) {
horizontals += (bin[y][x] !== bin[y+1][x]) ? "1" : "0";
}
}
var edges = (verticals + horizontals).match(/1+/g) || [];
var sizes = edges.map(function(e) { return e.length });
var result = [];
for(var i = 1; i <= 6; i++) {
result.push(sizes.filter(function(s) { return s === i }).length);
}
return result.join(",");
}
function test(input, expected) {
var result = solve(input);
if(result !== expected) {
console.log("-------------\ninput = %s\n\nexpected = %s\nresult = %s", input, expected, result);
}
}
test( "060276724276", "6,2,1,1,0,1" );
test( "770175454177", "2,3,0,3,1,0" );
test( "743733377170", "9,3,1,0,0,0" );
test( "724212121273", "5,2,1,1,1,1" );
test( "100000000000", "3,0,0,0,0,0" );
test( "000002000000", "4,0,0,0,0,0" );
test( "003622223600", "0,4,0,4,0,0" );
test( "520073737070", "8,3,1,1,0,0" );
test( "770077007700", "0,0,0,0,0,5" );
test( "555555555514", "2,0,0,0,2,2" );
test( "764252427600", "4,0,4,0,2,0" );
test( "774555554177", "3,3,1,3,0,0" );
test( "674574754557", "11,5,0,1,0,0" );
test( "000000000000", "0,0,0,0,0,0" );
test( "777777777777", "0,0,0,0,0,0" );
test( "774377777577", "6,0,2,0,0,0" );
test( "070777777777", "0,1,1,0,0,0" );
test( "373737373737", "0,0,0,0,0,1" );
test( "603260327725", "30,0,0,0,0,0" );
test( "466331144663", "30,0,0,0,0,0" );
test( "000000000242", "3,2,0,0,0,0" );
test( "567656043772", "18,2,1,0,0,0" );
test( "200763012420", "15,4,1,0,0,0" );
test( "400101140052", "14,3,0,0,0,0" );
test( "764767476476", "13,2,0,1,0,0" );
test( "001110140110", "12,2,1,0,0,0" );
test( "765405076527", "16,3,0,1,0,0" );
test( "377323370373", "8,4,2,0,0,0" );
test( "250541131216", "11,5,2,0,0,0" );
test( "744165741476", "12,3,2,0,0,0" );
test( "042101000300", "10,3,0,0,0,0" );
test( "002004554101", "11,3,1,0,0,0" );
test( "371707762706", "15,1,1,0,0,0" );
test( "130371310175", "7,3,1,2,0,0" );
test( "212537003613", "13,2,1,1,1,0" );
test( "157700063411", "15,3,0,0,0,1" );
test( "011500036007", "6,7,1,0,0,0" );
test( "743113313517", "17,2,1,0,0,0" );
test( "174105270405", "13,3,1,1,0,0" );
test( "427272200311", "13,3,2,0,0,0" );
test( "725370332237", "12,5,1,1,0,0" );
test( "005640420046", "12,1,3,0,0,0" );
test( "700350001101", "14,3,1,0,0,0" );
test( "577627744076", "16,1,1,1,0,0" );
test( "620332232007", "10,4,2,1,0,0" );
test( "260406401000", "15,1,1,0,0,0" );
test( "737272723276", "5,0,0,0,3,0" );
test( "000400040444", "7,0,2,0,0,0" );
test( "370222002177", "13,2,2,0,0,0" );
test( "372236024656", "9,3,2,0,1,0" );
test( "276131137003", "11,6,2,0,0,0" );
test( "742134007240", "13,4,2,0,0,0" );
test( "777721775571", "13,1,2,0,0,0" );
test( "700301232233", "11,2,3,0,0,0" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment