Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2013, 03:27
Новичок на форуме
Отправить личное сообщение для Koshelenok Посмотреть профиль Найти все сообщения от Koshelenok
 
Регистрация: 29.08.2013
Сообщений: 3

Классическая задача для моделирования эвристических алгоритмов. (I need help)
Здравствуйте господа. После недолгого изучения JavaScript решил попробовать написать старую детскую головоломку, в которой на поле размером 4x4 нужно расположить числа от 1 до 15. Полученный скрипт доступен по ссылке. www.dropbox.com/s/osza66pmqu30tga/puzzle.html

Главная сложность оказалась в том, что не все из генерируемых комбинаций можно решить. И хотя на высокоуважаемой википедии представлена формула, по которой следует определить "решаемость комбинации" долгие и томные взгляды на нее не смогли дать ощутимый логический результат (только попытка его изобразить в 155 строчке), поэтому смиренно прошу помощи у вас старожилы данного ресурса, чтобы как могли объяснили что же мне нужно добавить в исходный код. Да и просто буду рад конструктивной критике о качестве написанного (лишь бы не увидеть себя на govnokod.ru).

Статья на вики: http://ru.wikipedia.org/wiki/%D0%9F%...88%D0%BA%D0%B8
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2013, 08:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от Koshelenok
решил попробовать написать старую детскую головоломку
...
долгие и томные взгляды на нее не смогли дать ощутимый логический результат
Может стоит взять посильную задачку для продолжения изучения JS?

А то получается такая ситуация:
- решил подкачаться
- сразу поставил на штангу 150кг
- чета поднять не смог
- помоготе начать поднимать ту штангу

Т.ч. совет - начни с гантелей!
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2013, 11:54
Новичок на форуме
Отправить личное сообщение для Koshelenok Посмотреть профиль Найти все сообщения от Koshelenok
 
Регистрация: 29.08.2013
Сообщений: 3

Сообщение от ksa Посмотреть сообщение
Может стоит взять посильную задачку для продолжения изучения JS?

Т.ч. совет - начни с гантелей!

Позвольте мне принести свои глубочайшие извинения. Мне кажется, я не правильно выразился, когда написал что буду рад "конструктивной критике". Ведь вы явно решили, что мне требуются псевдоумные советы как строить процесс обучения. Как же мне повезло, что сразу же после регистрации мне попался такой юзер как вы который, даже не смотря в написанный код, сразу же определил, что для меня написать "Пятнашки" это не посильная задача (аж целых 150 кг) и мне необходимо "начать с гантелей".

И, тем не менее, я надеюсь на адекватные советы...
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2013, 13:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от Koshelenok
Ведь вы явно решили
Ты даже близко не угадал что я "решил"...
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2013, 13:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Koshelenok,
можно просто перемешивать заранее правильную комбинацию
Игра "Пятнашки" пост #19
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2013, 16:00
Аватар для rekzi
Аспирант
Отправить личное сообщение для rekzi Посмотреть профиль Найти все сообщения от rekzi
 
Регистрация: 28.08.2013
Сообщений: 78

Там простая формула. Перемешивать ничего не надо. Просто чайку сладкого выпейте и еще раз посмотрите. По коду сказал бы: а) открывающая скобка должна быть на той строке, к сущности которой относится; закрывающая наоборот и вровень с отступом; б) одна операция - одна строка; где надо строим ступеньки; в) бессмысленные комментарии типа этого: "обычный рандом который выдает числа из указанного промежутка", там по названию и параметрам все понятно, а вот включая ли концы или нет - непонятно; г) return всегда должен быть в конце функции, там его ищут обычно; д) пробелы не забывать; е) сверху переменные, далее функции, далее обычная последовательность выполнения; ж) оборачивайте все в анонимную функцию, глобальную область засорять не рекомендуют; з) null мне не нравиться, используйте undefined - более понятнее)) и) придерживайтесь одного стиля оформления кода, желательно самого распространенного для языка на котором пишите.
Я практикующий junior, вот такие моменты выделил.
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2013, 03:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

генератор правильных комбинаций для пятнашек

по формуле из википедии 1 пост
генератор правильных комбинаций для пятнашек
function gen() {
         function f(a) {
             for (var b = 4, c = 0; c < a.length - 1; c++) {
                 !a[c] && (b -= 4 - c / 4 | 0);
                 for (var d = c + 1; d < a.length; d++) a[c] && a[d] && a[d] < a[c] && b++
             }
             return !(b % 2)
         }
         for (var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14, ""]; !f(a);)
             for (var b = a.length - 1; 0 < b; b--) {
                 var e = Math.floor(Math.random() * (b + 1)),
                     g = a[e];
                 a[e] = a[b];
                 a[b] = g
             }
         return a
     };

 alert(gen());

функцию f можно использовать для проверки правильности автономно - на входе массив 15 чисел и пусто на выходе true/false

Последний раз редактировалось рони, 30.08.2013 в 03:05.
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2013, 08:32
Новичок на форуме
Отправить личное сообщение для Koshelenok Посмотреть профиль Найти все сообщения от Koshelenok
 
Регистрация: 29.08.2013
Сообщений: 3

Большое спасибо за помощь. Воспользуюсь советами и недочетами
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
HTA-приложение для радио Pianorama Magneto Ваши сайты и скрипты 42 22.01.2012 08:34
Интересная задача для javascript bobri4 Общие вопросы Javascript 4 16.07.2011 13:08