From 7339e6a8bc2a5ff3af523a4f71f2c27e34b4b167 Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Sun, 6 Mar 2016 17:29:16 +0300 Subject: [PATCH] robot_name: iteration 1 --- cpp/robot-name/robot_name.cpp | 47 +++++++++++++++++++++++++++++++++++ cpp/robot-name/robot_name.h | 25 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 cpp/robot-name/robot_name.cpp create mode 100644 cpp/robot-name/robot_name.h diff --git a/cpp/robot-name/robot_name.cpp b/cpp/robot-name/robot_name.cpp new file mode 100644 index 0000000..fb97ad6 --- /dev/null +++ b/cpp/robot-name/robot_name.cpp @@ -0,0 +1,47 @@ +#include "robot_name.h" + +#include + + +namespace robot_name { + +using namespace std; + + +namespace { + +const size_t alpha_part_size = 2; +const size_t digit_part_size = 3; + +string random_string(size_t size, char from_char, char to_char) +{ + auto random_char = [from_char, to_char]() -> char { + return from_char + rand() % (to_char - from_char + 1); + }; + + string result(size, 0); + generate_n(result.begin(), size, random_char); + + return result; +}; + +} + + +robot::robot() +{ + reset(); +} + +void robot::reset() +{ + name_ = random_string(alpha_part_size, 'A', 'Z') + + random_string(digit_part_size, '0', '9'); +} + +const name_t &robot::name() const +{ + return name_; +} + +} diff --git a/cpp/robot-name/robot_name.h b/cpp/robot-name/robot_name.h new file mode 100644 index 0000000..b808855 --- /dev/null +++ b/cpp/robot-name/robot_name.h @@ -0,0 +1,25 @@ +#pragma once + +#define EXERCISM_RUN_ALL_TESTS + +#include + +namespace robot_name { + +typedef std::string name_t; + + +class robot +{ + name_t name_; + +public: + + robot(); + + void reset(); + + const name_t &name() const; +}; + +}