示例#1
0
int main (int argc, char** argv) {
  std::string line;

  int limit = 100;
  int elements = 4;
  std::vector<std::vector<int>> v;
  for(int i = 0 ; i < elements - 1; ++i) {
    v = generateAll(limit, v); 
  }
  // For the last generation iteration we just want to print out the max value
  generateAll(limit, v, true);
}
示例#2
0
int main(int argc, char **argv)
{
  if(argc < 2) return EXIT_FAILURE;
  int stage = atoi(argv[1]);
  char *state = argv[2];
  if(!isValidState(state)) return EXIT_FAILURE;
  
  if(stage == 1){
    //char *state = argv[2];
    char *movelist = argv[3];
    //if(!isValidState(state)) return EXIT_FAILURE;
    if(!isValidMoveList(movelist)) return EXIT_FAILURE;
    //printf("processing...\n");
    processMoveList(state, movelist);
  }
  else if(stage == 2){
    int n_moves = atoi(argv[3]);
    if(n_moves < 0 || n_moves > 9) return EXIT_FAILURE;
    MoveTree *generate = generateAll(state, n_moves);
    MoveTree_print(generate);
    free(generate);
  }
  else if(stage == 3){
    char *solution = solve(state);
    printf("%s\n", solution);
    free(solution);
  }
  return EXIT_SUCCESS;
}
示例#3
0
MyWidget::MyWidget(QGLWidget *parent)
  : QGLWidget(QGLFormat(), parent)
{

  setMouseTracking(true);

  setPaletteBackgroundColor(QColor(255,255,255));

  setstatus();

  menu = new QMenuBar(this, "Menu bar");
  file = new QPopupMenu( this , "file");
  save = new QPopupMenu( this , "save");
  placement = new QPopupMenu( this , "placement");
  options = new QPopupMenu( this , "options");
  view = new QPopupMenu( this , "viewing");
  save->insertItem( "Save &eps file", this, SLOT(savedepsfile()), CTRL+Key_E );
  save->insertItem( "Save &stl file", this, SLOT(savedstlfile()), CTRL+Key_S );
  file->insertItem( "&Load", this, SLOT(openedfile()), CTRL+Key_L );
  generate_id = placement->insertItem( "&Generate", &p, SLOT(generate()), CTRL+Key_G );
  generatefirst_id = placement->insertItem( "Generate &First", &p, SLOT(generateFirst()), CTRL+Key_F );
  generatenext_id = placement->insertItem( "Generate &Next", &p, SLOT(generateNext()), CTRL+Key_N );
  generateten_id = placement->insertItem( "Next &ten streamlines", &p, SLOT(generateTen()), CTRL+Key_T );
  generateresume_id = placement->insertItem( "&Resume the placement", &p, SLOT(generateAll()), CTRL+Key_C );
  clear_id = placement->insertItem( "&Clear", &p, SLOT(purge()), CTRL+Key_M );
  drawstl_id = view->insertItem( "&Draw streamlines", &p, SLOT(draw_stl()), CTRL+Key_D );
  drawpq_id = view->insertItem( "Draw &queue elements", &p, SLOT(draw_pq()), CTRL+Key_Q );
  drawtr_id = view->insertItem( "Draw t&riangulation", &p, SLOT(draw_tr()), CTRL+Key_R );
  drawbc_id = view->insertItem( "Draw &biggest circle", &p, SLOT(draw_bc()), CTRL+Key_B );
  addimage_id = placement->insertItem( "&Image", this, SLOT(openedimage()), CTRL+Key_I );
  options->insertItem( "Density...", &p, SLOT(density()));
  options->insertItem( "Saturation ration...", &p, SLOT(ratio()));
  options->insertItem( "Sampling step...", &p, SLOT(sampling()));
  options->insertItem( "Integrating step...", &p, SLOT(integrating()));
  placement->insertItem( "&Options ", options );
  save_id = file->insertItem( "&Save", save );
  menu->insertItem( "&File", file );
  menu->insertItem( "&Placement", placement );
  view_id = menu->insertItem( "&View ", view );
  file->insertItem( "&Quit", qApp, SLOT(quit()), ALT+Key_F4 );

  // desable all generator menu items
  placement->setItemEnabled(generate_id, false);
  placement->setItemEnabled(generatefirst_id, false);
  placement->setItemEnabled(generatenext_id, false);
  placement->setItemEnabled(generateten_id, false);
  placement->setItemEnabled(generateresume_id, false);
  placement->setItemEnabled(clear_id, false);

  menu->setItemEnabled(view_id, false);

  placement->setItemEnabled(addimage_id, false);
  file->setItemEnabled(save_id, false);


  connect(this, SIGNAL(fileloaded(const QString &)), &p, SLOT(load(const QString &)));
  connect(this, SIGNAL(imageloaded(const QString &)), &p, SLOT(image(const QString &)));
  connect(&p, SIGNAL(optionschanged()), this, SLOT(updatestatus()));

}
示例#4
0
char *solve(char * state)
{
  MoveTree *tree = generateAll(state,MAX_SEARCH_DEPTH);
  MoveTree *answer = MoveTree_find(tree, FINAL_STATE);
  char *moves = NULL;
  if(answer != NULL){
    moves = strdup(answer -> moves);
  }
  MoveTree_destroy(tree);
  return moves;
}
MainWindow::MainWindow(QWidget* parent) : QWidget(parent)
{
  setupUi(this);

  connect(bSave, SIGNAL(clicked()), this, SLOT(generateAll()));

  loadConfiguration ( gen_driver_container () );
  loadExistConfiguration ( existingProjectFolders() );
  
  fillUi();
  
  connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabChanged(int)));
  onTabChanged(0);
}
示例#6
0
	void generateAll(vector<PNoeud>& l,bool elseOther=true) {
		PNoeud& n= *this;
		Pion pion = n.max?n.computer:!n.computer;
		for(size_t i=0;i<n.plat.pions.size();i++) {
			for(size_t j=0;j<n.plat.pions[i].size();j++) {
				try {
					Case tmpc((int)i,(int)j);
					l.push_back(PNoeud(n.plat,tmpc,pion,n.computer,!n.max));
				} catch (othelloException&) {
				}
			}
		}
		if(l.empty() && elseOther) {
			n.max = !n.max;
			generateAll(l,false);
		}
	}
