// Calculate score of a full house (three of one value, two of another). unsigned int ScoreFullHouse(const RollMap& rollMap) { // Iterate over the rollMap, looking for a value with three of a kind and a value with two of a kind. bool foundPair = false; bool foundTrio = false; RollMap::const_iterator rollMapIterator; for (rollMapIterator = rollMap.begin(); rollMapIterator != rollMap.end(); ++rollMapIterator) { if (*rollMapIterator == 3) { foundTrio = true; } else if (*rollMapIterator == 2) { foundPair = true; } } if (foundTrio && foundPair) { return CalculateSum(rollMap); } else { return 0; } }
uint8_t CalculateGenericCheckSum(uint8_t *infoFrameData,uint8_t checkSum,uint8_t length) { checkSum = 0x100 - CalculateSum(infoFrameData,checkSum,length); INFO_DEBUG_PRINT(("checkSum: %02x\n",(uint16_t)checkSum)); return checkSum; }
int RoboFocus::SendCommand(char *rf_cmd) { int nbytes_written=0, nbytes_read=0, check_ret=0, err_code=0; char rf_cmd_cks[32],robofocus_error[MAXRBUF]; unsigned char val= 0 ; val = CalculateSum( rf_cmd ); for(int i=0; i < 8; i++) rf_cmd_cks[i]= rf_cmd[i] ; rf_cmd_cks[8]= (unsigned char) val ; rf_cmd_cks[9]= 0 ; if (isSimulation()) return 0; tcflush(PortFD, TCIOFLUSH); DEBUGF(INDI::Logger::DBG_DEBUG, "CMD (%#02X %#02X %#02X %#02X %#02X %#02X %#02X %#02X %#02X)", rf_cmd_cks[0], rf_cmd_cks[1], rf_cmd_cks[2], rf_cmd_cks[3], rf_cmd_cks[4], rf_cmd_cks[5], rf_cmd_cks[6], rf_cmd_cks[7], rf_cmd_cks[8]); if ( (err_code = tty_write(PortFD, rf_cmd_cks, RF_MAX_CMD, &nbytes_written) != TTY_OK)) { tty_error_msg(err_code, robofocus_error, MAXRBUF); DEBUGF(INDI::Logger::DBG_ERROR, "TTY error detected: %s", robofocus_error); return -1; } return nbytes_written; }
int main(int argc, char *args[]) { char *buffer = (char *)malloc(MAX_LINE_LEN);; char *result = (char *)malloc(MAX_LINE_LEN);; int number; int dwnum; dwnum = GetPrice(); if(dwnum != 0) { return dwnum; } list_t *L = ListInit(); if(L == NULL) { return ERRNO_NULL_POINTER; } while(fgets(buffer, MAX_LINE_LEN, stdin)) { number = 0; memset(result, 0, MAX_LINE_LEN); dwnum = ParseLine(buffer, result, &number); if(dwnum == 0) { item_t* curnode; if((curnode = ListIsNodeInListById(L, result)) != NULL) { curnode->count += number; continue; } item_t * node = ItemMakeitem(result, number); if(node == NULL) { return ERRNO_MAKEITEM_FAIL; } dwnum = ListPushBack(L, (void*) node); if(dwnum != 0) { return ERRNO_LISTPUSHBACK_FAIL; } } } dwnum = CalculateSum(L); if(dwnum != 0) { return ERRNO_CALCULATESUM_FAIL; } ListFree(L); ListFree(my_price); free(buffer); free(result); return 0; }
unsigned char RoboFocus::CheckSum(char *rf_cmd) { char substr[255] ; unsigned char val= 0 ; int i= 0 ; for(i=0; i < 8; i++) substr[i]=rf_cmd[i] ; val = CalculateSum( substr) ; if( val != (unsigned char) rf_cmd[8]) DEBUGF(INDI::Logger::DBG_WARNING, "Checksum: Wrong (%s,%ld), %x != %x", rf_cmd, strlen(rf_cmd), val, (unsigned char) rf_cmd[8]) ; return val ; }
// Calculate score of Choice. unsigned int ScoreChoice(const RollMap& rollMap) { return CalculateSum(rollMap); }