Skip to content

Instantly share code, notes, and snippets.

@RobinStamer
Created August 16, 2012 12:28
Show Gist options
  • Select an option

  • Save RobinStamer/3369822 to your computer and use it in GitHub Desktop.

Select an option

Save RobinStamer/3369822 to your computer and use it in GitHub Desktop.
Thetawaves was confused by bitwise operators, booleans and their values with switches
> a = (function(n) { var a = [], r = []; function toggle(x) { if (x == n) return; if (a[x] = !a[x]) toggle(x+1) } for (var i = n; i; --i) { a[i-1] = false; } for (var i = Math.pow(2, n); i; --i) { toggle(0); r.push(a.slice(0)) } return r })(3)
[ [ true, true, true ],
[ false, true, true ],
[ true, false, true ],
[ false, false, true ],
[ true, true, false ],
[ false, true, false ],
[ true, false, false ],
[ false, false, false ] ]
> a.map(function(a) { var r = a[0] ? 1 : 0; for (var i = 1; i < a.length; ++i) { r |= a[i] << i } return r })
[ 7,
6,
5,
4,
3,
2,
1,
0 ]
> a = (function(n) { var a = [], r = []; function toggle(x) { if (x == n) return; if (a[x] = !a[x]) toggle(x+1) } for (var i = n; i; --i) { a[i-1] = false; } for (var i = Math.pow(2, n); i; --i) { toggle(0); r.push(a.slice(0)) } return r })(4)
[ [ true, true, true, true ],
[ false, true, true, true ],
[ true, false, true, true ],
[ false, false, true, true ],
[ true, true, false, true ],
[ false, true, false, true ],
[ true, false, false, true ],
[ false, false, false, true ],
[ true, true, true, false ],
[ false, true, true, false ],
[ true, false, true, false ],
[ false, false, true, false ],
[ true, true, false, false ],
[ false, true, false, false ],
[ true, false, false, false ],
[ false, false, false, false ] ]
> a.map(function(a) { var r = a[0] ? 1 : 0; for (var i = 1; i < a.length; ++i) { r |= a[i] << i } return r })
[ 15,
14,
13,
12,
11,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1,
0 ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment