stdlib-js / stdlib-js/stdlib

[RFC]: Hamming distance between two strings

オープン
#836 コメント 14 件 リアクション 0 件 担当者 0 名 GitHub で見る
Accepted difficulty: 3 Feature Good First Issue JavaScript priority: Low RFC Utilities
主要言語
JavaScript
スター
6k
フォーク
1.3k
平均マージ
1日 3時間
マージ済み PR(30日)
611

説明

### Description

This RFC proposes adding a function to calculate the Hamming distance between two strings.

The function should have the following signature `(a: string, b: string): number`.

The function should take two strings as arguments and return the Hamming distance between them. The Hamming distance is defined as the number of characters that have to be changed to convert one string to the other. Since it only allows substitutions, it can only be used to compare strings of the same length.

Additionally, in order to account for code points and grapheme clusters, we should add separate packages for dealing with each, as the underlying algorithms are likely to differ. We then can provide a more general API which unifies the underlying algorithms. Accordingly, we should create the following packages:

- [x] `@stdlib/string/base/distances/hamming`: compares UTF-16 code units.
- PR: https://github.com/stdlib-js/stdlib/pull/1166
- [ ] `@stdlib/string/base/distances/hamming-code-points`: compares Unicode code points.
- [ ] `@stdlib/string/base/distances/hamming-grapheme-clusters`: compares grapheme clusters (i.e., visual characters)

Once the above are completed, we can add

- [ ] `@stdlib/string/distances/hamming`: unifies the above "base" packages and provides an option for specifying the computation "mode" (i.e., `code_units`, `code_points`, or `grapheme_clusters`, with `grapheme_clusters` being the default).

### Related Issues

Related issues https://github.com/stdlib-js/stdlib/issues/151.

### Questions

No.

### Other

No.

### Checklist

- [X] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [X] Searched for existing issues and pull requests.
- [X] The issue name begins with `RFC:`.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。