Advertisement
Guest User

Untitled

a guest
Mar 7th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.85 KB | None | 0 0
  1.     let HammingDistance (b1:seq<byte>) (b2:seq<byte>) : int =
  2.         let bytePairs = Seq.zip b1 b2
  3.         let HammingWeight (b:byte) =
  4.             let bitPositions = {0 .. 7}
  5.             let isSet (byte1:byte) (offset:int) = if (byte1 &&& ((byte 1) <<< offset)) > (byte 0) then 1 else 0
  6.             Seq.map (isSet b) bitPositions |> Seq.sum
  7.         let HammingDistanceBytes (byte1, byte2) =
  8.             HammingWeight (byte1 ^^^ byte2)
  9.         let distances = Seq.map HammingDistanceBytes bytePairs
  10.         printfn "Distances: %A" distances
  11.         printfn "Distances length: %d" (Seq.length distances)
  12.         Seq.sum distances
  13.  
  14. Distances length: 1435
  15. Distances: seq [3; 3; 1; 5; ...]
  16. Distances length: 1436
  17. Distances: seq [3; 6; 2; 1; ...]
  18. Distances length: 1437
  19. Distances: seq [0; 3; 2; 3; ...]
  20. Distances length: 1438
  21. Distances: seq [3; 3; 4; 2; ...]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement