Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Quick convolution approximate for puzzle http://puzzling.stackexchange.com/questions/47219/little-bit-of-a-code-in-binary
- //Code by Bloc97
- if (!print) {
- var print = function(str) {
- console.log(str);
- }
- //var print2dArray = print;
- } else {
- }
- var tab = [
- [0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1],
- [0,1,0,1,1,1,1,1,0,1,1,0,0,1,0,1],
- [0,0,0,1,1,1,1,1,0,1,0,0,1,1,0,1],
- [0,0,1,0,1,1,1,1,0,1,1,0,0,0,1,0],
- [1,1,1,1,0,1,0,1,0,0,1,1,1,0,0,0],
- [1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,1],
- [1,1,1,1,1,0,1,0,0,0,1,1,0,1,0,0],
- [1,1,1,1,0,0,0,1,0,0,1,1,0,0,0,1],
- [0,1,0,0,0,1,0,0,0,1,1,0,1,1,1,1],
- [0,0,1,0,0,1,1,1,0,1,1,1,1,1,1,1],
- [0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1],
- [0,1,1,0,0,0,0,1,1,0,0,0,1,1,1,1],
- [0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,0],
- [0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0],
- [0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1],
- [0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1]];
- var test = convolute(tab, 2, 1, 0);
- var test = convolute(tab, 2, 2, 0);
- var test = convolute(tab, 4, 1, 0);
- var test = convolute(tab, 4, 2, 1);
- var test = convolute(tab, 4, 4, 0);
- // var test = convolute(tab, 2, 1, 1);
- // var test = convolute(tab, 2, 2, 0);
- // var test = convolute(tab, 4, 1, 1);
- // var test = convolute(tab, 4, 1, 2);
- // var test = convolute(tab, 4, 1, 3);
- // var test = convolute(tab, 4, 2, 2);
- // var test = convolute(tab, 4, 4, 0);
- // var test = convolute(tab, 8, 4, 4);
- // var test = convolute(tab, 8, 8, 4);
- function convolute(arr, kernelsize, stride, padding) {
- var paddedarray = pad(arr, padding);
- var newarray = [];
- var height = paddedarray.length;
- var width = paddedarray[0].length;
- for (var i=0; i<height; i+=stride) {
- var newrow = [];
- for (var j=0; j<width; j+=stride) {
- var thiselement = 0;
- for (var k=0; k<kernelsize; k++) {
- for (var l=0; l<kernelsize; l++) {
- thiselement += getElement(paddedarray,i+k,j+l);
- }
- }
- newrow.push(thiselement);
- }
- newarray.push(newrow);
- }
- print("Convolution, Kernel size: "+ kernelsize + ", Stride: " + stride + ", Padding: " + padding);
- //print(newarray);
- print2dArray(newarray);
- return newarray;
- }
- function getElement(arr, i, j) {
- if (i < arr.length && j < arr[i].length) {
- return arr[i][j];
- }
- return 0;
- }
- function pad(arr, padding) {
- var height = arr.length;
- var width = arr[0].length;
- var newarray = [];
- for (var i=0; i<height; i++) {
- newarray[i] = [];
- for (var j=0; j<height; j++) {
- newarray[i][j] = arr[i][j];
- }
- }
- for (var i=0; i<height; i++) {
- for (var n=0; n<padding; n++) {
- newarray[i].unshift(0);
- newarray[i].push(0);
- }
- }
- for (var k=0; k<padding; k++) {
- newarray.unshift(emptyArray(width+padding+padding));
- newarray.push(emptyArray(width+padding+padding));
- }
- return newarray;
- }
- function emptyArray(length) {
- var newarray = []
- for (var i=0; i<length; i++) {
- newarray[i] = 0;
- }
- return newarray;
- }
- function getLongestText(array) {
- var length = 0;
- for (var i=0; i<array.length; i++) {
- for (var j=0; j<array[i].length; j++) {
- elementtext = array[i][j] + "";
- if (elementtext.length > length) {
- length = elementtext.length;
- }
- }
- }
- return length;
- }
- function repeatSpace(n) {
- var str = "";
- for (var i=0; i<n; i++) {
- str += " ";
- }
- return str;
- }
- function print2dArray(array) {
- print("----");
- var maxlength = getLongestText(array);
- for (var i=0; i<array.length; i++) {
- var rowtext = "";
- for (var j=0; j<array[i].length; j++) {
- var elementtext = array[i][j] + "";
- var rowtext = rowtext + elementtext + repeatSpace(maxlength-elementtext.length+1);
- }
- print(rowtext);
- }
- print("----");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement