Skip to main content

No project description provided

Project description

🔁 Similar String Grouper

A minimal Python tool to group similar strings based on circular rotations. It identifies words that are rotations of each other and groups them into distinct sets.

✅ What it does

Given a list of strings, it groups words that are circularly similar.

For example, "abcd" and "cdab" are grouped together because one can be rotated into the other.

Input

["abcd", "cdab", "dabc", "bcda", "efgh", "ghfe"]

Output

{
  "abcd": ["abcd", "cdab", "dabc", "bcda"],
  "efgh": ["efgh"],
  "ghfe": ["ghfe"]
}

⚙️ How it works

  • Similarity Rule: Two words are similar if a rotation of one equals the other.

  • Efficiency: The similarity check (is_similar) is optimized from O(n) to O(1).

  • Grouping: Uses a visited set to avoid duplicate processing.

  • Non-destructive: Does not mutate the input.

🚀 Installation

pip install rotate-group-words==0.3.0

📦 Usage

In Code:

from rotate-group-words import rotate_group_words

input = ["abcd", "cdab", "dabc", "bcda", "efgh", "ghfe"]
output = rotate_group_words(input)
print(output)

As standalone cli application

rgw -h
rgw -w abcd,cdab,dabc,bcda,efgh,ghfe

🛠️ Changelog & Improvements

[✔] Improved is_similar() from O(n) to O(1) by hashing normalized rotation forms.6003...5a36

[✔] Prevented duplicates using a visited set. c7ca...c4e6

[✔] Cleaned output formatting for easier reading. 118c...1b3a

[✔] 100% test coverage and CI with GitHub Actions.

[✔] Packaged and published to PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rotate_group_words-0.4.0.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rotate_group_words-0.4.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file rotate_group_words-0.4.0.tar.gz.

File metadata

  • Download URL: rotate_group_words-0.4.0.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for rotate_group_words-0.4.0.tar.gz
Algorithm Hash digest
SHA256 5525554827b7797903ca671e160ac52b9553c53dad683e9ccc8e793936239473
MD5 8092cc0b218af5a30570e8ed343d7065
BLAKE2b-256 f9f8136ef9969baeebc611020247a6f94bfd7ae479c0fd93e66ae2a8e1a5915c

See more details on using hashes here.

File details

Details for the file rotate_group_words-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rotate_group_words-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b42711304d8d8f211a0b87af7d6e774611991efdc73a77b0d1f5df4a64a54bd
MD5 b8e195bf6d610574b9373385fd68a17a
BLAKE2b-256 31d72e3bab4ebce619986fd857fecbf9d227a697ec4dee67c7824f9152904dce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page