// codeart.ru / Работаем с кодом / Программа нахождения всех подмножеств конечного множества (javascript) Форум

Программа нахождения всех подмножеств конечного множества (javascript) rss подписка

Автор: Evgeniy Sergeev

Возобновляю рубрику «Работаем с кодом». Суть рубрики в следующем — беру какую-нибудь простую задачу и делаю реализацию которая первой приходит на ум. А вы, через комментарии, предлагаете улучшения это программы. В итоге должна получиться конфетка.

Сегодня у нас задача «Нахождение всех подмножеств непустого множества». Моя реализация сделана на JavaScript, чтобы сразу вставить демку в статью.
Все подмножества, множества [q, w, e, r, t, y, u, i, o, p, a, s, d, f, g, h, j, k, l, z, x, c, v, b, n, m] кол-во вариантов 226:
[social_lock]



function strInc(str, base) {
	str = str.toString() || '0';
 	base = base || 10;
	var result = [];
	var reverse = [];
	var overflow = 1;     	
	var n = 0;
	numbers = str.split(',');
	for(var i = numbers.length-1; i>=0; i--) {
		var n = numbers[i];
		n = parseInt(n,10)+overflow;
		overflow = 0;
		if(n >= base) {n = '0'; overflow=1;}
	 	result.push(n);
	}
	if(overflow > 0) result.push('1');		

	for(var i = result.length-1; i >= 0; i--) {
		reverse.push(result[i]);
	}

	return reverse.join(',');
}


function filter(arr, mask){
 	mask = mask.split(',');
	result = [];
	if(arr.length == mask.length){	
		for(var i = 0; i < mask.length; i++){
			if(parseInt(mask[i],10) == 1) result.push(arr[i])
		}
	}
	return result;
}



for(var a=[],i = 0; i < 25; i++){
	a.push(0);
}
a.push(-1);
var r = a.join(',');

function runMain(){
	r = strInc(r,2);
	$('#result').html(filter("qwertyuiopasdfghjklzxcvbnm".split(""),r).join(','));
}

var gidInt = setInterval(runMain, 1);

[/social_lock]

Leave a Reply

« »