Skip to content

Instantly share code, notes, and snippets.

@norahiko
Created February 10, 2014 02:59
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/8909628 to your computer and use it in GitHub Desktop.
Save norahiko/8909628 to your computer and use it in GitHub Desktop.
"use strict";
function solve(input) {
var walls = input.split("").map(Number);
var waters = 0;
for(var y = 1; y < 10; y++) {
var w = 0;
var inside = false;
for(var x = 0; x < input.length; x++) {
if(inside) {
if(walls[x] === 0) {
inside = false;
w = 0;
} else if(y < walls[x]) {
waters += w;
w = 0;
} else {
w += 1;
}
} else if(y < walls[x]) {
inside = true;
}
}
}
return waters.toString();
}
function test(input, expected) {
var result = solve(input);
if(result !== expected) {
console.log("-------------\ninput = %s\n\nexpected = %s\nresult = %s", input, expected, result);
}
}
test( "83141310145169154671122" , "24" );
test( "923111128" , "45" );
test( "923101128" , "1" );
test( "903111128" , "9" );
test( "3" , "0" );
test( "31" , "0" );
test( "412" , "1" );
test( "3124" , "3" );
test( "11111" , "0" );
test( "222111" , "0" );
test( "335544" , "0" );
test( "1223455321" , "0" );
test( "000" , "0" );
test( "000100020003121" , "1" );
test( "1213141516171819181716151413121" , "56" );
test( "712131415161718191817161514131216" , "117" );
test( "712131405161718191817161514031216" , "64" );
test( "03205301204342100" , "1" );
test( "0912830485711120342" , "18" );
test( "1113241120998943327631001" , "20" );
test( "7688167781598943035023813337019904732", "41" );
test( "2032075902729233234129146823006063388", "79" );
test( "8323636570846582397534533" , "44" );
test( "2142555257761672319599209190604843" , "41" );
test( "06424633785085474133925235" , "51" );
test( "503144400846933212134" , "21" );
test( "1204706243676306476295999864" , "21" );
test( "050527640248767717738306306596466224" , "29" );
test( "5926294098216193922825" , "65" );
test( "655589141599534035" , "29" );
test( "7411279689677738" , "34" );
test( "268131111165754619136819109839402" , "102" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment