From 8d5b6fa9a7044d56fb7dd1f70d76278ac50490c8 Mon Sep 17 00:00:00 2001 From: Reshi Adavan Date: Fri, 18 Apr 2025 18:04:32 -0400 Subject: [PATCH 1/2] SC-03 --- .gitignore | 4 +++- README.md | 23 ++++++++++++++--------- find/boyerMoore.h | 8 ++++---- find/find | Bin 145544 -> 186104 bytes find/find.cpp | 26 ++++++++++++++++++++------ find/sample.txt | 22 ---------------------- 6 files changed, 41 insertions(+), 42 deletions(-) delete mode 100644 find/sample.txt diff --git a/.gitignore b/.gitignore index ec2c50e..0643713 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,6 @@ *.app # Other -helpers/*.txt \ No newline at end of file +find/*.txt +find/data/* +.vscode/ \ No newline at end of file diff --git a/README.md b/README.md index 3971c32..82a09a8 100644 --- a/README.md +++ b/README.md @@ -8,21 +8,26 @@ lil side project for implementing: ## setup - clone - run with - - `clang++ main.cpp -o findr` + - `clang++ find.cpp -o find` + - `./findr` + +- for std::filesystem + - `clang++ -std=c++17 -stdlib=libc++ find.cpp -o find` - `./findr` ## deep dive keyword search - [X] "boyer-moore" on file specified to find instances where keywords exists -- [ ] read file into chunks -- [ ] deploy worker threads and run boyer moore in parallel across the file -- [ ] replace feature (tbd) +- [X] read file into chunks +- [X] recursively detect presence of keyword across a whole directory +- [ ] "replace feature" +- [ ] deploy worker threads and run boyer moore in parallel across the file (tbd) -multi keyword search -- "aho-corasick" to determine existence of multiple keywords -- replace tbd -- for large files we load as chunks, figure out the in b/w +multi-keyword search +- [ ] "aho-corasick" to determine existence of multiple keywords +- [ ] read file into chunks +- [ ] "replace feature" file search -- "fuzzy-search" over entire dir +- [ ] "fuzzy-search" over entire dir diff --git a/find/boyerMoore.h b/find/boyerMoore.h index 107bae5..8f4df17 100644 --- a/find/boyerMoore.h +++ b/find/boyerMoore.h @@ -72,7 +72,7 @@ class BoyerMoore { preprocessGoodSuffixTable(); } - int find(const std::string& text) { + int find(const std::string& text) const { int m = pattern.length(); int n = text.length(); if (m == 0 || m > n) return -1; @@ -87,7 +87,7 @@ class BoyerMoore { if (j < 0) { return s; // Match found } else { - int badCharShift = std::max(1, j - badCharTable[text[s + j]]); + int badCharShift = std::max(1, j - badCharTable.at(text[s + j])); int goodSuffixShift = goodSuffixTable[j]; s += std::max(badCharShift, goodSuffixShift); } @@ -96,7 +96,7 @@ class BoyerMoore { return -1; } - std::vector findAll(const std::string& text) { + std::vector findAll(const std::string& text) const { std::vector positions; int m = pattern.length(); int n = text.length(); @@ -113,7 +113,7 @@ class BoyerMoore { positions.push_back(s); s += goodSuffixTable[0]; // Shift after match } else { - int badCharShift = std::max(1, j - badCharTable[text[s + j]]); + int badCharShift = std::max(1, j - badCharTable.at(text[s + j])); int goodSuffixShift = goodSuffixTable[j]; s += std::max(badCharShift, goodSuffixShift); } diff --git a/find/find b/find/find index 59bb8d2d47df379be5a71f6199bc88e53761b025..38a598d09d28f333161fe6beb89670b060ca318e 100755 GIT binary patch literal 186104 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 O|MJGL{brpCW&VE;Xhf3$ literal 145544 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 diff --git a/find/find.cpp b/find/find.cpp index fc97c5e..8ffcaa0 100644 --- a/find/find.cpp +++ b/find/find.cpp @@ -2,16 +2,16 @@ #include #include #include +#include #include "boyerMoore.h" -void searchFile(const std::string& filename, const std::string& searchPattern, size_t chunkSize = 8192) { +void searchFile(const std::string& filename, const BoyerMoore& bm, const std::string& searchPattern, size_t chunkSize = 8192) { std::ifstream file(filename, std::ios::binary); if (!file.is_open()) { std::cerr << "Error: Could not open file " << filename << std::endl; return; } - BoyerMoore bm(searchPattern); const size_t overlap = searchPattern.size() - 1; std::vector buffer(chunkSize + overlap); @@ -70,15 +70,29 @@ void searchFile(const std::string& filename, const std::string& searchPattern, s int main(int argc, char* argv[]) { if (argc != 3) { - std::cerr << "Usage: " << argv[0] << " " << std::endl; + std::cerr << "Usage: " << argv[0] << " " << std::endl; return 1; } - std::string filename = argv[1]; + std::string path = argv[1]; std::string pattern = argv[2]; - std::cout << "**Searching for '" << pattern << "' in " << filename << " using chunked read...**\n" << std::endl; - searchFile(filename, pattern); + const BoyerMoore bm(pattern); + + if (std::filesystem::is_regular_file(path)) { + std::cout << "**Searching for '" << pattern << "' in file: " << path << "**\n\n"; + searchFile(path, bm, pattern); + } else if (std::filesystem::is_directory(path)) { + for (const auto& entry : std::filesystem::recursive_directory_iterator(path)) { + if (entry.is_regular_file()) { + std::cout << "**Searching for '" << pattern << "' in file: " << entry.path() << "**\n\n"; + searchFile(entry.path().string(), bm, pattern); + } + } + } else { + std::cerr << "Error: Path is not a file or directory.\n"; + return 1; + } return 0; } diff --git a/find/sample.txt b/find/sample.txt deleted file mode 100644 index b6bc543..0000000 --- a/find/sample.txt +++ /dev/null @@ -1,22 +0,0 @@ -The Forgotten Library -Alice discovered the old library on a rainy Tuesday afternoon. The weathered oak door creaked as she pushed it open, revealing towering bookshelves that seemed to stretch endlessly toward the ceiling. Dust particles danced in the beams of light that filtered through stained glass windows. -"Hello?" she called, her voice echoing through the cavernous space. No answer came. -The library appeared abandoned, yet strangely well-preserved. Books of all sizes lined the shelves – leather-bound tomes with gold lettering, paperbacks with cracked spines, and ancient scrolls carefully stored in glass cases. Alice ran her fingers along the spines, leaving trails in the dust. -She selected a book at random, a midnight-blue volume with silver constellations embossed on its cover. The moment she opened it, the library seemed to shift around her. The light changed, becoming warmer, more golden. Had the rain stopped? -Alice became so absorbed in the book that she didn't notice the elderly librarian who had silently appeared beside her. -"That one's special," he said, causing Alice to nearly drop the book in surprise. -"I'm sorry," she stammered. "I didn't think anyone was here." -The librarian smiled kindly. "The library is always here for those who truly seek knowledge. Most people walk past without ever seeing the door." -Alice looked back toward the entrance, suddenly uncertain how she had found this place. "What do you mean? This building is huge. How could anyone miss it?" -"Perception," the librarian said, "is a curious thing. People often see only what they expect to see." -He gestured toward the book in her hands. "That volume contains constellations that no longer exist in our night sky. Maps to stars that have burned out centuries ago." -Alice opened the book again, marveling at the intricate star maps and handwritten notes in the margins. "Who wrote these notes?" -"Travelers," the librarian replied. "Like yourself." -"I'm not a traveler," Alice said. "I'm just... lost." -The librarian's eyes twinkled with amusement. "Isn't that where all great journeys begin? Being a little lost?" -Alice spent hours in the library that day, moving from book to book. Each volume seemed to contain impossible knowledge – histories of civilizations that never existed, scientific principles that defied known physics, maps to places that couldn't possibly be real. -When she finally decided to leave, the rain had indeed stopped. The setting sun cast long shadows on the cobblestone street. -"You'll come back?" the librarian asked, standing in the doorway. -Alice nodded, certain that she would return to the library. But as she walked home, something strange happened. When she turned back to look at the building, it was gone. In its place stood an ordinary brick wall between a coffee shop and a boutique clothing store. -She blinked in confusion, wondering if she had somehow taken a wrong turn. The book she had borrowed from the library – the one with constellations – was still tucked under her arm, solid and real. -Alice smiled. She would find the library again. After all, as the librarian had said, perception is a curious thing. Sometimes you just need to learn how to see. From 88e87a97e355d2beef97e20f94ee56d8c128e2a0 Mon Sep 17 00:00:00 2001 From: Reshi Adavan Date: Fri, 18 Apr 2025 18:36:44 -0400 Subject: [PATCH 2/2] SC-03: Aho Corasick --- .gitignore | 1 + multi-find/ahoCorasick.h | 116 +++++++++++++++++++++++++++++++++++++++ multi-find/mfind | Bin 0 -> 354120 bytes multi-find/mfind.cpp | 111 +++++++++++++++++++++++++++++++++++++ 4 files changed, 228 insertions(+) create mode 100644 multi-find/ahoCorasick.h create mode 100755 multi-find/mfind create mode 100644 multi-find/mfind.cpp diff --git a/.gitignore b/.gitignore index 0643713..2c9c809 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ # Other find/*.txt find/data/* +multi-find/data/* .vscode/ \ No newline at end of file diff --git a/multi-find/ahoCorasick.h b/multi-find/ahoCorasick.h new file mode 100644 index 0000000..36d4068 --- /dev/null +++ b/multi-find/ahoCorasick.h @@ -0,0 +1,116 @@ +#ifndef AHOCORASICK_H +#define AHOCORASICK_H + +#include +#include +#include +#include +#include + +class AhoCorasick { +private: + struct Node { + std::unordered_map children; + Node* fail = nullptr; + std::vector output; // matched keywords at this node + }; + + Node* root; + std::vector insertedKeywords; + +public: + AhoCorasick() { + root = new Node(); + } + + ~AhoCorasick() { + std::function cleanup = [&](Node* node) { + for (auto& [_, child] : node->children) { + cleanup(child); + } + delete node; + }; + cleanup(root); + } + + // Add a single keyword into the trie + void addKeyword(const std::string& keyword) { + Node* node = root; + for (char ch : keyword) { + if (!node->children.count(ch)) { + node->children[ch] = new Node(); + } + node = node->children[ch]; + } + node->output.push_back(keyword); + insertedKeywords.push_back(keyword); + } + + // Expose inserted keywords (e.g., for color mapping) + const std::vector& getKeywords() const { + return insertedKeywords; + } + + // Build failure links for the trie + void build() { + std::queue q; + root->fail = root; + + // Set level 1 fail links to root + for (auto& [ch, node] : root->children) { + node->fail = root; + q.push(node); + } + + // BFS through the trie + while (!q.empty()) { + Node* current = q.front(); q.pop(); + + for (auto& [ch, child] : current->children) { + Node* fallback = current->fail; + while (fallback != root && !fallback->children.count(ch)) { + fallback = fallback->fail; + } + + if (fallback->children.count(ch) && fallback->children[ch] != child) { + child->fail = fallback->children[ch]; + } else { + child->fail = root; + } + + // Merge output from fail link + for (const std::string& kw : child->fail->output) { + child->output.push_back(kw); + } + + q.push(child); + } + } + } + + // Search for matches in the given text, return (position, matched word) pairs + std::vector> search(const std::string& text) const { + std::vector> results; + Node* node = root; + + for (size_t i = 0; i < text.size(); ++i) { + char ch = text[i]; + + while (node != root && !node->children.count(ch)) { + node = node->fail; + } + + if (node->children.count(ch)) { + node = node->children[ch]; + } + + for (const std::string& match : node->output) { + results.emplace_back(i + 1 - match.size(), match); + } + } + + return results; + } +}; + +#endif // AHOCORASICK_H diff --git a/multi-find/mfind b/multi-find/mfind new file mode 100755 index 0000000000000000000000000000000000000000..80a6cc2b556b90795345b6387d8a6e8be11f9f46 GIT binary patch literal 354120 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

