Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.04.2016, 13:36
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Алгоритм для создания суммы чисел.
День добрый, форумчане!
Передо мной стоит такая задача:
Есть некое число X (int).
X>=1 && X<=9;
Необходимо вывести все варианты групп чисел, удовлетворяющих тому же промежутку и типу, что и Х, которые в сумме дадут X.

Например, если X == 5, а выводить будем массивами, то функция должна вернуть примерно следующее:

arr = 
	[ 
		[5], 
		[1,4], 
		[4,1], 
		[2,3], 
		[3,2], 
		[1,1,3], 
		[1,3,1], 
		[3,1,1], 
		[1,2,2], 
		[2,1,2], 
		[2,2,1], 
		[1,1,1,2], 
		[1,1,2,1], 
		[1,2,1,1], 
		[2,1,1,1], 
		[1,1,1,1,1] 
	]


Собственно, код не интересует, есть у кого-то идеи относительно алгоритма реализации подобного? Или предположение о том, как правильно спросить у гугла?)
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2016, 13:43
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Viral,
https://www.quora.com/Algorithm-to-s...riginal-number
Ответить с цитированием
  #3 (permalink)  
Старый 01.04.2016, 14:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Дежавю
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2016, 14:53
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

рони,
ага
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2016, 14:55
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

рони,
уже было?
Ответить с цитированием
  #6 (permalink)  
Старый 01.04.2016, 15:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Viral,
Мячик прыгает по лестнице, расчитать кол-во вариантов

<script>
function fn(b, d) {
    for (var a = Array(b + 1).join("1").split(""), c = []; a[0] != b;) a.reduce(function(a, b) {
        return +a + +b
    }, 0) < b ? a.push(1) : (a.every(function(a) {
        return +a <= d
    }) && c.push(a.slice()), a.pop(), a[a.length - 1]++);  console.log(c)
    c.push([b])
    return c.sort(function(a, b) {
        return +a.join('') - +b.join('')
    })
};
document.write(fn(5,5).join('<br>')+ "<br>Всего: "+ fn(5,5).length);

</script>

осторожно в массиве есть не цифры а строки , если нужны именно цифры заменить формирование первоначального массива,
Сообщение от Viral
X>=1 && X<=9;
для x в этих пределах это
просто
Ответить с цитированием
  #7 (permalink)  
Старый 01.04.2016, 15:14
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

рони,
Спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 01.04.2016, 15:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Viral,
<script>
function fn(b, d) {
    for (var a = [1,1,1,1,1,1,1,1,1].slice(b), c = []; a[0] != b;) a.reduce(function(a, b) {
        return +a + +b
    }, 0) < b ? a.push(1) : (a.every(function(a) {
        return +a <= d
    }) && c.push(a.slice()), a.pop(), a[a.length - 1]++);
    c.push([b])
    return c.sort(function(a, b) {
        return +a.join('') - +b.join('')
    })
};
document.write(fn(5,5).join('<br>')+ "<br>Всего: "+ fn(5,5).length);

</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пагинация для слайдера, каким может быть алгоритм? Hey,you jQuery 3 07.03.2015 17:35
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
Либа для создания окон Кирпич Библиотеки/Тулкиты/Фреймворки 8 25.06.2008 16:44