mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
feat: add strings/ngram algorithm (#6074)
* feat: added ngram algorithm * fix(test): use `math.isclose` to match floating point numbers approximately Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
This commit is contained in:
parent
4064bf45f5
commit
1f1daaf1c7
|
@ -12,8 +12,12 @@ def polar_force(
|
||||||
"""
|
"""
|
||||||
Resolves force along rectangular components.
|
Resolves force along rectangular components.
|
||||||
(force, angle) => (force_x, force_y)
|
(force, angle) => (force_x, force_y)
|
||||||
>>> polar_force(10, 45)
|
>>> import math
|
||||||
[7.071067811865477, 7.0710678118654755]
|
>>> force = polar_force(10, 45)
|
||||||
|
>>> math.isclose(force[0], 7.071067811865477)
|
||||||
|
True
|
||||||
|
>>> math.isclose(force[1], 7.0710678118654755)
|
||||||
|
True
|
||||||
>>> polar_force(10, 3.14, radian_mode=True)
|
>>> polar_force(10, 3.14, radian_mode=True)
|
||||||
[-9.999987317275396, 0.01592652916486828]
|
[-9.999987317275396, 0.01592652916486828]
|
||||||
"""
|
"""
|
||||||
|
@ -50,7 +54,11 @@ def in_static_equilibrium(
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Test to check if it works
|
# Test to check if it works
|
||||||
forces = array(
|
forces = array(
|
||||||
[polar_force(718.4, 180 - 30), polar_force(879.54, 45), polar_force(100, -90)]
|
[
|
||||||
|
polar_force(718.4, 180 - 30),
|
||||||
|
polar_force(879.54, 45),
|
||||||
|
polar_force(100, -90),
|
||||||
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
location = array([[0, 0], [0, 0], [0, 0]])
|
location = array([[0, 0], [0, 0], [0, 0]])
|
||||||
|
|
23
strings/ngram.py
Normal file
23
strings/ngram.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
"""
|
||||||
|
https://en.wikipedia.org/wiki/N-gram
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def create_ngram(sentence: str, ngram_size: int) -> list[str]:
|
||||||
|
"""
|
||||||
|
Create ngrams from a sentence
|
||||||
|
|
||||||
|
>>> create_ngram("I am a sentence", 2)
|
||||||
|
['I ', ' a', 'am', 'm ', ' a', 'a ', ' s', 'se', 'en', 'nt', 'te', 'en', 'nc', 'ce']
|
||||||
|
>>> create_ngram("I am an NLPer", 2)
|
||||||
|
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
|
||||||
|
>>> create_ngram("This is short", 50)
|
||||||
|
[]
|
||||||
|
"""
|
||||||
|
return [sentence[i : i + ngram_size] for i in range(len(sentence) - ngram_size + 1)]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from doctest import testmod
|
||||||
|
|
||||||
|
testmod()
|
Loading…
Reference in New Issue
Block a user