Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 20.12.2015, 16:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,
Ну по идее - 90% судоку мон получить по первому столбцу, сдвигая элементы первого столбца для генерации следующего на один элемент по кругу
Т.е. первый - генерим рандомно с наличием всех цифр по высоте, второй получаем сдвигая элементы первого столбца по кругу)мон не на один элемент, а на два(произвольное число), но идентично на такое же число для всех последующих столбцов
1 4 3 2
2 1 4 3
3 2 1 4
4 3 2 1
===========
И да, проще наверно сдвигать по строкам(метода идентична)
Т.е рандом первой строки и рандом цифры циклического сдвига для всех строк

Последний раз редактировалось Deff, 20.12.2015 в 16:43.
Ответить с цитированием
  #22 (permalink)  
Старый 20.12.2015, 17:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Deff,
не уверен что твой алгоритм правильный, где гарантия что квадрат три на три будет заполнен уникально...
Ответить с цитированием
  #23 (permalink)  
Старый 20.12.2015, 18:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,
Я уже делал так, сам подумай по логике! (Там еще потом мон еще строки, или столбцы свапировать (обменивать с друг с другом) случайным образом, после заполнения таблички такой методой(типо раширения вариаций)
Свиг соседних не может быть кратен числу элементов в строке или столбце( а так произвольный, наверно меньше строка(или столбец).length, не помню уже, и постоянен для всех строк.

Последний раз редактировалось Deff, 20.12.2015 в 18:31.
Ответить с цитированием
  #24 (permalink)  
Старый 20.12.2015, 18:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Deff,
нет кода, нет результата, нет дум
Ответить с цитированием
  #25 (permalink)  
Старый 20.12.2015, 18:33
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от рони
где гарантия что квадрат три на три будет заполнен уникально...
Гарантия уже в том, что ты генеришь случайно первую строки из неповторяющихся цифр
Ответить с цитированием
  #26 (permalink)  
Старый 20.12.2015, 18:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,
Я сбацаю, делал на фортране ёщё(Просто табличку доделываю для рулетки)
Ответить с цитированием
  #27 (permalink)  
Старый 20.12.2015, 18:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Deff,
подожду код.
Сообщение от Deff
Гарантия уже в том, что ты генеришь случайно первую строки из неповторяющихся цифр
не могу осилить логику этого аргумента
Ответить с цитированием
  #28 (permalink)  
Старый 21.12.2015, 05:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Cм. Спойлер:
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="noindex">
  <title> Sudoku </title>
<script src='http://code.jquery.com/jquery-1.11.0.js'></script>
<style>
#out {
 table-layout:fixed;
}
#out td{
 width:34px;
 height:34px;
 text-align:center;
 vaertical-align: middle;
}
#out,
#out tr,
#out td{
 padding: 0px;
 margin: 0px;
 border:none 0;
 border-collapse:collapse;
}
#out td{
 border: rgba(0,0,0,.1) solid 1px;
}
</style>
</head>
<body>
<div id=wrap><table id=out><tbody></tbody></table></div>
<p></p>
<p></p>
<input type="number" min="2" max="20"  value="4" id="in00"><input type="button" value="go" onclick="randomSudoku(+(in00.value))">

<script>
  function indexRandom(lng){
     var a = {},i,out=[],n=0;
     for(i=0;i<lng;i++)a[i]=i;
     while (n!=lng){
       i = Math.floor(lng*Math.random());
       if(typeof(a[i])!='undefined'){
         out.push(a[i]);
         delete a[i];
         n++;
       }
     }
    return out;
  } 
 
randomSudoku = function (lng) {
    var ind = indexRandom(lng); //рандом первой строки;
    var ranTR = indexRandom(lng); //рандом перекида порядка строк в таблице;
    var ranCols = indexRandom(lng); //рандом перекида порядка стобцов в таблице;
    var ar0 = [],arr = [],i,j;
    ar0[0]=ind;             //Рандом для первой строки

    for(i=1;i<lng;i++){    //Формируем табличку
      ar0[i]=ar0[i-1].slice(0);
      ar0[i].unshift(ar0[i].pop());
    }
    for(i=0;i<lng;i++){    //рандом стобцов;
      arr[i]=[];
      for(j=0;j<lng;j++)arr[i][j]=ar0[i][ranCols[j]];
    }

    var out=[];$('#out tr').remove();
    for(i=0;i<lng;i++){
      out[i]=arr[ranTR[i]];//рандом строк;
      var str ='<tr>';
      for(j=0;j<lng;j++)str+='<td>'+out[i][j]+'</td>';
      str+='</tr>';$('#out tbody').append(str)
    }

  }


</script>

</body>
</html>

==========================
Гы, хотя это может еще не судоку - посмотрел Вики(я то неповторяемость по строкам и столбцам смотрел, а там ток с 9Х9 и чоб в 3Х3 не повторялось); Можа завтра докую...
А может и Судоку... (Засыпаю ... нужон критик...)

Последний раз редактировалось Deff, 22.12.2015 в 17:54.
Ответить с цитированием
  #29 (permalink)  
Старый 21.12.2015, 11:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Deff,
судоку варианты заполнения по строкам - критично 6 строка - если нет вариантов - 5 строка неправильный вариант
по квадратам - не пробовал пока
по цифрам- сначала 9 единичек и т.д. - неправильные варианты могут возникать уже на третей цифре ...
самый пробивной вариант строить дерево
Ответить с цитированием
  #30 (permalink)  
Старый 21.12.2015, 12:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,
Да, я изучил Википедь, вроде есть одна идейка... Но чот я седни недоспал... мож к вечеру...
Ксать иногда выходят если десятка два перебрать ... но пока не интересно перебором... нун алгоритм попробовать...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать элементы формы недоступными Compas Общие вопросы Javascript 4 06.10.2012 21:59
Пустые элементы массива lammeR Общие вопросы Javascript 5 25.05.2010 02:59
Как удалить повторные элементы из массива? YISHIMITSY Общие вопросы Javascript 1 04.05.2010 00:04
Выбрать все элементы кроме $(this) shustrikk jQuery 2 13.03.2010 14:17
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37