QkYS7%tgM!N&) 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⋘3OIaA#>Z7E(uSB7`w;XZ3F9@5S!RzuV6 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 g@T`6NZ@=`WuYdF3hfn +#include +#include +#include +#include +#include +#include +#include "ahoCorasick.h" + +// ANSI colors +std::vector colors = { + "\033[31m", // Red + "\033[32m", // Green + "\033[33m", // Yellow + "\033[34m", // Blue + "\033[35m", // Magenta + "\033[36m", // Cyan +}; + +std::string resetColor = "\033[0m"; + +void searchFile(const std::string& filename, const AhoCorasick& ac, + const std::unordered_map& colorMap, + size_t chunkSize = 8192) { + + std::ifstream file(filename, std::ios::binary); + if (!file.is_open()) { + std::cerr << "Error: Could not open file " << filename << std::endl; + return; + } + + const size_t overlap = 100; + std::vector buffer(chunkSize + overlap); + size_t offset = 0; + + while (!file.eof()) { + if (offset != 0) { + std::copy(buffer.end() - overlap, buffer.end(), buffer.begin()); + } + + file.read(buffer.data() + (offset != 0 ? overlap : 0), chunkSize); + std::streamsize bytesRead = file.gcount(); + if (bytesRead == 0) break; + + size_t totalSize = (offset == 0 ? bytesRead : bytesRead + overlap); + std::string chunkText(buffer.data(), totalSize); + + auto matches = ac.search(chunkText); + for (const auto& [pos, word] : matches) { + size_t absolutePos = offset + pos; + + // Context window + size_t contextSize = 30; + size_t start = (pos > contextSize) ? (pos - contextSize) : 0; + size_t end = std::min(pos + word.length() + contextSize, chunkText.length()); + std::string context = chunkText.substr(start, end - start); + + // Color match + auto it = colorMap.find(word); + std::string color = (it != colorMap.end()) ? it->second : "\033[37m"; + + // Output format: filename | byte offset | colored word | context + std::cout << filename + << " | byte " << absolutePos + << " | " << color << word << resetColor + << " | ..." << context << "..." << std::endl; + } + + offset += bytesRead; + } + + file.close(); +} + +int main(int argc, char* argv[]) { + if (argc < 3) { + std::cerr << "Usage: " << argv[0] << " [keyword2] ...\n"; + return 1; + } + + std::string path = argv[1]; + AhoCorasick ac; + + // Add keywords to Aho-Corasick + for (int i = 2; i < argc; ++i) { + ac.addKeyword(argv[i]); + } + ac.build(); + + // Assign colors to each keyword + std::unordered_map colorMap; + int colorIndex = 0; + for (const auto& word : ac.getKeywords()) { + colorMap[word] = colors[colorIndex++ % colors.size()]; + } + + if (std::filesystem::is_regular_file(path)) { + searchFile(path, ac, colorMap); + } else if (std::filesystem::is_directory(path)) { + for (const auto& entry : std::filesystem::recursive_directory_iterator(path)) { + if (entry.is_regular_file()) { + searchFile(entry.path().string(), ac, colorMap); + } + } + } else { + std::cerr << "Invalid path.\n"; + return 1; + } + + return 0; +}