37. Gray Code {(0∘, ⍪ 1∘,∘⊖)⍣⍵⍉⍪⍬} Gray code encodes integers as boolean lists so that code words for adjacent numbers differ by 1 bit. For example, the 4-bit encodings of 7 and 8 are: 0 1 0 0 1 1 0 0 The 2*n Gray codes of length n can be computed as follows: G←{(0∘, ⍪ 1∘,∘⊖)⍣⍵⍉⍪⍬} G¨ 2 3 4 ┌───┬─────┬───────┐ │0 0│0 0 0│0 0 0 0│ │0 1│0 0 1│0 0 0 1│ │1 1│0 1 1│0 0 1 1│ │1 0│0 1 0│0 0 1 0│ │ │1 1 0│0 1 1 0│ │ │1 1 1│0 1 1 1│ │ │1 0 1│0 1 0 1│ │ │1 0 0│0 1 0 0│ │ │ │1 1 0 0│ │ │ │1 1 0 1│ │ │ │1 1 1 1│ │ │ │1 1 1 0│ │ │ │1 0 1 0│ │ │ │1 0 1 1│ │ │ │1 0 0 1│ │ │ │1 0 0 0│ └───┴─────┴───────┘ Gray codes and the binary representations are closely related: The binary representations of n bits can be computed similarly, and one can be transformed into the other readily: B←{(0∘, ⍪ 1∘,)⍣⍵⍉⍪⍬} (B {⍺⍵} G) 3 ┌─────┬─────┐ │0 0 0│0 0 0│ │0 0 1│0 0 1│ │0 1 0│0 1 1│ │0 1 1│0 1 0│ │1 0 0│1 1 0│ │1 0 1│1 1 1│ │1 1 0│1 0 1│ │1 1 1│1 0 0│ └─────┴─────┘ (B 3) ≡ ≠\ G 3 1 (G 3) ≡ ≠\⍣¯1 ⊢B 3 1B can also be expressed as {(⍵⍴2)⊤⍤1 0⍳2*⍵} (or odometer ⍵⍴2 , Chapter 28). (B ≡ {(⍵⍴2)⊤⍤1 0⍳2*⍵}) 8 1B and G are related in a self-similar manner. The following is a scatter plot of (B⍳G)10 . The binary base spectra [105] of G and B look like this: Appeared in J in
[106]
|