Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
|
|
@ -1,9 +1,9 @@
|
|||
import Data.Bits
|
||||
import Data.Char
|
||||
import Numeric
|
||||
import Control.Monad
|
||||
import Text.Printf
|
||||
|
||||
-- Conversion to and from traditional binary and Gray code
|
||||
grayToBin :: (Integral t, Bits t) => t -> t
|
||||
grayToBin 0 = 0
|
||||
grayToBin g = g `xor` (grayToBin $ g `shiftR` 1)
|
||||
|
|
@ -11,8 +11,13 @@ grayToBin g = g `xor` (grayToBin $ g `shiftR` 1)
|
|||
binToGray :: (Integral t, Bits t) => t -> t
|
||||
binToGray b = b `xor` (b `shiftR` 1)
|
||||
|
||||
-- Print the first 32 Gray codes alongside their decimal and binary equivalences.
|
||||
main = flip mapM_ (take 32 [0,1..] :: [Int]) (\num -> do
|
||||
let bin = showIntAtBase 2 intToDigit num ""
|
||||
gray = showIntAtBase 2 intToDigit (binToGray num) ""
|
||||
printf "int: %2d -> bin: %5s -> gray: %5s\n" num bin gray)
|
||||
showBinary :: (Integral t, Show t) => t -> String
|
||||
showBinary n = showIntAtBase 2 intToDigit n ""
|
||||
|
||||
showGrayCode :: (Integral t, Bits t, PrintfArg t, Show t) => t -> IO ()
|
||||
showGrayCode num = do
|
||||
let bin = showBinary num
|
||||
let gray = showBinary (binToGray num)
|
||||
printf "int: %2d -> bin: %5s -> gray: %5s\n" num bin gray
|
||||
|
||||
main = forM_ [0..31::Int] showGrayCode
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue