codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> #include <vector> #include <fstream> #include <sstream> using namespace std; string ConvertInt2String(int IntVal) { std::string S; std::stringstream out; out << IntVal; S = out.str(); return S; } string Vec2Str (vector <int> NTg) { string StTg = ""; for (unsigned i = 0; i < NTg.size(); i++) { StTg += ConvertInt2String(NTg[i]); } return StTg; } template <typename T> void prn_vec(const std::vector < T >&arg, string sep="") { for (unsigned n = 0; n < arg.size(); n++) { cout << arg[n] << sep; } return; } vector <int> neighbors(vector<int>& arg, int posNo, int baseNo) { // pass base position and return neighbors vector <int> transfVec; transfVec = arg; //modified according to strager's first post transfVec[posNo % arg.size()] = baseNo; return transfVec; } int main ( int arg_count, char *arg_vec[] ) { vector <int> numTag; numTag.push_back(0); numTag.push_back(0); numTag.push_back(1); //numTag.push_back(0); //numTag.push_back(0); // Note that in actual practice numTag can be greater than 3 int TagLen = static_cast<int>(numTag.size()); for ( int p=0; p< TagLen ; p++ ) { // First loop is to generate tags 1 position differ for ( int b=0; b<=3 ; b++ ) { int bval = b; if (numTag[p] == b) { continue; //bval = 0; } vector <int> nbnumTag = neighbors(numTag, p, bval); string SnbnumTag = Vec2Str(nbnumTag); cout << SnbnumTag; cout << "\n"; // // Second loop for tags in 2 position differ for (int l=0; l < TagLen; l++) { if (l == p) { continue; } for (int c=0; c<=3; c++) { int cval = c; if (nbnumTag[l] == c) { continue; //cval = c; } vector <int> nbnumTag2 = neighbors(nbnumTag, l, cval); string SnbnumTag2 = Vec2Str(nbnumTag2); cout << "\t" << SnbnumTag2; cout << "\n"; } } } } return 0; }
Private
[
?
]
Run code
Submit