int main( const int argc , const char ** argv ) {
    if( flagSpecified(argc,argv,kFlagLogo) )
        displayLogo();
    initializeRandomGenerator();
    initializeSsl();
    // Not the most beautiful piece of initialization code :)
    if( controllerRequested(argc,argv) )
        startController(argc,argv);
    else
    if( serverRequested(argc,argv) )
        startServer(argc,argv);
    else
    if( clientRequested(argc,argv) )
        startClient(argc,argv);
    else
    if( eventStreamRequested(argc,argv) )
        startEventStream(argc,argv);
    else
    if( generateHashRequested(argc,argv) )
        startGenerateHash(argc,argv);
    else
    if( addControllerRequested(argc,argv) )
        startAddController(argc,argv);
    else
        usage();
    cleanupSsl();
    cleanupLogger();

    return EXIT_SUCCESS;
}
int main(int argc, char *argv[]) {
    int algorithm, times_to_execute=1;

    do {
        printf ("Number of queens (1<=nqueens<%d): ", MAXQ);
        scanf ("%d", &nqueens);
    } while ((nqueens < 1) || (nqueens > MAXQ));

    do {
        printf ("Algorithm: (1) Random search  (2) Hill climbing  ");
        printf ("(3) Simulated Annealing  (4) Genetic Algorithm: ");
        scanf ("%d", &algorithm);
    } while ((algorithm < 1) || (algorithm > 4));
    
    if (algorithm != 4) {
        do {
            printf("How many times to execute? (1<n<10000):");
            scanf("%d", &times_to_execute);
        } while ((times_to_execute < 1 || times_to_execute > 10000));
    }
  
    initializeRandomGenerator();
    
    int i=0;
    switch (algorithm) {
        case 1: randomSearch();       break;
        case 2:
            solutions_found = 0;
            for (i=0; i<times_to_execute; i++) {
                initiateQueens(1);
                hillClimbing();
            }
            printf("Algorithm finished. Found a solution in %d out of %d executions.\n", solutions_found, i);
            break;
        case 3:
            solutions_found = 0;
            for(i = 0; i < times_to_execute; i++)
            {
                initiateQueens(1);
                simulatedAnnealing();
            }
            printf("Algorithm finished. Found a solution in %d out of %d executions.\n", solutions_found, i);
            break;
        case 4:
            initiateQueens(1);
            geneticAlgorithm();
    }

    return 0;  
}
Exemplo n.º 3
0
/*
 * main -- エントリポイント
 */
int main(int argc, char **argv)
{
    int i, j;

    /* 乱数の初期化 */
    initializeRandomGenerator();

    /*
     * ファイルアクセスモジュールの初期化
     */
    if (initializeFileModule() != OK) {
	fprintf(stderr, "%s: initialization failed.\n", TEST_NAME);
    }

    /*
     * 前回このプログラムを実行したときのテストファイルが
     * 残っている可能性があるので、まず消去する
     */
    deleteFile(TEST_FILE1);
    deleteFile(TEST_FILE2);

    /* FILE_SIZE分のページの内容を乱数で作成 */
    for (i = 0; i < FILE_SIZE; i++) {
	for (j = 0; j < PAGE_SIZE; j++) {
	    /* 0〜9の範囲の乱数を発生しパターンを作る */
	    int x;
	    x = getRandomInteger(0, 9);

	    /* ページに'0'〜'9'の文字を入れる */
	    pagePattern[i][j] = '0' + x;
	}
    }

    /* テストの実行 */
    fprintf(stderr, "%s: test 1: Start\n", TEST_NAME);
    if (test1() == OK) {
	fprintf(stderr, "%s: test 1: OK\n\n", TEST_NAME);
    } else {
	fprintf(stderr, "%s: test 1: NG\n\n", TEST_NAME);
    }

    fprintf(stderr, "%s: test 2: Start\n", TEST_NAME);
    if (test2() == OK) {
	fprintf(stderr, "%s: test 2: OK\n\n", TEST_NAME);
    } else {
	fprintf(stderr, "%s: test 2: NG\n\n", TEST_NAME);
    }

    fprintf(stderr, "%s: test 3: Start\n", TEST_NAME);
    if (test3() == OK) {
	fprintf(stderr, "%s: test 3: OK\n\n", TEST_NAME);
    } else {
	fprintf(stderr, "%s: test 3: NG\n\n", TEST_NAME);
    }

    fprintf(stderr, "%s: test 4: Start\n", TEST_NAME);
    if (test4() == OK) {
	fprintf(stderr, "%s: test 4: OK\n\n", TEST_NAME);
    } else {
	fprintf(stderr, "%s: test 4: NG\n\n", TEST_NAME);
    }

    /*
     * ファイルアクセスモジュールの終了処理
     */
    if (finalizeFileModule() != OK) {
	fprintf(stderr, "%s: finalization failed.\n", TEST_NAME);
    }

    exit(0);
}
Exemplo n.º 4
0
/*
 * main -- バッファ管理モジュールのテスト
 */
