28 lines
734 B
JavaScript
28 lines
734 B
JavaScript
// https://www.codewars.com/kata/text-ifs-iterated-function-system/javascript
|
|
|
|
function ifs(m, d) {
|
|
const expand = (m1, m2) => {
|
|
let rm = [];
|
|
const [i1s, j1s] = [m1.length, m1[0].length];
|
|
const [i2s, j2s] = [m2.length, m2[0].length];
|
|
for (let i1 = 0; i1 < i1s; ++i1) {
|
|
for (let i2 = 0; i2 < i2s; ++i2) {
|
|
const i = i1*i2s+i2;
|
|
rm[i] = [];
|
|
for (let j1 = 0; j1 < j1s; ++j1) {
|
|
for (let j2 = 0; j2 < j2s; ++j2) {
|
|
rm[i][j1*j2s+j2] = m1[i1][j1] * m2[i2][j2];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
const print = m => m.map(r => r.map(c => ' #'[c]+' ').join``).join`\n`;
|
|
let res = m;
|
|
while (--d) {
|
|
res = expand(res, m);
|
|
}
|
|
return print(res);
|
|
}
|