/*! * \brief sets AlarmB * * \param alarm : alarmBStruct of a alarm to set * * \param index : the index of the alarm * * \author Matthijs */ void setAlarmB(alarmBStruct alarm, int index) { alarmBArray[index] = alarm; alarmBStruct toSet = checkFirst(); currentAlarm = toSet; X12RtcSetAlarm(1, &toSet.timeSet, 31); }
void BytesTrieTest::checkData(const StringAndValue data[], int32_t dataLength, UStringTrieBuildOption buildOption) { LocalPointer<BytesTrie> trie(buildTrie(data, dataLength, buildOption)); if(trie.isNull()) { return; // buildTrie() reported an error } checkFirst(*trie, data, dataLength); checkNext(*trie, data, dataLength); checkNextWithState(*trie, data, dataLength); checkNextString(*trie, data, dataLength); checkIterator(*trie, data, dataLength); }
/*! * \brief Initialize the interface to an Intersil X12xx hardware clock. * * \deprecated New applications must use NutRegisterRtc(). * * \return 0 on success or -1 in case of an error. * */ int X12Init(void) { int rc; u_long tmp; if ((rc = TwInit(0)) == 0) { rc = X12RtcGetStatus(&tmp); } // loading ands setting the alarm createAlarms(); //load(); alarmBStruct first = checkFirst(); currentAlarm = first; X12RtcSetAlarm(1, &first.timeSet, 31); startAlarmThread(); return (rc); }
//se precisa de começar e tem mais 3's pode n ter nenhuma jogada e passa, daí os 4 passos //jogadasN, vai sempre com o mm sametype, para1, 2 ou 3 cartas int main(){ char input[100]; int flag = 0, i; int flag2[1] = {0}; int flag3 = 0; char output[100]; int n, v; int io_count = 0; int counter = 0; int jog = 3; int jog_temp = 0; int a = 0; MAO mao_temp = 0; MAO usadas_temp[3] = {0}; MCtree temp; char mao[13][2]; DATABASE data = {{0},0,0,0,{0},0}; DATABASE simulacao; MCtree tree = NULL; clock_t start; memset(mao,0,26); srand(time(0)); fgets(input, 100, stdin); while(input[0] != 'A'){ switch(input[0]){ case 'J': if(input[3] == 'A'){ if((flag3 != 0 )|| (carta_existe(data.mao[0],0,0))){ flag3 = 1; start = clock(); if(data.firstplay == 0){ data.firstplay = 1; for(jog_temp = jog_temp -1, counter = 0; counter <= jog_temp; counter++) data.usadas[counter +(3-jog_temp)] = usadas_temp[counter]; if(usadas_temp[0] != 0) data.firstplay = 2; } while(((clock()-start)/CLOCKS_PER_SEC) < 2.0){ simulacao = data; while(flag == 0){ temp = treePolicy(tree, &simulacao, flag2); flag = defaultPolicy(temp, &simulacao, flag2); flag2[0] = 0; a++; } flag = 0; } jog = 1; if(data.firstplay != 2) checkFirst(tree, &data); temp = choosePlay(tree,&data); if(temp != NULL) convertejogstr(temp->estado,output); else{ strcpy(output, "PASSO"); } printf("%s\n", output); if(output[0] != 'P') fgets(input, 100, stdin); else input[0] = 'O'; if(input[0] == 'O'){ if(temp == NULL || temp->estado == 0){ data.passar++; if(data.passar == 3){ data.nc = 0; data.jogada = 0; } } else{ data.passar = 0; data.jogada = temp->estado; data.nc = 0; for(i = 0; i < 52; i++){ n = i / 13; v = i % 13; if(carta_existe(temp->estado,n,v)) data.nc++; } free_nodes(tree,temp); tree = temp; tree->prev = NULL; data.usadas[0] = data.usadas[0] | tree-> estado; data.mao[0] = (data.mao[0]) ^ (tree->estado); } } else if(input[0] == 'N'){ data.passar++; if(data.passar == 3){ data.nc = 0; data.jogada = 0; } } } else{ printf("PASSO\n"); } } else{ mao_temp = 0; io_count = sscanf(input, JOGADA, &mao[0][0],&mao[0][1],&mao[1][0],&mao[1][1],&mao[2][0],&mao[2][1],&mao[3][0],&mao[3][1],&mao[4][0],&mao[4][1],&mao[5][0],&mao[5][1],&mao[6][0],&mao[6][1],&mao[7][0],&mao[7][1],&mao[8][0],&mao[8][1],&mao[9][0],&mao[9][1],&mao[10][0],&mao[10][1],&mao[11][0],&mao[11][1],&mao[12][0],&mao[12][1]); for(i = 0; i < io_count/2; i++){ if(mao[i][0] >= '3' && mao[i][0] <='9') v = mao[i][0] - '3'; else{ switch(mao[i][0]){ case '2': v = 12; break; case 'A': v = 11; break; case 'K': v = 10; break; case 'Q': v = 9; break; case 'J': v = 8; break; case 'T': v = 7; break; } } switch (mao[i][1]){ case 'D': n = 0; break; case 'C': n = 1; break; case 'H': n = 2; break; case 'S': n = 3; break; } mao_temp = add_carta(mao_temp,n,v); } if(data.firstplay != 0){ jog = (jog + 1) % 4; data.usadas[jog] = data.usadas[jog] | mao_temp; } else{ usadas_temp[jog_temp] = mao_temp; jog_temp++; } data.jogada = mao_temp; data.nc = i; if(data.nc == 5) data.nc = 4; data.passar = 0; flag3 = 1; } break; case 'P': if(flag3 != 0){ data.passar++; if(data.firstplay == 0){ if(jog_temp != 0) jog_temp++; } else{ jog = (jog + 1) % 4; } if(data.passar == 3){ data.nc = 0; data.jogada = 0; } } break; case 'M': sscanf(input, MAO_INICIAL, &mao[0][0],&mao[0][1],&mao[1][0],&mao[1][1],&mao[2][0],&mao[2][1],&mao[3][0],&mao[3][1],&mao[4][0],&mao[4][1],&mao[5][0],&mao[5][1],&mao[6][0],&mao[6][1],&mao[7][0],&mao[7][1],&mao[8][0],&mao[8][1],&mao[9][0],&mao[9][1],&mao[10][0],&mao[10][1],&mao[11][0],&mao[11][1],&mao[12][0],&mao[12][1]); for(i = 0; i < 13; i++){ if(mao[i][0] >= '3' && mao[i][0] <='9') v = mao[i][0] - '3'; else{ switch(mao[i][0]){ case '2': v = 12; break; case 'A': v = 11; break; case 'K': v = 10; break; case 'Q': v = 9; break; case 'J': v = 8; break; case 'T': v = 7; break; } } switch (mao[i][1]){ case 'D': n = 0; break; case 'C': n = 1; break; case 'H': n = 2; break; case 'S': n = 3; break; } data.mao[0] = add_carta(data.mao[0],n,v); } tree = createTree(data.mao[0]); temp = tree; flag3 = 0; break; } fgets(input, 100, stdin); } return 0; }
void TCalcDisplay::calcKey(unsigned char key) { char stub[2] = " "; double r; key = (unsigned char)toupper(key); if( status == csError && key != 'C') key = ' '; switch(key) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': checkFirst(); if (strlen(number) < 15) { // 15 is max visible display length if (strcmp(number, "0") == 0) number[0] = '\0'; stub[0] = key; strcat(number, stub); } break; case '.': checkFirst(); if(strchr(number, '.') == NULL) { stub[0] = '.'; strcat(number, stub); } break; case 8: case 27: int len; checkFirst(); if( (len = strlen(number)) == 1 ) strcpy(number, "0"); else number[len-1] = '\0'; break; case '_': // underscore (keyboard version of +/-) case 241: // +/- extended character. if (sign==' ') sign='-'; else sign=' '; break; case '+': case '-': case '*': case '/': case '=': case '%': case 13: if(status == csValid) { status = csFirst; r = getDisplay() * ((sign == '-') ? -1.0 : 1.0); if( key == '%' ) { if(operate == '+' || operate == '-') r = (operand * r) / 100; else r /= 100; } switch( operate ) { case '+': setDisplay(operand + r); break; case '-': setDisplay(operand - r); break; case '*': setDisplay(operand * r); break; case '/': if(r == 0) error(); else setDisplay(operand / r); break; } } operate = key; operand = getDisplay() * ((sign == '-') ? -1.0 : 1.0); break; case 'C': clear(); break; } drawView(); }
void TCalcDisplay::calcKey(unsigned char key) { char stub[2] = " "; s64t rv; key = toupper(key); if (status == csError && key != 27) key = ' '; switch (key) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': checkFirst(); if (strlen(number) < (hexmode?16:19)) { // 19 is max s64t length if (strcmp(number, "0") == NULL) number[0] = '\0'; stub[0] = key; strcat(number, stub); } break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': checkFirst(); if (hexmode && strlen(number) < 16) { // 21 is max visible display length if (strcmp(number, "0") == NULL) number[0] = '\0'; stub[0] = key; strcat(number, stub); } break; case 8: int len; checkFirst(); if ((len = strlen(number)) == 1) strcpy(number, "0"); else number[len - 1] = '\0'; break; case '_': // underscore (keyboard version of +/-) case 241: // +/- extended character. if (!hexmode) sign = (sign == ' ') ? '-' : ' '; break; case 'M': memory = getDisplay(); if (sign == '-') memory = -memory; break; case 'R': checkFirst(); setDisplay(memory); break; case 'X': rv = getDisplay(); if (sign == '-') rv = -rv; hexmode = !hexmode; setDisplay(rv); break; case '!': rv = getDisplay(); if (sign == '-') rv = -rv; setDisplay(~rv); break; case '+': case '-': case '*': case '/': case '^': case '<': case '|': case '>': case '&': case 'P': case '%': case '=': case 13: if (status == csValid) { status = csFirst; rv = getDisplay(); if (sign == '-') rv = -rv; switch (operate) { case '+': setDisplay(operand + rv); break; case '-': setDisplay(operand - rv); break; case '*': setDisplay(operand * rv); break; case '^': setDisplay(operand ^ rv); break; case '|': setDisplay(operand | rv); break; case '&': setDisplay(operand & rv); break; case '<': setDisplay(operand << rv); break; case '>': setDisplay(operand >> rv); break; case 'P': if (rv==0) operand = 1; else { s64t pw = operand; while (rv-->1) operand *= pw; } setDisplay(operand); break; case '/': case '%': if (rv == 0) error(); else setDisplay(operate=='%' ? operand % rv : operand / rv); break; } } operate = key; operand = getDisplay(); if (sign == '-') operand = -operand; break; case 27: clear(); break; }
/*! * \brief thread that checks the alarms every 10 seconds * * \author Matthijs */ THREAD(AlarmThread, args) { //time struct datetime can't be found when placed in main.h tm datetime; u_long flags; X12RtcGetClock(&datetime); for(;;) { int succes = X12RtcGetStatus(&flags); int i; for(i = 0; i <=10; i++) { NutSleep(1000); } //power fail if(flags == 0) { //printf("\n ========== Power Fail ========== \n"); X12RtcClearStatus(0); } //alarm A if(flags == 32) { printf("\n ========== Alarm 0 =========== \n"); //get current alarm time to compare to the weekendtime, if weekendtime is //equal to currentAlarm and the day of the week is friday. The alarm should //not go off. tm currentAlarm; int iets = 0; X12RtcGetAlarm(0, ¤tAlarm, &iets); int alarmASeconds = 0; alarmASeconds = (currentAlarm.tm_hour * 360) + (currentAlarm.tm_min * 6) + (currentAlarm.tm_sec / 10); int weekendtimeSeconds = 0; weekendtimeSeconds = (weekendtime.hour * 360) + (weekendtime.minute * 6) + (weekendtime.second / 10); printf("\nalarmASeconds: %d, weekendtimeSeconds: %d", alarmASeconds, weekendtimeSeconds); if((alarmASeconds != weekendtimeSeconds) && checkWeekend() == 1) { printf("\nHet is VRIJDAG!!! alarm is niet gelijk aan de weekendtijd en moet dus nog geset worden\n SOUND IS PLAYING"); //SoundA(); startSnoozeThreadA(); } else if(((alarmASeconds != weekendtimeSeconds) && (checkWeekend() == 2)) || ((alarmASeconds != weekendtimeSeconds) && (checkWeekend() == 3))) { printf("\nalarm is niet gelijk aan de weekendtijd en het is weekend, dus set"); } else if(((alarmASeconds == weekendtimeSeconds) && (checkWeekend() == 2)) || ((alarmASeconds == weekendtimeSeconds) && (checkWeekend() == 3))) { printf("\nalarm is gelijk aan de weekendtijd en het is weekend,\n SOUND IS PLAYING"); //SoundA(); startSnoozeThreadA(); //if the alarm goes off and it is sunday set the alarm back to its //original settings if(checkWeekend() == 3) { printf("het is blijkbaar zondag dus terug naar doordeweekse tijd"); setAlarmA(alarmA.tm_hour, alarmA.tm_min, alarmA.tm_sec); } } else if(checkWeekend() == 0) { printf("\nhet is doordeweeks,\nSOUND IS PLAYING"); startSnoozeThreadA(); //SoundA(); } //else //{ // printf("weekendAlarm gaat af!!!"); //} //when checkWeekend returns 1(Friday) or 2(Saturday) it means that it //will be weekend the next day. Therefore we set the alarm to the weekend //settings. Problem is that most likely the alarm in the weekends will go //off later then it would during the week. This problem is solved underneath //the if(checkWeekend() == 3){}. int currentTime = (datetime.tm_hour * 360) + (datetime.tm_min * 6) + (datetime.tm_sec / 10); if(checkWeekend() > 0 && checkWeekend() < 3) { printf("alarmA set to weekend time"); setAlarmA(weekendtime.hour,weekendtime.minute,weekendtime.second); } else if(checkWeekend() == 3 && (currentTime <= weekendtimeSeconds)) { setAlarmA(weekendtime.hour,weekendtime.minute,weekendtime.second); } X12RtcClearStatus(32); } //alarm B if(flags == 64) { printf("\n ============ Alarm 1================== \n"); startSnoozeThreadB(); ClearAlarm('b'); X12RtcClearStatus(64); alarmBArray[currentAlarm.index].set = 0; alarmBStruct newSet = checkFirst(); X12RtcSetAlarm(1, &newSet.timeSet, 31); currentAlarm = newSet; } //both alarms if(flags == 96) { //kijkt of alarm a of b nog niet heeft geluid, en speelt die dan printf("\n ========== Alarm 0 en 1 ========= \n"); //kijkt welke van de 2 nog niet is afgegaan en speelt die dan nog af SoundA(); X12RtcClearStatus(32); SoundB(); X12RtcClearStatus(64); } if(succes == 0) { //succes } else { //error } } }
int main(int argc, char **argv) { if (argc != 3 && argc != 4) { std::cout << "Usage: Maxit_tester <program1> <program2> [<seed>]\n"; return 1; } const char *program1 = argv[1]; const char *program2 = argv[2]; // init field if (argc >= 4) srand(atoi(argv[3])); else srand((unsigned int)time(NULL)); for (int i = 0 ; i < size ; ++i) { for (int j = 0 ; j < size ; ++j) { field[i][j] = rand() % size + 1; } } col = 1; row = 1; // save field and score before the first move saveField(1); bool first = true; ExecutionResult result = ER_OK; for (int move = 0 ; move < size * size ; ++move) { std::ostringstream outs; for (int i = 0 ; i < size ; ++i) { for (int j = 0 ; j < size ; ++j) { outs << field[i][j] << " "; } outs << "\n"; } outs << !first + 1 << "\n" << (first ? row : col) << "\n"; std::string output; printInput(first, outs.str()); result = runProcess(first ? program1 : program2, outs.str(), output, 1000, 64000); if (result == ER_OK) { InStream ins(output); int rowcol; try { ins >> ValueInBounds<int>(rowcol, 1, size); } catch (ReadCheckerException &exception) { result = ER_IM; std::ostringstream outs; outs << output << std::endl << exception.getReadResultText() << ": " << exception.what() << std::endl; printLog(first, result, outs.str()); break; } if ( (first && field[row-1][rowcol-1]) || (!first && field[rowcol-1][col-1]) ) { if (first) col = rowcol; else row = rowcol; printLog(first, result, output); scores[!first] += field[row-1][col-1]; field[row-1][col-1] = -field[row-1][col-1]; // save field and score after the correct move saveField(!first + 1); field[row-1][col-1] = 0; // get next player bool canFirst = checkFirst(row); bool canSecond = checkSecond(col); if ((first && canSecond) || (!first && canFirst)) first = !first; else if (canFirst) first = true; else if (canSecond) first = false; else break; } else { result = ER_IM; printLog(first, result, output); break; } } else {