コード例 #1
0
int main()
{
    std::ifstream infile("unixdict.txt");
    if (!infile)
    {
        std::cerr << "Can't open word file\n";
        return -1;
    }

    std::vector<std::string> words;
    std::string word;
    int longest = 0;

    while (std::getline(infile, word))
    {
        int length = word.length();
        if (length < longest) continue; // don't test short words

        if (ordered(word))
        {
            if (length > longest)
            {
                longest = length; // set new minimum length
                words.clear(); // reset the container
            }
            words.push_back(word);
        }
    }
    std::copy(words.begin(), words.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
コード例 #2
0
    void serialize(const std::vector<Element>& collection,
        const std::string& name, Handler&& handler, Args&&... args)
    {
        const auto call = synchronize(FORWARD_HANDLER(handler),
            collection.size(), name);

        for (const auto& element: collection)
            ordered(BIND_ELEMENT(args, element, call));
    }
コード例 #3
0
ファイル: all.cpp プロジェクト: caomw/halmd
static void
test_ordered(
    unsigned int nparticle
  , unsigned int nspecies
  , unsigned int repeat
)
{
    typedef typename test_suite_type::particle_type particle_type;
    typedef typename test_suite_type::particle_group_type particle_group_type;
    typedef typename particle_group_type::array_type array_type;
    typedef typename particle_group_type::size_type size_type;
    typedef typename test_suite_type::all_type all_type;

    BOOST_TEST_MESSAGE("  " << "all of " << nparticle << " particles");
    BOOST_TEST_MESSAGE("  " << repeat << " iterations");

    std::shared_ptr<particle_type> particle = std::make_shared<particle_type>(nparticle, nspecies);
    std::shared_ptr<particle_group_type> group = std::make_shared<all_type>(particle);
    {
        BOOST_CHECK_EQUAL( *group->size(), nparticle );
    }

    halmd::cache<> size_cache = group->size();
    halmd::cache<> ordered_cache = group->ordered();

    halmd::accumulator<double> elapsed;
    for (size_type i = 0; i < repeat; ++i) {
        std::vector<size_type> reverse_tag = make_random_tag(nparticle);

        BOOST_CHECK( size_cache == group->size() );
        BOOST_CHECK( ordered_cache == group->ordered() );
        BOOST_CHECK( set_reverse_tag(
            *particle
          , reverse_tag.begin()) == reverse_tag.end()
        );
        {
            halmd::scoped_timer<halmd::timer> t(elapsed);
            halmd::cache<array_type> const& ordered = group->ordered();
            BOOST_CHECK( ordered_cache != ordered );
            ordered_cache = ordered;
        }

        std::vector<size_type> ordered(nparticle);
        BOOST_CHECK( get_ordered(
            *group
          , ordered.begin()) == ordered.end()
        );
        BOOST_CHECK_EQUAL_COLLECTIONS(
            ordered.begin()
          , ordered.end()
          , reverse_tag.begin()
          , reverse_tag.end()
        );
    }
    BOOST_TEST_MESSAGE( "  " << mean(elapsed) * 1e3 << " ± " << error_of_mean(elapsed) * 1e3 << " ms per iteration" );
}
コード例 #4
0
ファイル: neighbors.cpp プロジェクト: MorLong/hpca
void getnn(FILE* fout, Eigen::MatrixXf m, const int idx){

    // find nearest neighbour
    Eigen::VectorXf dist = (m.rowwise() - m.row(idx)).rowwise().squaredNorm();
    std::vector<int> sortidx = ordered(dist);
    for (int i=1;i<top;i++){
        fprintf(fout, "%s, ", tokename[sortidx[i]]);
    }
    fprintf(fout, "%s\n", tokename[sortidx[top]]);
}
コード例 #5
0
ファイル: std_vector.hpp プロジェクト: aecins/namaris
 std::vector<T> reorder  ( const std::vector<T> &unordered,
                           const std::vector<size_t> &sort_order
                         )
 {
   // copy for the reorder according to index_map, because unsorted may also be sorted
   std::vector<T> ordered (sort_order.size());
   for(int i = 0; i<sort_order.size();i++)
   {
     ordered[i] = unordered[sort_order[i]];
   }
   
   return ordered;
 }
コード例 #6
0
ファイル: tripartizione.c プロジェクト: spoto/ProgrammazioneC
static int swap(char *s) {
  char temp;
  int swapped = 0; // falso

  while (*s && *(s + 1)) {
    if (!ordered(*s, *(s + 1))) {
      temp = *s;
      *s = *(s + 1);
      *(s + 1) = temp;
      swapped = 1; // vero
    }

    s++;
  }

  return swapped;
}
コード例 #7
0
ファイル: tree-dictionary.c プロジェクト: Danghor/Algorithms
// A constructor for list nodes.
Table insert(Table t, Key key, Value val)
{
	if (t == 0) {
		BinTree nodePtr = malloc( sizeof(struct BinNode) );
		nodePtr->key    = key;
		nodePtr->val    = val;
		nodePtr->left   = 0;
		nodePtr->right  = 0;
		return nodePtr;
	}
	int cmp = compareKey(key, t->key);
	if (cmp == -1) {
		t->left = insert(t->left, key, val);
	} else if (cmp == 1) {
		t->right = insert(t->right, key, val);
	} else {
		t->val = val;
	}
	assert( ordered(t) );
	return t;
}
コード例 #8
0
ファイル: 00120.cpp プロジェクト: marinvhs/SMAS
int main(void){
	while(scanf("%d%c",&normal[0],&c)!=EOF){
		printf("%d",normal[0]);
		order[0] = normal[0];
		for(i = 1; c != '\n';order[i] = normal[i],i++)
			scanf("%d%c",&normal[i],&c);
		pancakes = i;
		std::sort(order,order+pancakes);		
		for(i = 1; i < pancakes; i++) printf(" %d",normal[i]);
		putchar('\n');
		for(i = 0;!ordered();i++){
			if(normal[0] != order[pancakes-i-1]){				
				for(j = 0; normal[pancakes-j-1] != order[pancakes-i-1]; j++);
				printf("%d ",j+1);
				std::reverse(normal,normal+pancakes-j);
			}
			printf("%d ",i+1);
			std::reverse(normal,normal+pancakes-i);
		}
		printf("0\n");
	}
}
コード例 #9
0
vector<int> CaffeMobile::predict_top_k(string img_path, int k) {
	CHECK(caffe_net != NULL);

	Datum datum;
	CHECK(ReadImageToDatum(img_path, 0, 256, 256, true, &datum));
	const shared_ptr<MemoryDataLayer<float>> memory_data_layer =
		static_pointer_cast<MemoryDataLayer<float>>(
			caffe_net->layer_by_name("data"));
	memory_data_layer->AddDatumVector(vector<Datum>({datum}));

	float loss;
	vector<Blob<float>* > dummy_bottom_vec;
	clock_t t_start = clock();
	const vector<Blob<float>*>& result = caffe_net->Forward(dummy_bottom_vec, &loss);
	clock_t t_end = clock();
	LOG(DEBUG) << "Prediction time: " << 1000.0 * (t_end - t_start) / CLOCKS_PER_SEC << " ms.";

	const vector<float> probs = vector<float>(result[1]->cpu_data(), result[1]->cpu_data() + result[1]->count());
	CHECK_LE(k, probs.size());
	vector<size_t> sorted_index = ordered(probs);

	return vector<int>(sorted_index.begin(), sorted_index.begin() + k);
}
コード例 #10
0
multimap<double, IndexDocument*, std::greater<double> > VectorModelSpace::search(Query query) {
    multimap<double, IndexDocument*, std::greater<double> >  results;
    if (mDocuments && mIndex && mDictionary)
    {
        unordered_map<unsigned int, Query::QueryTerm*> terms = query.mTerms;
        unordered_map<unsigned int, Query::QueryTerm*>::iterator it = terms.begin();
        unordered_map<unsigned int, Query::QueryTerm*>::iterator end = terms.end();
        
        //writing terms
        for (; it != end; ++it) {
            Term* term = mDictionary->find(it->second->text);
            //calculate weight
            if (term) {
                //f(t)
                it->second->term = *term;
                
                //w(t)
                it->second->weightQuery = 1*log2(mCollectionSize/term->frequency);
                
                //for each (d, f(d,t))
                recoverIndexTerms(*term, &query);
            }
            else
                it->second->weightQuery = 0;
        }
        
        //Cosine
        order(&query);
        
        multimap<double, IndexDocument*, std::greater<double> > ordered(query.mIndexDocuments.begin(), query.mIndexDocuments.end());
        results = ordered;
    }
    else
        cout << "initSearch before use search method!" << endl;
    
    return results;
}
コード例 #11
0
ファイル: index.cpp プロジェクト: t3pleni9/SolidCompressor
void Index::printIndex() {
    std::map<unsigned int, IndexHeader> ordered(Index::headerIndex.begin(), Index::headerIndex.end());
    for ( auto it : ordered )
        std::cout << " " << it.first << " " << it.second.block<<" " << it.second.size<<" " << it.second.type<< std::endl;
}
コード例 #12
0
ファイル: H_TOWER6.CPP プロジェクト: asakpke/HonaiTower
void honTower( Bag *from, Bag *temp, Bag *to )
/////////////////////////////////////////////////////
{
	while( from->n > -1 )
	//it should/may be from->n >= from->si
	// i.e
	{
		if( from != &a && from->n <= from->si )
			return;
		int top = from->bag[from->n];
		move( from, to );
		while( !ordered(to, top ) )
		{
			if( temp->n == temp->si-1 )
			{
				if( from->n == from->si )
					move( from, to );
				else if( from->n == from->si+1 )
				{
					move( from, temp );
					move( from, to );
					move( temp, to );
				}
				else
					while( from->n >= from->si )
					{
						temp->si = temp->n+1;
						//if( to->n > 0 )
						to->si = to->n+1;
						// it may be from->n - from->si +1;
						if( ((from->n - from->si + 1) % 2) == 0 )
							honTower( from, to, temp );
						else
							honTower( from, temp, to );
						from->si  = 0;
						//to->si	= 0;
						//temp->si = 0;
						// all element from a is come to b
						return;
					}
			}
			if( temp->n == temp->si )
				move( temp, to );
			else if( temp->n == temp->si+1 )
			{
				move( temp, from );
				move( temp, to );
				move( from, to );
			}
			else
			{
				while( temp->n > temp->si )
				{
					from->si = from->n+1;
					to->si = to->n+1; // ????????????
					if( (temp->n % 2) == 0 )
						honTower( temp, from, to );
					else
						honTower( temp, to, from );
					//from->si  = 0;
					to->si	= 0;
					// should be
					// to->si = 0;
					move( temp, to );
					continue;
				}
			}
		}
		if( from == &a )
			if( to == &b )
				to = &c, temp = &b;
			else
				to = &b, temp = &c;
		else if( from == &c )
			if( to == &b )
				to = &a, temp = &b;
			else
				to = &b, temp = &a;
		else if( from = &b )
			if( to == &c )
				to = &a, temp = &c;
			else
				to = &c, temp = &a;
	}
} // end of honTower
コード例 #13
0
ファイル: worlddownloadutils.cpp プロジェクト: CURG/ros_kinfu
  void WorldDownloadManager::removeDuplicatePoints(typename pcl::PointCloud<PointT>::ConstPtr cloud,
  TrianglesConstPtr triangles,typename pcl::PointCloud<PointT>::Ptr out_cloud,TrianglesPtr out_triangles)
{
  const uint64 input_size = cloud->size();
  std::vector<uint64> ordered(input_size);
  for (uint64 i = 0; i < input_size; i++)
    ordered[i] = i;

  std::sort(ordered.begin(),ordered.end(),WorldDownloadManager_mergeMeshTrianglesComparator<PointT>(*cloud));

  typedef WorldDownloadManager_mergeMeshTrianglesAverageClass<PointT> AverageClass;
  std::vector<uint64> re_association_vector(input_size);
  std::vector<AverageClass, Eigen::aligned_allocator<AverageClass> > average_vector;

  uint64 output_i = 0;
  re_association_vector[ordered[0]] = 0;

  for (uint64 src_i = 1; src_i < input_size; src_i++)
  {
    const PointT & prev = (*cloud)[ordered[src_i - 1]];
    const PointT & current = (*cloud)[ordered[src_i]];
    const int not_equal = std::memcmp(prev.data,current.data,sizeof(float) * 3);
    if (not_equal)
      output_i++;
    re_association_vector[ordered[src_i]] = output_i;
  }
  const uint64 output_size = output_i + 1;

  out_cloud->resize(output_size);
  average_vector.resize(output_size);
  for (uint64 i = 0; i < input_size; i++)
    average_vector[re_association_vector[i]].insert((*cloud)[i]);
  for (uint64 i = 0; i < output_size; i++)
    (*out_cloud)[i] = average_vector[i].get();

  if (out_triangles && triangles)
  {
    const uint64 triangles_size = triangles->size();
    uint64 out_triangles_size = 0;
    out_triangles->resize(triangles_size);
    for (uint64 i = 0; i < triangles_size; i++)
    {
      kinfu_msgs::KinfuMeshTriangle new_tri;
      for (uint h = 0; h < 3; h++)
        new_tri.vertex_id[h] = re_association_vector[(*triangles)[i].vertex_id[h]];

      bool degenerate = false;
      for (uint h = 0; h < 3; h++)
        if (new_tri.vertex_id[h] == new_tri.vertex_id[(h + 1) % 3])
          degenerate = true;

      if (!degenerate)
      {
        (*out_triangles)[out_triangles_size] = new_tri;
        out_triangles_size++;
      }
    }

    out_triangles->resize(out_triangles_size);
  }
}