일부 글자로 채워진 배열이 있습니다. 아래 예를 참조하십시오. 먼저 배열을 섞어 놓고 싶습니다. 그런데 가장 유명한 셔플이 Fisher-Yates 셔플이라는 것을 알았습니다.자바 스크립트 배열 셔플은 서로 옆에 두 개를 출력해서는 안됩니다.
이제 출력 할 때, 예. F2은 F 또는 F ' 옆에 있으면 안됩니다. 다른 사람에게도 마찬가지입니다. D은 D2 또는 D '에 가까이 있지 않아야합니다.
출력해야합니다. 예 : R B2 U F L F D2 .... 등등.
하지 : R B2의 B ' L F D2 ...
어떤 도움, 제안? 첫 번째 문자를 charAt()
으로 확인해야한다는 것을 알고 있지만 그 기능의 전문가는 아닙니다.
자바 스크립트
function shuffle(sides) {
var elementsRemaining = sides.length, temp, randomIndex, last;
while (elementsRemaining > 1) {
randomIndex = Math.floor(Math.random() * elementsRemaining--);
if (randomIndex != elementsRemaining) {
temp = sides[elementsRemaining];
sides[elementsRemaining] = sides[randomIndex];
sides[randomIndex] = temp;
}
};
}
return sides;
}
var sides = ["F ", "R ", "U ", "L ", "D ", "F2 ", "R2 ", "U2 ", "L2 ", "D2 ", "F' ", "R' ", "U' ", "L' ", "D' "];
shuffle(sides);
$('#scramble').html(sides);
셔플 된 배열에 연속적인 항목이 없음을 보장 하시겠습니까? –
예, 맞습니다. 그게 내가 원하는거야. – user3613655