From 32d627eb996761c052b5b0f55a7294e799a2f51d Mon Sep 17 00:00:00 2001 From: "Bradley M. Small" <bsmall@bsmall-4600> Date: Tue, 24 Sep 2013 08:25:29 -0400 Subject: [PATCH] initial checkin --- Makefile | 28 +++++++++++++++ codeseries.zip | Bin 0 -> 4638 bytes combo.cpp | 57 ++++++++++++++++++++++++++++++ combo.h | 23 ++++++++++++ cut.cpp | 56 +++++++++++++++++++++++++++++ cut.h | 27 ++++++++++++++ main.cpp | 58 ++++++++++++++++++++++++++++++ tests.cpp | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ tests.h | 19 ++++++++++ unit_test.cpp | 52 +++++++++++++++++++++++++++ 10 files changed, 413 insertions(+) create mode 100644 Makefile create mode 100644 codeseries.zip create mode 100644 combo.cpp create mode 100644 combo.h create mode 100644 cut.cpp create mode 100644 cut.h create mode 100644 main.cpp create mode 100644 tests.cpp create mode 100644 tests.h create mode 100644 unit_test.cpp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..16e6d63 --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +DEPS=combo.h cut.h Makefile tests.h +SRCS=combo.cpp cut.cpp main.cpp tests.cpp +BIN=main.bin +OBJS = $(SRCS:.cpp=.o) + +TEST_SRCS=unit_test.cpp combo.cpp cut.cpp tests.cpp +TEST_BIN=unit_test.bin + +TEST_OBJS = $(TEST_SRCS:.cpp=.o) + +CXXFLAGS = -g -Wall +TESTCXXFLAGS = -I${HOME}/include + +all : $(BIN) $(TEST_BIN) + +%.o: %.cpp $(DEPS) + $(CXX) -c -o $@ $< $(CXXFLAGS) $(TESTCXXFLAGS) + +$(BIN) : $(OBJS) + $(CXX) -o $@ $^ $(CXXFLAGS) + +$(TEST_BIN) : $(TEST_OBJS) + $(CXX) -o $@ $^ $(TESTCXXFLAGS) + ./$(TEST_BIN) + +clean : + rm -rf $(OBJS) $(BIN) $(TEST_OBJS) $(TEST_BIN) + diff --git a/codeseries.zip b/codeseries.zip new file mode 100644 index 0000000000000000000000000000000000000000..22c3d6ad1ef4fa8dff1099cb9c326a0fa323ba0e GIT binary patch literal 4638 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 Y-UO$RXYeIHHf}JW6>s9ol*j-64|tDwHUIzs literal 0 HcmV?d00001 diff --git a/combo.cpp b/combo.cpp new file mode 100644 index 0000000..5f7cf69 --- /dev/null +++ b/combo.cpp @@ -0,0 +1,57 @@ +//Copyright (c) 2013 Bradley M. Small +#include "combo.h" + +Combo::Combo(Cut cut, int Count) : count(Count) , comb(Count,cut), rolled(false){} + +Combo::Combo(const Combo& other) : count(other.count), comb(other.comb), rolled(false){} + +Combo& Combo::operator++() { + int rollCount( 0 ); + for (std::vector<Cut>::reverse_iterator x = comb.rbegin(); x < comb.rend(); ++x){ + ++(*x); + if(!(*x).isRolled()) break; + ++rollCount; + } + if (rollCount == count) + rolled = true; + return *this; +} + +Combo& Combo::operator--() { + int rollCount( 0 ); + for (std::vector<Cut>::reverse_iterator x = comb.rbegin(); x < comb.rend(); ++x){ + --(*x); + if(!(*x).isRolled()) break; + ++rollCount; + } + if (rollCount == count) + rolled = true; + + return *this; +} + +Combo Combo::operator++(int) { + Combo c(*this); + ++(*this); + return c; +} + +Combo Combo::operator--(int) { + Combo c(*this); + --(*this); + return c; +} + +bool Combo::isRolled() { + return (rolled)?rolled=false, true:false; +} + +std::ostream& operator<<(std::ostream& stream, const Combo &c) { + + for (std::vector<Cut>::const_iterator x = c.comb.begin(); x < c.comb.end(); ++x){ + stream << (*x); + } + stream << std::endl; + return stream; +} + diff --git a/combo.h b/combo.h new file mode 100644 index 0000000..e4112b6 --- /dev/null +++ b/combo.h @@ -0,0 +1,23 @@ +//Copyright (c) 2013 Bradley M. Small +#ifndef _COMBO_H_ +#define _COMBO_H_ +#include <vector> + +#include "cut.h" +class Combo { +public: + Combo(Cut cut = Cut('A', 'A', 'E'), int Count = 6); + Combo(const Combo & other); + Combo& operator++(); + Combo& operator--(); + Combo operator++(int); + Combo operator--(int); + friend class Tests; + friend std::ostream& operator<<(std::ostream& stream, const Combo& c); + bool isRolled(); +private: + int count; + std::vector<Cut> comb; + bool rolled; +}; +#endif diff --git a/cut.cpp b/cut.cpp new file mode 100644 index 0000000..465ce7a --- /dev/null +++ b/cut.cpp @@ -0,0 +1,56 @@ +//Copyright (c) 2013 Bradley M. Small +#include <iostream> +#include "cut.h" + +Cut::Cut(char Val, char Low, char High) : low(Low), high(High), val(Val), rolled(false) { } + +Cut::Cut(const Cut& other) : low(other.low), high(other.high), val(other.val), rolled(false) { } + +Cut& Cut::operator++() { + if(++val > high) { + val = low; + rolled=true; + } + return *this; +} + +Cut& Cut::operator--() { + if(--val < low) { + val = high; + rolled=true; + } + return *this; +} + +Cut Cut::operator++(int) { + Cut result(*this); + ++(*this); + return result; +} + +Cut Cut::operator--(int) { + Cut result(*this); + --(*this); + return result; +} + +bool Cut::isRolled() { + return (rolled)?rolled=false, true:false; +} + +bool Cut::operator==(const Cut & rhs) const { + return (this->val == rhs.val); +} + +bool operator<(const Cut & lhs, const Cut & rhs) { + return (lhs.val < rhs.val); +} + +std::ostream& operator<<(std::ostream& stream, const Cut& cut) { + stream << cut.val; + return stream; +} + +int operator-(const Cut & lhs, const Cut & rhs) { + return (lhs.val - rhs.val); +} diff --git a/cut.h b/cut.h new file mode 100644 index 0000000..bbe54e0 --- /dev/null +++ b/cut.h @@ -0,0 +1,27 @@ +//Copyright (c) 2013 Bradley M. Small +#ifndef _CUT_H_ +#define _CUT_H_ +#include<iostream> +class Cut { +public: + Cut(char Val='A', char Low='A', char High='Z'); + Cut(const Cut& other); + bool isRolled(); + Cut& operator++(); + Cut& operator--(); + Cut operator++(int); + Cut operator--(int); + bool operator==(const Cut & rhs) const ; + friend bool operator<(const Cut & lhs, const Cut & rhs); + friend int operator-(const Cut&, const Cut& ); + friend std::ostream& operator<<(std::ostream& stream, const Cut& cut); + char GetHigh() const {return high;}; + char GetLow() const {return low; }; + char GetVal() const {return val; }; +private: + char low; + char high; + char val; + bool rolled; +}; +#endif diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..32ee1a0 --- /dev/null +++ b/main.cpp @@ -0,0 +1,58 @@ +//Copyright (c) 2013 Bradley M. Small +#include <iostream> +#include "cut.h" +#include "combo.h" +#include "tests.h" +#include <algorithm> +#include <cmath> + +const bool debug ( false ); + +bool isValid(Combo combo) { + // apply rules here + bool retVal (true); + Tests t; + const size_t mostContiguous ( 3 ); + const size_t mostPresent ( 4 ); + const size_t maxAdjacent ( 2 ); + + if(t.MostContiguous(combo) > mostContiguous) { + if(debug) std::cout << "\tMaxContig:" << combo; + retVal = false; + } + if(t.MostPresent(combo) > mostPresent) { + if(debug) std::cout << "\tMaxPresent:" << combo; + retVal = false; + } + if(t.MaxAdjacent(combo) > maxAdjacent) { + if(debug) std::cout << "\tMaxAdjacent:" << combo; + retVal = false; + } + + return retVal; +} + +int main( void ) { + Cut cut('A', 'A', 'E'); + Combo combo(cut, 6); + + std::vector<Combo> codeSeries; + + for(;!combo.isRolled();){ + if( isValid(combo) ) + codeSeries.push_back(combo); + ++combo; + } + + std::random_shuffle(codeSeries.begin(), codeSeries.end()); + + int width = ceil(log10(codeSeries.size())); + int num(1); + + for (std::vector<Combo>::iterator x = codeSeries.begin(); x < codeSeries.end(); ++x) { + std::cout.width(width); + std::cout.fill('0'); + std::cout << num++ << " : " << *x; + } + return 0; +} diff --git a/tests.cpp b/tests.cpp new file mode 100644 index 0000000..8aa7266 --- /dev/null +++ b/tests.cpp @@ -0,0 +1,93 @@ +//Copyright (c) 2013 Bradley M. Small +#include "tests.h" +#include "combo.h" +#include "cut.h" +#include <vector> +#include <cstdlib> +#include <map> + +size_t Tests::MostContiguous( const Combo & combo ){ + size_t High (1), CurrentCount( 1 ); + + for (std::vector<Cut>::const_iterator x = combo.comb.begin() + 1; x < combo.comb.end(); ++x) { + if(*x == *(x-1)) { + ++CurrentCount; + if(CurrentCount > High) + High = CurrentCount; + } else { + CurrentCount = 1; + } + } + return (High); +} + +size_t Tests::LeastContiguous ( const Combo & combo ){ + size_t Low(combo.comb.size()), CurrentCount(1); + for (std::vector<Cut>::const_iterator x = combo.comb.begin() + 1; x < combo.comb.end(); ++x) { + if(*x == *(x-1)) { + ++CurrentCount; + } else { + if(CurrentCount < Low) + Low = CurrentCount; + CurrentCount = 1; + } + } + return (Low); +} + +size_t Tests::MostPresent ( const Combo & combo ){ + std::map<Cut,size_t> cutMap; + size_t Max ( 1 ); + for (std::vector<Cut>::const_iterator x = combo.comb.begin(); x < combo.comb.end(); ++x) { + if(cutMap.find(*x) == cutMap.end()) { + cutMap[*x] = 1; + } else { + ++cutMap[*x]; + } + } + for(std::map<Cut, size_t>::const_iterator x = cutMap.begin(); x != cutMap.end(); ++x) { + if(x->second > Max) + Max = x->second; + } + return (Max); +} + +size_t Tests::LeastPresent ( const Combo & combo ){ + std::map<Cut,size_t> cutMap; + size_t Min ( combo.comb.size() ); + for (std::vector<Cut>::const_iterator x = combo.comb.begin(); x < combo.comb.end(); ++x) { + if(cutMap.find(*x) == cutMap.end()) { + cutMap[*x] = 1; + } else { + ++cutMap[*x]; + } + } + for(std::map<Cut, size_t>::const_iterator x = cutMap.begin(); x != cutMap.end();++x) { + if(x->second < Min) + Min = x->second; + } + return(Min); +} + +size_t Tests::MaxAdjacent ( const Combo & combo ){ + size_t Max ( 0 ); + size_t CurrentDiff ( 0 ); + for (std::vector<Cut>::const_iterator x = combo.comb.begin() + 1; x < combo.comb.end(); ++x) { + + CurrentDiff = abs(*x - *(x-1)); + if (CurrentDiff > Max) + Max = CurrentDiff; + } + return (Max); +} + +size_t Tests::MinAdjacent ( const Combo & combo ){ + size_t Min ( 25 ); + size_t CurrentDiff ( 0 ); + for (std::vector<Cut>::const_iterator x = combo.comb.begin() + 1; x < combo.comb.end(); ++x) { + CurrentDiff = abs(*x - *(x-1)); + if (CurrentDiff < Min) + Min = CurrentDiff; + } + return (Min); +} diff --git a/tests.h b/tests.h new file mode 100644 index 0000000..196858b --- /dev/null +++ b/tests.h @@ -0,0 +1,19 @@ +//Copyright (c) 2013 Bradley M. Small +#ifndef _TESTS_H_ +#define _TESTS_H_ + +#include "combo.h" +#include "cut.h" + +class Tests { +public: + size_t MostContiguous ( const Combo & combo ); + size_t LeastContiguous ( const Combo & combo ); + size_t MostPresent ( const Combo & combo ); + size_t LeastPresent ( const Combo & combo ); + size_t MaxAdjacent ( const Combo & combo ); + size_t MinAdjacent ( const Combo & combo ); +private: +}; + +#endif diff --git a/unit_test.cpp b/unit_test.cpp new file mode 100644 index 0000000..aac51c3 --- /dev/null +++ b/unit_test.cpp @@ -0,0 +1,52 @@ +#include "tests.h" +#include "combo.h" +#include "cut.h" +#define BOOST_TEST_MODULE CodeSeriesTests +#include <boost/test/included/unit_test.hpp> + +BOOST_AUTO_TEST_SUITE( test_class_cut ) +BOOST_AUTO_TEST_CASE( test_cut_ctor0 ) +{ + Cut a; + + BOOST_CHECK_EQUAL( a.GetHigh(), 'Z' ); + BOOST_CHECK_EQUAL( a.GetLow() , 'A' ); + BOOST_CHECK_EQUAL( a.GetVal() , 'A' ); +} +BOOST_AUTO_TEST_CASE( test_cut_ctor1 ) +{ + Cut b('Q', 'P', 'R'); + + BOOST_CHECK_EQUAL( b.GetHigh(), 'R' ); + BOOST_CHECK_EQUAL( b.GetLow() , 'P' ); + BOOST_CHECK_EQUAL( b.GetVal() , 'Q' ); +} +BOOST_AUTO_TEST_CASE( test_cut_ctor2 ) +{ + Cut c('J'); + + BOOST_CHECK_EQUAL( c.GetHigh(), 'Z' ); + BOOST_CHECK_EQUAL( c.GetLow() , 'A' ); + BOOST_CHECK_EQUAL( c.GetVal() , 'J' ); + +} +BOOST_AUTO_TEST_CASE( test_cut_plusminus ) +{ + Cut d; + + BOOST_CHECK_EQUAL( d.GetVal() , 'A' ); + d++; + BOOST_CHECK_EQUAL( d.GetVal() , 'B' ); + ++d; + BOOST_CHECK_EQUAL( d.GetVal() , 'C' ); + --d; + BOOST_CHECK_EQUAL( d.GetVal() , 'B' ); + d--; + BOOST_CHECK_EQUAL( d.GetVal() , 'A' ); + d--; + BOOST_CHECK_EQUAL( d.GetVal() , 'Z' ); + d++; + BOOST_CHECK_EQUAL( d.GetVal() , 'A' ); + +} +BOOST_AUTO_TEST_SUITE_END() -- GitLab