Generate a Universal-binary-function Lookup Table
J, 10 (13?) characters
|.|:#:i.16
Number list:
i.16
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15`
to binary:
#:i.16
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
Transpose:
|:#:i.16
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Reverse:
|.|:#:i.16
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Do we need to remove the spaces? Looking at the other J answer it seems we do so we'll need to add 3 characters and borrow the 1":
from Jan's answer.
Python 2, 40
for n in 1,2,4,8:print 8/n*('0'*n+'1'*n)
APL (14)
Assuming ⎕IO=0
(that's a setting):
⎕D[⊖(4⍴2)⊤⍳16]
Explanation:
⍳16
: numbers [0,16)(4⍴2)⊤
: encode each number in base 2 using 4 digits⊖
: horizontal reverse (so the MSB ends up on top)⎕D[
...]
: select these values from⎕D
which is the string0123456789
. (A numeric matrix is displayed with spaces between the values, a character matrix is not. So this converts each numerical bit to one of the chars'0' '1'
).