Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2012, 21:23
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Альтернатива велосипеда.
Всем привет.

Возник вопрос такой:
Есть 9 чисел от 1 до 9 (или от 1 до 99)
Нужно составить все возможные комбинации этого перечня, например
1 2 3 4 5 6 7 8 9
2 1 3 4 5 6 7 8 9 и т.д.

Естественно что рещение элементарно, но может есть что то стандартное ? (мало ли что)

П.С. Такой бред нужен для дальнейшего решения судоку.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2012, 21:25
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

в STL есть такая штука
в JS нету
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2012, 21:31
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Сообщение от Gvozd Посмотреть сообщение
в STL есть такая штука
в JS нету
Да мне на php бы.
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2012, 21:44
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Duda.Ml1986@gmail.com
Да мне на php бы.
Телепатов здесь нету. надо было сразу сказать.
Готового инструмента также нету.
Вот че мне гугл навскидку выдал
http://docstore.mik.ua/orelly/webprog/pcook/ch04_26.htm
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2012, 09:10
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Давно делал функцию, которая возвращает все перестановки в строке. На js, но, возможно, будет интересна логика или пригодится кому-то ещё.

alert(pers("123456789") );
/** Функция возвращает переданную ей строку,
	поменяв местами указанные символы.
	Принимает три аргумента: строку, и два
	порядковых номера символов для взаимозамены.
	Дуракоустойчивость не предусмотрена.
*/
function swapLetters (text,a,b) {
	if(a == b) {
		return text;
	}
	if(a > b) {
		var c = b; b = a; a = c;
	}
	return text.substr(0,a) + text.substr(b,1) +
			text.substr(a+1,b-a-1) + text.substr(a,1)+
			text.substr(b+1)
	;
}

/** Функция для синтеза всех возможных перестановок символов
	в переданной строке. Не учитывает повторения символов (каждый символов
	считает уникальным).
	Принимает один или два строковых аргумента. 
	Если аргумент один, возвращает все варианты перестановок.
	Если аргумента два, сообщает на каком шаге всех циклов
	найден второй аргумент или сообщает о неудачном поиске.
	Дуракоустойчивость не предусмотрена.
	Фильтрация дублей в результате не предусмотрена.
*/
function pers (txt,searchTxt) {
	var result = [""], letter, item, itemLetter, resultLen, sample;
	searchTxt = searchTxt || "";
	for (letter = 0; letter < txt.length; letter++) {
		resultLen = result.length;
		for (item = 0; item < resultLen; item++) {
			result[item] += txt.substr(letter, 1);
			for (itemLetter = 0; itemLetter <  result[item].length - 1; itemLetter++) {
				sample = swapLetters(result[item], itemLetter, result[item].length - 1);
				if (sample === searchTxt) {
					return "Образец '" + searchTxt + "' найден на шаге " + letter * result.length * sample.length;
				} else {
	 				result.push(sample);
				}
			}
		}
	}
	return searchTxt.length > 0 ? "Образец не найден" : result;
}
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2012, 09:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Duda.Ml1986@gmail.com
П.С. Такой бред нужен для дальнейшего решения судоку.
Вы брутфорсом собираетесь судоку решать?
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2012, 13:27
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Сообщение от Kolyaj Посмотреть сообщение
Вы брутфорсом собираетесь судоку решать?
Нет не брутфорсом.
Была идея создать таблицу всех вариантов.

То есть не только 9 цифр. а 9 на 9 клеток))
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2012, 13:33
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А прикинули примерно сколько будет вариантов?
Ответить с цитированием
  #9 (permalink)  
Старый 11.03.2012, 14:16
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Сообщение от Kolyaj Посмотреть сообщение
А прикинули примерно сколько будет вариантов?
что то многозначное)))
Ответить с цитированием
  #10 (permalink)  
Старый 12.03.2012, 12:12
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

это не перестановки а сочетания будет 9!=1*2*3* ... *8*9
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery Feature Carousel Plugin - Есть ли альтернатива? lraido AJAX и COMET 0 09.11.2011 21:39
watch альтернатива для IE MainBuh Internet Explorer 1 10.08.2010 12:57
Нужна помощь в изобретении велосипеда exec Элементы интерфейса 3 22.05.2010 20:26
Альтернатива insertAdjacentHTML в Mozilla FireFox ПавелЪ Общие вопросы Javascript 4 19.01.2009 01:22
Есть ли альтернатива frameset'у в JavaScript'е? kir12 Общие вопросы Javascript 9 06.05.2008 08:44