Published
Edited
Dec 9, 2019
1 fork
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
puzzleInput// = test3
Insert cell
Insert cell
answer = {
let counts = [0, 1, 2].map(d => layers.map(l => l.filter(p => p == d).length));
let min0layer = counts[0].reduce((a, d, i) => d < a[0] ? [d, i] : a, [1e99, 0])[1];
//.map((c, i) => [c, i]).sort((a, b) => a[0] - b[0])[0][1];//
return counts[1][min0layer] * counts[2][min0layer]
}
Insert cell
layers = {
const pixelsN = size[0] * size[1];
const image = puzzleInput.split('').map(Number);
const layersN = image.length / pixelsN;
return Array(layersN).fill(0).map( (v,i) => image.slice(i*pixelsN, (i+1)*pixelsN) ).reverse();
}
Insert cell
Insert cell
md`The message:

<pre>
${txtmessage}
</pre>
`
Insert cell
message = {
let stacked = layers.reduce((a, l) => //layers need to come reversed
l.map((d, i) => d == 2 ? a[i] : d), []); //keep current if transparent, else replace
return stacked
}
Insert cell
txtmessage = message.map((d,i) => (d==1 ? "⬛️⬛️":"⬜️⬜️") + ((i+1) % size[0] ? "" : "\n")).join('')
Insert cell
test3='0222112222120000'
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more