Показать сообщение отдельно
  #9 (permalink)  
Старый 20.12.2017, 11:57
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от shoopik
Чтобы в каждой строке/столбце не было повторений, и внутри боксов 3на3.
Оно?

var arr=[ 
	[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
	[ 2, 2, 4, 5, 6, 7, 8, 9, 1 ],
	[ 3, 4, 5, 6, 7, 8, 9, 1, 2 ],
	[ 4, 5, 6, 7, 8, 9, 1, 2, 3 ],
	[ 5, 6, 7, 8, 9, 1, 2, 3, 4 ],
	[ 6, 7, 8, 9, 1, 2, 3, 4, 5 ],
	[ 7, 8, 9, 1, 2, 3, 4, 5, 6 ],
	[ 8, 9, 1, 2, 3, 4, 5, 6, 7 ],
	[ 9, 1, 2, 3, 4, 5, 6, 7, 8 ] 
];
for (var i=0; i<arr.length; i++) {
	var y=Math.floor(i/3)*3;
	var x=(i%3)*3;
	var ok=box(y,x);
	if (!ok) {
		alert('Ошибка!');
		break;
	};
};
if (ok) {
	alert('Все отлично.');
};
function box(Y,X) {
	for (var i=0; i<3; i++) {
		var o={};
		for (var j=0; j<3; j++) {
			var val=arr[Y+i][X+j];
			if (o[val]) {
				alert(Y+' - '+X);
				return false;
			} else {
				o[val]=true;
			};
		};
	};
	for (var i=0; i<3; i++) {
		var o={};
		for (var j=0; j<3; j++) {
			var val=arr[Y+j][X+i];
			if (o[val]) {
				alert(Y+' - '+X);
				return false;
			} else {
				o[val]=true;
			};
		};
	};
	return true;
};
Ответить с цитированием