int main(int argc, char **argv)
{
    File *file[2];
    char page1[PAGE_SIZE], page2[PAGE_SIZE];
    int i;
    
    /* 乱数用関数の初期化 */
    initializeRandomGenerator();
    
    /*
     * ファイルアクセスモジュールの初期化
     */
    if (initializeFileModule() != OK) {
        fprintf(stderr, "%s: initialization failed.\n", TEST_NAME);
    }
    
    /*
     * 前回このプログラムを実行したときのテストファイルが
     * 残っている可能性があるので、まず消去する
     */
    deleteFile(TEST_FILE1);
    deleteFile(TEST_FILE2);
    
    /* 空のファイルを2つ作り、オープンする */
    if (createFile(TEST_FILE1) != OK) {
        fprintf(stderr, "Cannot create file.\n");
        exit(1);
    }
    
    if (createFile(TEST_FILE2) != OK) {
        fprintf(stderr, "Cannot create file.\n");
        exit(1);
    }
    
    if ((file[0] = openFile(TEST_FILE1)) == NULL) {
        fprintf(stderr, "Cannot open file.\n");
        exit(1);
    }
    
    if ((file[1] = openFile(TEST_FILE2)) == NULL) {
        fprintf(stderr, "Cannot open file.\n");
        exit(1);
    }
    
    /*
     * ファイルの先頭から順に、(FILE_SIZE)ページ分のダミーデータを書く
     *
     * それぞれのページの先頭3バイトに、以下のように文字を書く
     * file1:
     *   0ページ目: 000
     *   1ページ目: 001
     *   2ページ目: 002
     *   (以下同様)
     * file2:
     *   0ページ目: 100
     *   1ページ目: 101
     *   2ページ目: 102
     *   (以下同様)
     */
    for (i = 0; i < FILE_SIZE; i++) {
        /* ページに書く内容を用意する */
        memset(page1, 0, PAGE_SIZE);
        memset(page2, 0, PAGE_SIZE);
        sprintf(page1, "00%c", '0' + i);
        sprintf(page2, "10%c", '0' + i);
        
        /* ファイルに書き込む */
        if (writePage(file[0], i, page1) != OK) {
            fprintf(stderr, "Cannot write page.\n");
            exit(1);
        }
        
        if (writePage(file[1], i, page2) != OK) {
            fprintf(stderr, "Cannot write page.\n");
            exit(1);
        }
    }
    
    /* いったんファイルをクローズする */
    closeFile(file[0]);
    closeFile(file[1]);
    
    /*
     * ここまでが下準備。ここからバッファリング機能をテストする
     */
    test1();
    test2();
    
    /*
     * ファイルアクセスモジュールの終了処理
     */
    if (finalizeFileModule() != OK) {
        fprintf(stderr, "%s: finalization failed.\n", TEST_NAME);
    }
    
    /* ファイルを削除する */
    deleteFile(TEST_FILE1);
    deleteFile(TEST_FILE2);
}