[ create a new paste ] login | about

Link: http://codepad.org/efWQ7EGU    [ raw code | fork ]

C, pasted on Mar 28:
#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;
}


Create a new paste based on this one


Comments: