Skip to content

Instantly share code, notes, and snippets.

@mojowen
Created October 25, 2013 19:16
Show Gist options
  • Select an option

  • Save mojowen/7160275 to your computer and use it in GitHub Desktop.

Select an option

Save mojowen/7160275 to your computer and use it in GitHub Desktop.
A solution to a problem
data = [
[75],
[95, 64],
[17, 47, 82],
[18, 35, 87, 10],
[20, 04, 82, 47, 65],
[19, 01, 23, 75, 03, 34],
[88, 02, 77, 73, 07, 63, 67],
[99, 65, 04, 28, 06, 16, 70, 92],
[41, 41, 26, 56, 83, 40, 80, 70, 33],
[41, 48, 72, 33, 47, 32, 37, 16, 94, 29],
[53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14],
[70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57],
[91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48],
[63, 66, 04, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31],
[04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23]
]
var pathFinder = function() {
this.sum = 0;
this.current_index = 0;
this.check = [];
this.next = function(row) {
var left = this.current_index,
left_value = row[ left ],
right = this.current_index + 1,
right_value = row[ right ]
if( right_value > left_value ) {
this.sum += right_value;
this.current_index = right;
row[ right ] += '*'
} else {
this.sum += left_value;
this.current_index = left;
row[ left ] += '*'
}
this.check.push( row )
}
this.pretty = function() {
var pretty = '',
longest = this.check[ this.check.length -1 ].length,
offset = '';
for( var i = 0; i < this.check.length; i ++ ){
offset = '';
for( var pad = 0; pad < (longest - i)/2; pad ++ ) offset += ' ';
pretty += offset + this.check[ i ].join(' ') + "\n"
}
return pretty;
}
return this;
}
function processData(data) {
var path = new pathFinder();
for( var i = 0; i < data.length ; i++ ) {
path.next( data[i] );
}
return path;
}
console.log( processData( data ).pretty() )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment