From caa0137cfc7199f6f94be061551b69f4c7c8f410 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 13 Dec 2017 14:24:57 +0200 Subject: [PATCH] Build README --- README.md | 12 ++++++++++++ snippets/hamming-distance.md | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9b81f83ee..223950ba3 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ * [Get native type of value](#get-native-type-of-value) * [Get scroll position](#get-scroll-position) * [Greatest common divisor (GCD)](#greatest-common-divisor-gcd) +* [Hamming distance](#hamming-distance) * [Head of list](#head-of-list) * [Initial of list](#initial-of-list) * [Initialize array with range](#initialize-array-with-range) @@ -347,6 +348,17 @@ const gcd = (x , y) => !y ? x : gcd(y, x % y); // gcd (8, 36) -> 4 ``` +### Hamming distance + +Use XOR operator (`^`) to find the bit difference between the two numbers, convert to binary string using `toString(2)`. +Count and return the number of `1`s in the string, using `match(/1/g)`. + +```js +const hammingDistance = (num1, num2) => + ((num1^num2).toString(2).match(/1/g) || '').length; +// hammingDistance(2,3) -> 1 +``` + ### Head of list Return `arr[0]`. diff --git a/snippets/hamming-distance.md b/snippets/hamming-distance.md index f4ddc1eec..5b47db022 100644 --- a/snippets/hamming-distance.md +++ b/snippets/hamming-distance.md @@ -1,9 +1,10 @@ -### Hamming distance between two numbers +### Hamming distance Use XOR operator (`^`) to find the bit difference between the two numbers, convert to binary string using `toString(2)`. Count and return the number of `1`s in the string, using `match(/1/g)`. + ```js -const hammingDistance = (num1, num2) => +const hammingDistance = (num1, num2) => ((num1^num2).toString(2).match(/1/g) || '').length; -//hammingDistance(2,3) -> 1 +// hammingDistance(2,3) -> 1 ```