コード例 #1
0
ファイル: Puzzle.cpp プロジェクト: ikhramts/SudokuMaker
bool Puzzle::IsValid() const {
    USHORT foundNumbers;
    
    // Check whether any rows have duplicates.
    for (int row = 0; row < kNumNumbers; row++) {
        foundNumbers = 0;
        auto rowOffset = row * kNumNumbers;

        for (int column = 0; column < kNumNumbers; column++) {
            if(CheckForDuplicate(foundNumbers, Cells[rowOffset + column])) {
                return false;
            }
        }
    }

    // Check for duplicates in any columns.
    for (int column = 0; column < kNumNumbers; column++) {
        foundNumbers = 0;

        for (int row = 0; row < kNumNumbers; row++) {
            int position = row * kNumNumbers + column;
            if(CheckForDuplicate(foundNumbers, Cells[position])) {
                return false;
            }
        }
    }

    // Check for duplicates in any 3x3 segments.
    // Outer two loops: iterate over segments.
    for (int outerRow = 0; outerRow < kSegmentWidth; outerRow++) {
        for (int outerColumn = 0; outerColumn < kSegmentWidth; outerColumn++) {
            foundNumbers = 0;

            // Inner loops: loop through cells of each segment.
            for (int innerRow = 0; innerRow < kSegmentWidth; innerRow++) {
                int rowOffset = (outerRow * kSegmentWidth + innerRow) * kNumNumbers;

                for (int innerColumn = 0; innerColumn < kSegmentWidth; innerColumn++) {
                    int position = rowOffset + outerColumn * kSegmentWidth + innerColumn;

                    if (CheckForDuplicate(foundNumbers, Cells[position])) {
                        return false;
                    }
                }
            }
        }
    }

    return true;
}
コード例 #2
0
ファイル: Main.cpp プロジェクト: kxepal/miranda-ng
int LoadSession(WPARAM, LPARAM lparam)
{
	int dup = 0;
	int hidden[255] = { '0' };
	MCONTACT hContact;
	MCONTACT session_list_t[255] = { 0 };
	int mode = 0;
	if ((int)lparam >= g_ses_limit && lparam != 256) {
		mode = 1;
		lparam -= g_ses_limit;
	}
	if (session_list_recovered[0] && lparam == 256 && mode == 0)
		memcpy(session_list_t, session_list_recovered, sizeof(session_list_t));
	else
		for (hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) {
			if (LoadContactsFromMask(hContact, mode, lparam)) {
				int i = GetInSessionOrder(hContact, mode, lparam);
				session_list_t[i] = hContact;
			}
		}
	int i = 0, j = 0;
	//TODO: change to "switch"
	while (session_list_t[i] != 0) {
		if (CheckForDuplicate(session_list, session_list_t[i]) == -1)
			CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)session_list_t[i], 0);
		else if (g_bWarnOnHidden) {
			if (!CheckContactVisibility(session_list_t[i])) {
				hidden[j] = i + 1;
				j++;
			}
			dup++;
		}
		i++;
	}

	if (i == 0) {
		if (g_bOtherWarnings)
			MessageBox(NULL, TranslateT("No contacts to open"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
		return 1;
	}

	if (dup == i) {
		if (!hidden[i]) {
			if (g_bOtherWarnings)
				MessageBox(NULL, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
			return 1;
		}
		if (!g_bWarnOnHidden && g_bOtherWarnings) {
			MessageBox(NULL, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
			return 1;
		}
		if (g_bWarnOnHidden) {
			if (IDYES == MessageBox(NULL, TranslateT("This Session already opened (but probably hidden).\nDo you want to show hidden contacts?"), TranslateT("Sessions Manager"), MB_YESNO | MB_ICONQUESTION))
				for (j = 0; hidden[j] != 0; j++)
					CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)session_list_t[hidden[j] - 1], 0);
		}
	}

	return 0;
}
コード例 #3
0
ファイル: Utils.cpp プロジェクト: 0xmono/miranda-ng
int AddToCurSession(MCONTACT wparam, LPARAM lparam)
{
	if (CheckForDuplicate(session_list, wparam) == -1) {
		for (int i = 0;; i++) {
			if (session_list[i] == 0) {
				session_list[i] = wparam;
				break;
			}
		}
	}
	return 0;
}
コード例 #4
0
ファイル: Main.cpp プロジェクト: MrtsComputers/miranda-ng
int SaveSessionHandles(WPARAM wparam,LPARAM lparam)
{
	if (session_list[0] == 0)
		return 1;

	int k=0;
	for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) {
		if ((k=CheckForDuplicate(session_list,hContact)) != -1 && !(g_bExclHidden && !CheckContactVisibility(hContact))) {
			AddSessionMark(hContact,lparam,'1');
			AddInSessionOrder(hContact,lparam,k,1);
		}
		else {
			AddSessionMark(hContact,lparam,'0');
			AddInSessionOrder(hContact,lparam,0,0);
		}
	}
	if (lparam == 1) {
		g_ses_count++;
		db_set_b(0, MODNAME, "UserSessionsCount", (BYTE)g_ses_count);
	}
	return 0;
}