add in-memory processing
This commit is contained in:
parent
2487204cdc
commit
1174ceb066
1 changed files with 68 additions and 0 deletions
68
silly_decoder.cpp
Normal file
68
silly_decoder.cpp
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
// Function that takes a list of indices and returns a single string
|
||||
// concatenating the corresponding vocab entries.
|
||||
std::string processIndices(
|
||||
const std::vector<int>& indices,
|
||||
const std::vector<std::pair<int, std::string>>& vocab
|
||||
) {
|
||||
std::ostringstream oss;
|
||||
for (size_t i = 0; i < indices.size(); ++i) {
|
||||
int idx = indices[i];
|
||||
if (idx > 0 && idx <= static_cast<int>(vocab.size())) {
|
||||
oss << vocab[idx - 1].second;
|
||||
} else {
|
||||
oss << "[Index " << idx << " out of range]";
|
||||
}
|
||||
|
||||
if (i != indices.size() - 1)
|
||||
oss << "";
|
||||
}
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
if (argc < 2) {
|
||||
std::cerr << "Usage: " << argv[0] << " index1,index2,...\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::ifstream file("vocab.txt");
|
||||
if (!file) {
|
||||
std::cerr << "Error opening file.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Read vocab.txt and assign indices starting from 1.
|
||||
std::vector<std::pair<int, std::string>> vocab;
|
||||
std::string line;
|
||||
int index = 1;
|
||||
while (std::getline(file, line)) {
|
||||
vocab.emplace_back(index++, line);
|
||||
}
|
||||
file.close();
|
||||
|
||||
// Convert CLI input into a list of indices.
|
||||
std::vector<int> indices;
|
||||
std::istringstream input(argv[1]);
|
||||
std::string token;
|
||||
while (std::getline(input, token, ',')) {
|
||||
try {
|
||||
indices.push_back(std::stoi(token));
|
||||
} catch (const std::exception&) {
|
||||
std::cerr << "Invalid index: " << token << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
// Process the indices and retrieve the aggregated result as a single string.
|
||||
std::string result = processIndices(indices, vocab);
|
||||
|
||||
|
||||
std::cout << "Result: " << result << '\n';
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in a new issue