Public
Edited
Feb 5, 2024
Insert cell
Insert cell
length = 1000000
Insert cell
evens = Uint32Array.from({ length }, (v, n) => n * 2)
Insert cell
evenMag = evens.map((n) => {
let i = 0;
while (n > 1 && n % 2 === 0) {
n /= 2;
i++;
}
return i;
})
Insert cell
odds = evens.map((n) => n + 1)
Insert cell
nextEven = odds.map((n) => 3 * n + 1)
Insert cell
nextEvenMag = evenMag.filter((n, i) => i % 3 == 2)
Insert cell
nextOdd = nextEven.map((n) => {
while (n % 2 === 0) n >>= 1;
return n;
})
Insert cell
Plot.plot({
x: { domain: [0, length] },
color: { scheme: "Observable10" },
marks: [
Plot.arrow(
{ length },
{
x1: odds,
x2: nextOdd,
y1: 0,
y2: nextEvenMag,
stroke: nextEvenMag,
bend: -20,
filter: (d, i) => nextEvenMag[i] > 14
}
)
]
})
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