feat: Added namespace greedy_algoriithms

This commit is contained in:
mjk22071998
2024-10-05 10:33:58 +05:00
parent 48f42a73ce
commit 011c4e2d80

View File

@@ -4,73 +4,76 @@
#include <vector>
#include <cassert>
namespace greedy_algorithms{
/**
* @brief A class that provides methods to separate the digits of a large
* positive number.
*/
class DigitSeparation {
public:
/**
* @brief Default constructor for the DigitSeparation class.
*/
DigitSeparation() {}
class DigitSeparation {
public:
/**
* @brief Default constructor for the DigitSeparation class.
*/
DigitSeparation() {}
/**
* @brief Separates the digits of a large positive number into a vector in
* reverse order.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in reverse order.
*/
std::vector<long long> digitSeparationReverseOrder(
long long largeNumber) const;
/**
* @brief Separates the digits of a large positive number into a vector in
* forward order.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in forward order.
*/
std::vector<long long> digitSeparationForwardOrder(
long long largeNumber) const;
};
/**
* @brief Separates the digits of a large positive number into a vector in
* reverse order.
* @brief Implementation of digitSeparationReverseOrder method.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in reverse order.
*/
std::vector<long long> digitSeparationReverseOrder(
long long largeNumber) const;
std::vector<long long> DigitSeparation::digitSeparationReverseOrder(
long long largeNumber) const {
std::vector<long long> result;
if (largeNumber != 0) {
while (largeNumber != 0) {
result.push_back(std::abs(largeNumber % 10));
largeNumber /= 10;
}
} else {
result.push_back(0);
}
return result;
}
/**
* @brief Separates the digits of a large positive number into a vector in
* forward order.
* @brief Implementation of digitSeparationForwardOrder method.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in forward order.
*/
std::vector<long long> digitSeparationForwardOrder(
long long largeNumber) const;
};
/**
* @brief Implementation of digitSeparationReverseOrder method.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in reverse order.
*/
std::vector<long long> DigitSeparation::digitSeparationReverseOrder(
long long largeNumber) const {
std::vector<long long> result;
if (largeNumber != 0) {
while (largeNumber != 0) {
result.push_back(std::abs(largeNumber % 10));
largeNumber /= 10;
}
} else {
result.push_back(0);
std::vector<long long> DigitSeparation::digitSeparationForwardOrder(
long long largeNumber) const {
std::vector<long long> result = digitSeparationReverseOrder(largeNumber);
std::reverse(result.begin(), result.end());
return result;
}
return result;
}
/**
* @brief Implementation of digitSeparationForwardOrder method.
*
* @param largeNumber The large number to separate digits from.
* @return A vector of digits in forward order.
*/
std::vector<long long> DigitSeparation::digitSeparationForwardOrder(
long long largeNumber) const {
std::vector<long long> result = digitSeparationReverseOrder(largeNumber);
std::reverse(result.begin(), result.end());
return result;
}
int main() {
DigitSeparation ds;
greedy_algorithms::DigitSeparation ds;
// Test case: Positive number
long long number = 1234567890;