जब मैं यादृच्छिक संख्याओं के साथ मैट्रिक्स बनाने का प्रयास करता हूं, तो मैट्रिक्स पंक्तियां सभी समान दिखाई देती हैं। मैं यह कैसे तय करुं? समस्या के लिए कोड है:

var sudokuRowMatrix = [];
var numbers = [];
var randomizedArray = [];
var sudokuColumnArray = [];
for(i=0;i<=8;i++){
    numbers[i]=i+1;
    sudokuRowMatrix[i] = [];
    sudokuColumnArray[i] = [];
}

function RandomizeArray(array){
    for(arrayIndex=0;arrayIndex<=8;arrayIndex++){
        randomArrayIndex = Math.floor(Math.random()*9);
        randomArrayIndex2 = Math.floor(Math.random()*9);
        placeHolder = array[randomArrayIndex];
        array[randomArrayIndex]=array[randomArrayIndex2];
        array[randomArrayIndex2] = placeHolder;
    }
    return array;
}

for(rowNumber=0;rowNumber<=8;rowNumber++){
    sudokuRowMatrix[rowNumber] = RandomizeArray(numbers);
}

All the rows of the matrix are the same

1
WaterL00 17 अगस्त 2021, 16:15

1 उत्तर

सबसे बढ़िया उत्तर

जब आप RandomizeArray(numbers) को कॉल करते हैं, तो आप संख्या सरणी को संदर्भ के रूप में पास करते हैं। इसका मतलब है, कि आप हमेशा एक ही सरणी को फेरबदल करते हैं और इसे अपने सुडोकू मैट्रिक्स में एक पंक्ति के रूप में सेट करते हैं और इसलिए अपनी सभी पंक्तियों को फेरबदल करते हैं क्योंकि वे सभी एक ही संदर्भ रखते हैं।

इसे ठीक करने का एक आसान तरीका है, अपनी विधि को पास करने से पहले अपने सरणी को नष्ट करना: sudokuRowMatrix[rowNumber] = RandomzieArray([...numbers]);

आप मेरा स्रोत यहां पा सकते हैं।

2
Manox 17 अगस्त 2021, 16:31
क्या संख्या सरणी को मूल्य से पास करने का कोई तरीका है?
 – 
WaterL00
17 अगस्त 2021, 16:53
1
नहीं, लेकिन इसके समाधान हैं: stackoverflow.com/questions/7574054/…
 – 
Manox
18 अगस्त 2021, 11:53