Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) из JS в PHP / 5 сообщений из 5, страница 1 из 1
01.10.2014, 10:00
    #38762893
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) из JS в PHP
добрый день

вот этот код

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Array.prototype.shuffle = function() {var tmp, i, j;	for (i = this.length-1; i > 0; i--) {j = Math.floor(Math.random() * i);tmp = this[i];this[i] = this[j];this[j] = tmp;}};

function randInt(m, n) {return Math.floor(Math.random() * (n-m+1)) + m;}
var sudoku = new Array(9);

function generateSudoku() {
	var i, j;
	for (i=0; i<9; i++) {
		sudoku[i] = new Array(9);
		for (j=0; j<9; j++) {sudoku[i][j] = j+1;}
	} 
	sudoku[0].shuffle();
	for (i=0; i<3; i++) {		
		sudoku[i*3] = sudoku[0].slice(-i).concat(sudoku[0].slice(0,-i));
		sudoku[i*3+1] = sudoku[i*3].slice(6).concat(sudoku[i*3].slice(0,6));
		sudoku[i*3+2] = sudoku[i*3].slice(3).concat(sudoku[i*3].slice(0,3));
	}
	var tmp;
	for (i=0; i<3; i++) {
		r1 = randInt(i*3, i*3+2);
		r2 = randInt(i*3, i*3+2);
		r3 = randInt(i*3, i*3+2);
		r4 = randInt(i*3, i*3+2);
		tmp = sudoku[r1];
		sudoku[r1] = sudoku[r2];
		sudoku[r2] = tmp;var tmp2;
		for (j=0; j<9; j++) {tmp2 = sudoku[j][r3];sudoku[j][r3] = sudoku[j][r4];sudoku[j][r4] = tmp2;}					
	}
}



я перевел в PHP

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
$s = array();

	for ($i=0; $i<9; $i++) 
	{
		for ($j=0; $j<9; $j++) 
		{
			$s[$i][$j] = $j+1;
		}
	}
	shuffle($s[0]); // sort 1 row
	for ($i=0; $i<3; $i++) 
	{
		//0, not doing
		//1 - last + rest 0 > 3
		//,2   2 last + rest > 6                           
		$s[$i*3]   = array_merge( array_slice( $s[0], -$i), array_slice( $s[0], 0, -$i));//  i 0,3,6
		//print_r($s[$i*3]);
		$s[$i*3+1] = array_merge( array_slice( $s[$i*3], 6), array_slice( $s[$i*3], 0,6));// i 1,4,7
		//print_r($s[$i*3+1]);die;
		$s[$i*3+2] = array_merge( array_slice( $s[$i*3], 3), array_slice( $s[$i*3], 0,3));// i 2,5,8
	}

	for ($i=0; $i<3; $i++) 
	{
		$r1 = rand($i*3, $i*3+2);
		$r2 = rand($i*3, $i*3+2);
		$r3 = rand($i*3, $i*3+2);
		$r4 = rand($i*3, $i*3+2);
		$tmp = $s[$r1];
		$s[$r1] = $s[$r2];
		$s[r2] = $tmp;
		for ($j=0; $j<9; $j++) 
		{
			$tmp2 = $s[$j][$r3];
			$s[$j][$r3] = $s[$j][$r4];
			$s[$j][$r4] = $tmp2;
		}
	}



но он работает не совсем так как JS код.

помогите найти "неточность" в перевроде *?
...
Рейтинг: 0 / 0
01.10.2014, 17:15
    #38763678
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) из JS в PHP
YuriyBно он работает не совсем так как JS код.
что Вы имеете в виду
...
Рейтинг: 0 / 0
01.10.2014, 17:32
    #38763723
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) из JS в PHP
SharuPoNemnogu,


SharuPoNemnoguYuriyBно он работает не совсем так как JS код.
что Вы имеете в виду

JS генерирует правильны судоку т е
заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом малом квадрате 3×3 каждая цифра встречалась бы только один раз.
а PHP нет . в PHP версии встречаются иногда одинаковые цифры в столбцах или строках
...
Рейтинг: 0 / 0
01.10.2014, 17:34
    #38763725
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) из JS в PHP
SharuPoNemnogu,
SharuPoNemnoguчто Вы имеете в виду

выходные данные (т е массив) должен быть одинаков
...
Рейтинг: 0 / 0
01.10.2014, 20:33
    #38763964
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) из JS в PHP
YuriyB,

скорее всего отличие в shuffle, randint тоже самописная. И если там сплоной рандом как выходные данные могут быть одинаковыми.

пробовали построчно выводить и там и там что получается? Отловите в какой строке не так отрабатывает.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) из JS в PHP / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]