Instantly share code, notes, and snippets.

Embed
What would you like to do?
JS Bin// source http://jsbin.com/siduli
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<p id="text1"></p>
<p id="text2"></p>
<script id="multiplos" type="text/javascript">/*Programa-resposta para teste de matemática básica
promovida pelo grupo Simbiose Ventures.
Questão:" Sendo x, y e z três números naturais tais que
x * y * z = 2310, o número de conjuntos {x, y, z}
diferentes é: "
Este programa tem como função achar quantos
conjuntos {x,y,z}, pertencentes aos Naturais
tais que x*y*z = 2310, ou o numero especificado.
Esta resolução, diferente das outras encontradas
na internet realizada por matemáticos, inclui
o algarismo 1, abrangendo assim a totalidade
dos numeros naturais, já que, se tomarmos qual-
quer número existente, ele está virtualmente
acompanhado da função fx(1*x).
Ex.: (1)*2*1155 = 2310
*/
var x = [];
var y = [];
var z = [];
//Função encontra múltiplos do numero desejado
//e o atribui às variáveis x,y e z.
function multiplos() {
for (i=1; i<=2310; i++) {
if (2310%i === 0) {
x.push(i);
y.push(i);
z.push(i);
}
}
};
multiplos();
var count=0;
var string=[];
var stringTemp=[];
var stringTemp2=[];
var stringTemp3=[];
var stringTemp4=[];
var stringTemp5=[];
var stringTemp6=[];
//função de alocação temporária.
//Permuta os multiplos encontrados
//e compara se já foram utilizados.
//Apenas utiliza aqueles cujo produto é 2310
//ou numero desejado.
function alocacaoTemp(x,y,z) {
stringTemp.splice(0,3,x,y,z);
stringTemp2.splice(0,3,x,z,y);
stringTemp3.splice(0,3,y,x,z);
stringTemp4.splice(0,3,y,z,x);
stringTemp5.splice(0,3,z,x,y);
stringTemp6.splice(0,3,z,y,x);
/*aqui separamos as multiplicações cujo
resultado não é 2310 e também verificamos
se a string formada das variaveis, através
do método join() já foi utilizada.
O método join() foi o único método que respondeu
satisfatoriamente ao tipo de comparação utilizado.*/
if( (x*y*z !== 2310) || string.includes(stringTemp.join()) ||
string.includes(stringTemp2.join()) || string.includes(stringTemp3.join()) ||
string.includes(stringTemp4.join())|| string.includes(stringTemp5.join()) ||
string.includes(stringTemp6.join()) ) {
console.log('A permutacao ja foi realizada');
}
/*Caso a permutação seja de elementos novos
e resulte em 2310, o contador é incrementado,
e os valores são salvos na variavel string.*/
else {
string.push(stringTemp.join());
count++;
}
document.getElementById('text1').textContent='O numero contem '+count+'conjuntos válidos.\nOs conjuntos válidos são:'+string;
console.log(count);
};
/*as 3 permutações do tipo 'for' intercaladas tem como
base a string.length, ou seja, o numero de múltiplos
encontrado para o número desejado.
aqui permutamos o índice de cada variável que agora é
um arranjo com todos os múltiplos do número desejado.
A string formada é o conjunto de todos os conjuntos
{x,y,z} válidos.*/
for (var i=0; i<x.length; i++) {
for (var j = 0; j<x.length; j++) {
for (var k=0; k<x.length; k++) {
alocacaoTemp(x[i],y[j],z[k]);
console.log(string);
}
}
};</script></body>
</html>
/*Programa-resposta para teste de matemática básica
promovida pelo grupo Simbiose Ventures.
Questão:" Sendo x, y e z três números naturais tais que
x * y * z = 2310, o número de conjuntos {x, y, z}
diferentes é: "
Este programa tem como função achar quantos
conjuntos {x,y,z}, pertencentes aos Naturais
tais que x*y*z = 2310, ou o numero especificado.
Esta resolução, diferente das outras encontradas
na internet realizada por matemáticos, inclui
o algarismo 1, abrangendo assim a totalidade
dos numeros naturais, já que, se tomarmos qual-
quer número existente, ele está virtualmente
acompanhado da função fx(1*x).
Ex.: (1)*2*1155 = 2310
*/
var x = [];
var y = [];
var z = [];
//Função encontra múltiplos do numero desejado
//e o atribui às variáveis x,y e z.
function multiplos() {
for (i=1; i<=2310; i++) {
if (2310%i === 0) {
x.push(i);
y.push(i);
z.push(i);
}
}
};
multiplos();
var count=0;
var string=[];
var stringTemp=[];
var stringTemp2=[];
var stringTemp3=[];
var stringTemp4=[];
var stringTemp5=[];
var stringTemp6=[];
//função de alocação temporária.
//Permuta os multiplos encontrados
//e compara se já foram utilizados.
//Apenas utiliza aqueles cujo produto é 2310
//ou numero desejado.
function alocacaoTemp(x,y,z) {
stringTemp.splice(0,3,x,y,z);
stringTemp2.splice(0,3,x,z,y);
stringTemp3.splice(0,3,y,x,z);
stringTemp4.splice(0,3,y,z,x);
stringTemp5.splice(0,3,z,x,y);
stringTemp6.splice(0,3,z,y,x);
/*aqui separamos as multiplicações cujo
resultado não é 2310 e também verificamos
se a string formada das variaveis, através
do método join() já foi utilizada.
O método join() foi o único método que respondeu
satisfatoriamente ao tipo de comparação utilizado.*/
if( (x*y*z !== 2310) || string.includes(stringTemp.join()) ||
string.includes(stringTemp2.join()) || string.includes(stringTemp3.join()) ||
string.includes(stringTemp4.join())|| string.includes(stringTemp5.join()) ||
string.includes(stringTemp6.join()) ) {
console.log('A permutacao ja foi realizada');
}
/*Caso a permutação seja de elementos novos
e resulte em 2310, o contador é incrementado,
e os valores são salvos na variavel string.*/
else {
string.push(stringTemp.join());
count++;
}
console.log(count);
};
/*as 3 permutações do tipo 'for' intercaladas tem como
base a string.length, ou seja, o numero de múltiplos
encontrado para o número desejado.
aqui permutamos o índice de cada variável que agora é
um arranjo com todos os múltiplos do número desejado.
A string formada é o conjunto de todos os conjuntos
{x,y,z} válidos.*/
for (var i=0; i<x.length; i++) {
for (var j = 0; j<x.length; j++) {
for (var k=0; k<x.length; k++) {
alocacaoTemp(x[i],y[j],z[k]);
console.log(string);
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment