From 2ab51e507d620c4479e07ca0ec47d22c8c66bc90 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 13 Apr 2021 15:14:34 -0400 Subject: Initial commit --- src/utils.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/utils.h (limited to 'src/utils.h') diff --git a/src/utils.h b/src/utils.h new file mode 100644 index 0000000..f7366dc --- /dev/null +++ b/src/utils.h @@ -0,0 +1,54 @@ +#pragma once +#include "json.hpp" +#include +#include +#include +#include + + +namespace utils { + nlohmann::json loadJson(const std::string& path); + + void saveJson(const nlohmann::json& data, const std::string& path); + + template std::string join(Container parts, std::string joiner) { + std::stringstream out; + bool isFirst = true; + for(std::string p : parts) { + if(! isFirst) { + out << joiner; + } + isFirst = false; + out << p; + } + return out.str(); + } + + const std::map cpValue { + {"cp", 1}, + {"sp", 10}, + {"ep", 50}, + {"gp", 100}, + {"pp", 1000} + }; + + // Accepts coins formatted "X Yp" where X is an integer and Y is any of c, s, e, g, p. + int coins2copper(const std::string& coins); + + // Greedily selects highest coin values to minimize total number of coins + // Returns a vector of pairs mapping coin type to coint + std::vector> copper2coins(int coppers); + + std::string getCostString(int coppers); + + // Recursively loads all .json files under directory + /*std::vector loadAll(std::string directory) { + std::vector items; + for(auto path : std::filesystem::recursive_directory_iterator(directory)) { + if(path.path().extension() == ".json") { + items.push_back(Item::instance(loadJson(path.path()))); + } + } + return items; + }*/ +} -- cgit v1.2.3