Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
56
Task/Sierpinski-carpet/JavaScript/sierpinski-carpet-2.js
Normal file
56
Task/Sierpinski-carpet/JavaScript/sierpinski-carpet-2.js
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
// Orders 1, 2 and 3 of the Sierpinski Carpet
|
||||
// as lines of text.
|
||||
|
||||
// Generic text output for use in any JavaScript environment
|
||||
// Browser JavaScripts may use console.log() to return textual output
|
||||
// others use print() or analogous functions.
|
||||
|
||||
[1, 2, 3].map(function sierpinskiCarpetOrder(n) {
|
||||
|
||||
// An (n * n) grid of (filled or empty) sub-rectangles
|
||||
// n --> [[s]]
|
||||
var carpet = function (n) {
|
||||
var lstN = range(0, Math.pow(3, n) - 1);
|
||||
|
||||
// State of each cell in an N * N grid
|
||||
return lstN.map(function (x) {
|
||||
return lstN.map(function (y) {
|
||||
return inCarpet(x, y);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// State of a given coordinate in the grid:
|
||||
// Filled or not ?
|
||||
// (See https://en.wikipedia.org/wiki/Sierpinski_carpet#Construction)
|
||||
// n --> n --> bool
|
||||
inCarpet = function (x, y) {
|
||||
return (!x || !y) ? true :
|
||||
!(
|
||||
(x % 3 === 1) &&
|
||||
(y % 3 === 1)
|
||||
) && inCarpet(
|
||||
x / 3 | 0,
|
||||
y / 3 | 0
|
||||
);
|
||||
},
|
||||
|
||||
// Sequence of integers from m to n
|
||||
// n --> n --> [n]
|
||||
range = function (m, n) {
|
||||
return Array.apply(null, Array(n - m + 1)).map(
|
||||
function (x, i) {
|
||||
return m + i;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
// Grid of booleans mapped to lines of characters
|
||||
// [[bool]] --> s
|
||||
return carpet(n).map(function (line) {
|
||||
return line.map(function (bool) {
|
||||
return bool ? '\u2588' : ' ';
|
||||
}).join('');
|
||||
}).join('\n');
|
||||
|
||||
}).join('\n\n');
|
||||
Loading…
Add table
Add a link
Reference in a new issue