Exemplo n.º 1
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;
}
Exemplo n.º 2
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;
}