Post without words #3

(This is my 200th post! =)

About Brent

Associate Professor of Computer Science at Hendrix College. Functional programmer, mathematician, teacher, pianist, follower of Jesus.
This entry was posted in counting, pattern, pictures, posts without words, recursion. Bookmark the permalink.

11 Responses to Post without words #3

  1. Mister Globules says:
    
    import Control.Monad
    import Data.Bits
    import Numeric
    import Text.Printf
        
    toGC n = (n `shiftR` 1) `xor` n
        
    base2 n = showIntAtBase 2 ("01" !!) n ""
        
    printGC w n = do
      let n' = toGC n
      printf "%0*s %0*s\n" w (base2 n) w (base2 n')
        
    main = forM_ [0..31 :: Int] $ printGC (5 :: Int)
    
      • Mister Globules says:

        I indented the code by four spaces, as I thought you were using Markdown, but it looked terrible. Did you fix it up? If so, thanks!

        Also, I like the seasonal colours in the diagram. 🙂

  2. Lucas Brown says:

    The one on the left is just counting in binary. Is the one on the right a Gray code?

  3. I made something pretty using Gray code:

    • Brent says:

      Cool! Can you explain how you made it?

      • For each pixel, put its x,y coordinates in Gray code; deal out the bits to the color-channels, in one of a large number of possible ways; convert the result from Gray code. Gray code is not essential to the concept, but makes it prettier.

        Thus for example the (Gray) coordinates’ bits might be
        X = G7 B7 R6 G5 B5 R4 G3 B3 R2 G1 B1 R0
        Y = R7 G6 B6 R5 G4 B4 R3 G2 B2 R1 G0 B0
        or in other words the (Gray) color bits are
        R = Y11 X9 Y8 X6 Y5 X3 Y2 X0
        G = X11 Y10 X8 Y7 X5 Y4 X2 Y1
        B = X10 Y9 X7 Y6 X4 Y3 X1 Y0

        (I forgot that I had already posted bigger versions on G+.)

Comments are closed.