)
}
}
)
(
}
{
)
)
(
)
(
(
{
}
)
(
)
}
)
)
{
(
(
)
)
}
)
(
} ### Fibonacci Triangle Golfed

1. `// by Arnauld - https://codegolf.stackexchange.com/users/58563/arnauld`
2. `f=(n,a=b=1,p)=>n?''.padEnd(p)+a+`+\${b}=\${b+=a}`
3. ``+f(n-1,b-a,(a+"").length-~p):''`
4. ` `
5. `console.log(f(20))`

Great golfed solution to this question at codegolf stackexchange by user Arnauld ### Step Between Two Numbers

1. `const stepBetweenA = (min, max, steps) => `
2. `  Array(steps).fill(0).reduce((prev, curr, i) => {`
3. `    prev.push(min + ((max - min) / (steps - 1)) * i)`
4. `    return prev`
5. `  }, [])`
6. ` `
7. ` `
8. `const stepBetweenB = (min, max, steps) => {`
9. `  steps -= 1`
10. `  const diff = (max - min) / steps`
11. `  const result = [min]`
12. `  for (let i = 0; i < steps; i++) {`
13. `    result.push(min += diff)`
14. `  }`
15. `  return result`
16. `}`
17. ` `
18. `console.log('a', stepBetweenA(10, 110, 4))`
19. `console.log('b', stepBetweenB(10, 110, 4))`
20. ` `
21. `const ITER = 10000`
22. ` `
23. `console.time('a')`
24. `for (let i = 0; i < ITER; i++) {`
25. `  stepBetweenA(10, 110, 4)`
26. `}`
27. `console.timeEnd('a')`
28. ` `
29. `  console.time('b')`
30. `for (let i = 0; i < ITER; i++) {`
31. `  stepBetweenB(10, 110, 4)`
32. `}`
33. `console.timeEnd('b')`

Two messy implementations for stepping between two numbers… I am not sure it’s possible to make `console.time` work well with the snippet zone quick editor – so if you want to see the times… open your console. ### Hamming Distance in JavaScript

1. `function hamming(a, b) {`
2. `  const leng = a.length`
3. `  let dist = 0`
4. ` `
5. `  // strings need to be same length`
6. `  if (leng != b.length) return -1;`
7. ` `
8. `  a = a.toLowerCase()`
9. `  b = b.toLowerCase()`
10. ` `
11. `  for (let i = 0; i < leng; i++)`
12. `    if (a[i] !== b[i]) dist++`
13. ` `
14. `  return dist`
15. `}`
16. ` `
17. `console.log(hamming('zevan', 'kevin'))`
18. `console.log(hamming('joe', 'joe'))`
19. `console.log(hamming('john', 'jake'))`

The hamming distance between two strings… ### Fake RNG

1. `let anchors`
2. `let idx`
3. `let leng = 10`
4. `let size = 200`
5. `let px = 0`
6. `let py = 0`
7. ` `
8. `function seed() {`
9. `  idx = 0`
10. `  anchors = (Date.now() + '').split```
11. `    .reverse()`
12. `    .map(v => parseFloat(v) / 10)`
13. `    .splice(0, leng)`
14. `}`
15. ` `
16. `let last = 0`
17. `let zoom = 1`
18. `function rand() {`
19. `  if (idx > size * size) seed()`
20. ` `
21. `  px += zoom`
22. `  py += ~~(px / size)`
23. ` `
24. `  if (px >= size) px = 0`
25. `  if (py >= size) py = 0`
26. ` `
27. `  const point = {`
28. `    x: anchors[idx % leng],`
29. `    y: anchors[(idx + 1) % leng]`
30. `  }`
31. `  idx++`
32. ` `
33. `  let dists = []`
34. `  for (let i = 0; i < anchors.length; i += 2) {`
35. `    let dx = px - anchors[i] * size`
36. `    let dy = py - anchors[i + 1] * size`
37. `    dists.push(Math.sqrt(dx * dx + dy * dy))`
38. `  }`
39. `  dists.sort()`
40. `  last += (dists / size - last) / 4`
41. `  return last`
42. `}`
43. ` `
44. `seed()`
45. ` `
46. `let d = document`
47. `let b = d.body`
48. `with (b.appendChild(`
49. `  Object.assign(d.createElement`canvas`, { width: 400, height: 400 })`
50. `).getContext`2d`) {`
51. `  fillStyle = 'black'`
52. `  fillRect(0, 0, 400, 400)`
53. ` `
54. `  for (let i = 0; i < 200; i++) {`
55. `    for (let j = 0; j < 200; j++) {`
56. `      const c = rand() * 255`
57. `      fillStyle = `rgb(\${c}, \${c}, \${c})``
58. `      fillRect(j * 2, i * 2, 1, 2)`
59. `    }`
60. `  }`
61. `}`

Another one for genuary “Create your own pseudo-random number generator and visually check the results.” ### Average Some Curves

1. `const canvas = document.body.appendChild(`
2. `  document.createElement('canvas')`
3. `);`
4. `const c = canvas.getContext('2d');`
5. ` `
6. `function resize() {`
7. `  canvas.width = window.innerWidth;`
8. `  canvas.height = window.innerHeight;`
9. `  draw();`
10. `}`
11. ` `
12. `function draw() {`
13. `  c.clearRect(0, 0, canvas.width, canvas.height);`
14. ` `
15. `  Math.min(window.innerWidth, window.innerHeight) * 0.0015;`
16. `  const iter = 300,`
17. `        halfWidth = window.innerWidth / 2,`
18. `        halfHeight = window.innerHeight / 2;`
19. `  let rad = 50, rad2 = 50, theta = 0, x, y;`
20. `  let x2, y2;`
21. `  for (let i = 0; i < 100; i++) {`
22. `    c.fillStyle = 'blue';`
23. `    x = halfWidth + rad * Math.cos(theta);`
24. `    y = halfHeight + rad * Math.sin(theta);`
25. `    c.fillRect(x, y, 5, 5);`
26. ` `
27. `    c.fillStyle = 'red';`
28. ` `
29. `    rad2 = 80 + rad * Math.cos(theta * 3);`
30. `    x2 = halfWidth + rad2 * Math.cos(theta);`
31. `    y2 = halfHeight + rad2 * Math.sin(theta);`
32. `    c.fillRect(x2, y2, 5, 5);`
33. ` `
34. `    c.fillStyle = 'green';`
35. `    c.fillRect((x2 + x) / 2, (y2 + y) / 2, 5, 5);`
36. ` `
37. `    theta += .1;`
38. `  }`
39. `}`
40. ` `
41. `resize();`
42. `window.addEventListener('resize', resize);` snippet.zone ~ 2021-23 /// {s/z}