示例#7
0
Matrix GenSetBase::pllMesh(int P, ColumnVector& xc, ColumnVector& xn, double r) 
  // P : num points we want ( ~ num of processors)
  // xc: the current point; 
  // xn: the "newton" point, tells the dir in which the mesh is grown
  //  r: ||xc-xn||, if known.
  //
  // return matrix M with genset generated at y_k = xc+k(xn-xc)
  // with radius r_k = k^n*r_0, r_0=||xc-xn||/2
  //
  // *** current implementation not optimized for efficiency ***
  //
{

    int k = 0;
    ColumnVector xk; 
    double       rk; 
    Matrix M, A, B, C;

    ColumnVector ns = xn - xc;  // newton step

    int m = Vdim;
    int n = Size;

    // return at least the base point
    M = xn;
    int nump = P-1; 

    //--
    // main loop:
    //--
    if (r <= 0) r = Norm2(ns);
    double r0 = 0.25*r;
    double pert = r0*.05;
    while (nump > 0) {

      // generate points xc + k*newton_step + r^k*d(i), i=1..size()
      ++k;
      xk = xc + k*ns;
      rk = k*r0;
      A = generateAll(xk,rk);

      // perturbation to avoid potential overlaps
      int RAND_HALF = RAND_MAX / 2;
      for (int i=1; i<=n; i++)
	for (int j=1; j<=m; j++) {
	  int sig = (std::rand() > RAND_HALF)? 1 : -1;
	  double amp = std::rand() / RAND_MAX * pert;	
	  A(j,i) = A(j,i) + sig * amp ;
	}

      // after the first iteration want to add xk to M
      if (k>1) {
	B = M | xk;
	M = B;
	--nump;
      }

      // addd to M as many columns as we can afford
      if (nump > n) {
	B = M | A;
      }
      else if (nump>0) { 
	C = A.SubMatrix(1,m,1,nump);
	B = M | C;
      }
      
      M = B;
      nump = nump - n;

    }
    return M;
}
示例#8
0
int main(int argc, char * * argv)
{
    if (argc < 3)
	{
	    fprintf(stderr, "Invalid arguments, please refer to "
		    "the README file, or read the source for "
		    "pa11.c\n");
	    return EXIT_FAILURE;
	}
    char * state = argv[2];
    if(!isValidState(state))
	{
	    fprintf(stderr, "Invalid state: %s\n", state);
	    return EXIT_FAILURE;
	}
    if (strcmp(argv[1], "1") == 0)
	{
	    if (argc < 4)
		{
		    fprintf(stderr, "Invalid arguments for cmd=1\n");
		    return EXIT_FAILURE;
		}
	    const char * movelist = argv[3];
	    if(!isValidMoveList(movelist))
		{
		    fprintf(stderr, "Invalid movelist: %s\n", 
			    movelist);
		    return EXIT_FAILURE;
		}
	    processMoveList(state, movelist);
	}
    if (strcmp(argv[1], "2") == 0)
	{
	    if (argc < 4)
		{		    
		    fprintf(stderr, "Invalid arguments for cmd=2\n");
		    return EXIT_FAILURE;
		}
	    int nummove = (int) strtol(argv[3], NULL, 10);
	    if ((nummove < 0) || (nummove > 9))
		{
		    fprintf(stderr, "Expected n=[0..9], but got %d\n",
			    nummove);
		    return EXIT_FAILURE;
		}
	    MoveTree * tree = generateAll(state, nummove);
	    MoveTree_print(tree);
	    MoveTree_destroy(tree);
	}
    if (strcmp(argv[1], "3") == 0)
	{
	    char * movelist = solve(state);
	    if(movelist == NULL) {
		printf("No solution within %d steps\n", 
		       MAX_SEARCH_DEPTH);
	    } else {
		printf("%s\n", movelist);
	    }
	    free(movelist);
	}
    return EXIT_SUCCESS;
}