From a34da8d34f15677b0af303fb558fd2b287d3bf18 Mon Sep 17 00:00:00 2001 From: W0LF Date: Fri, 30 Jun 2023 20:18:42 +0300 Subject: [PATCH] Refactored IsEqual() function. --- bulls-and-cows-cpp/CGame.cpp | 4 ++-- bulls-and-cows-cpp/CGame.h | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/bulls-and-cows-cpp/CGame.cpp b/bulls-and-cows-cpp/CGame.cpp index 8afe4fd..89709ca 100644 --- a/bulls-and-cows-cpp/CGame.cpp +++ b/bulls-and-cows-cpp/CGame.cpp @@ -26,7 +26,7 @@ void CGame::Init(int digits) n = d(e); if (i > 0) { - while (IsEqual1(m_uGuessedNumber, n, i)) + while (IsEqual(m_uGuessedNumber, n, i)) { n = d(e); } @@ -125,7 +125,7 @@ int CGame::GetNumber(CStep step) } else { - if (IsEqual2(sNumber, c, i)) + if (IsEqual(sNumber, c, i)) { return -4; } diff --git a/bulls-and-cows-cpp/CGame.h b/bulls-and-cows-cpp/CGame.h index 74dcd7e..c3a231a 100644 --- a/bulls-and-cows-cpp/CGame.h +++ b/bulls-and-cows-cpp/CGame.h @@ -17,9 +17,8 @@ private: int* m_uGuessedNumber; std::vector m_Steps; - bool IsEqual1(const int*, const int, int); - - bool IsEqual2(const std::wstring&, const wchar_t, int); + template + bool IsEqual(const T, const N, int); int GetNumber(CStep); @@ -37,3 +36,17 @@ public: void Start(); }; + +template +bool CGame::IsEqual(const T number, const N digit, int i) +{ + i--; + bool result = false; + + while (i >= 0) + { + if (digit == number[i]) result = true; + i--; + } + return result; +}