Beispiel #1
0
        /// <inheritdoc/>
        public virtual bool TryInit(IReadOnlyPuzzle puzzle, BitVector uniquePossibleValues)
        {
            int numDimensions = GetNumDimensions(puzzle);

            if (numDimensions != _dimensions?.Length)
            {
                _dimensions = new BitVector[numDimensions];
                _remainingCountOnDimension = new int[numDimensions][];
            }
            int        maxValue       = uniquePossibleValues.ComputeLastSetBit();
            Span <int> requiredCounts = stackalloc int[maxValue + 1];

            requiredCounts.Clear();
            foreach ((int value, int count) in puzzle.CountPerUniqueValue)
            {
                requiredCounts[value] = count;
            }
            for (int d = 0; d < numDimensions; ++d)
            {
                _remainingCountOnDimension ![d] = requiredCounts.ToArray();
Beispiel #2
0
        public void ComputeLastSetBit_IsCorrect(uint data, int lastBit)
        {
            var vector = new BitVector(data);

            Assert.Equal(lastBit, vector.ComputeLastSetBit());
        }