Below is my very wordy and probably over complicated attempt at this challenge.
I think I know what I’m missing to pass the 5th out of the 5 tests but I just don’t think that I have the brain power for it anymore at the moment.
Please, someone help me finish this!
function maxProductFinderK(array,k){
neg = ;
pos = ;
answer = 0;
usedNeg =
usedPos =
//functions for multiplying & moving to used array
function timesNeg(){
return Math.abs(answer) * Math.abs(neg[0]);
}
function timesPos(){
return Math.abs(answer) * pos[0];
}
//seperate negative and positive integers
for (let i=0; i < array.length; i++){
if (array[i] < 0) {
neg.push(array[i]);
}else{
pos.push(array[i]);
}
}
//sort negative and postive arrays from largest absolute value
neg.sort(function(a,b) {
return a-b;
})
pos.sort(function(a,b){
return b-a;
})
//END OF FUNCTIONS*/
//**********K = ARRAY LENGTH */
if (k == array.length){
if (k==2){
answer = array[0] * array[1];
return answer
}else{
answer = array[0] * array[1];
array.shift;
array.shift;
for (i = 2; i < k; i++){
answer = answer * array[0];
array.shift();
}
return answer;
//**IF THERE ARE NO POSITIVES or NO NEGATIVES/
}
}else if (pos.length == 0 || neg.length == 0){
if (k==2){
answer = array[0] * array[1];
return answer
}else{
answer = array[0] * array[1];
array.shift;
array.shift;
for (i = 2; i < k; i++){
answer = answer * array[0];
array.shift();
}
return answer;
}
// IF THERE IS ONLY ONE NEGATIVE******
}else if (neg.length < 2 && pos.length > 1){
if (k==2){
answer = pos[0] * pos[1];
return answer;
}else{
answer = pos[0] * pos[1];
pos.shift;
pos.shift;
for (i = 2; i <k; i++){
answer = answer * pos[0];
pos.shift;
}
return answer;
}
// **IF THERE IS ONLY ONE POSITIVE
}else if (pos.length < 2 && neg.length > 1){
if (k==2){
answer = neg[0] * neg[1];
return answer;
}else{
answer = neg[0] * neg[1];
usedNeg.push(neg.shift());
usedNeg.push(neg.shift());
}
for (i = 2; i < k; i++){
answer = answer * neg[0];
neg.shift();
}
if (answer < 0 && k == array.length) {
answer = answer;
}else if(answer < 0 && k == array.length -1){
usedNegSorted = usedNeg.sort(function(a,b){
return b-a;
})
answer /= usedNegSorted[0];
answer = answer * pos[0];
}else if (answer < 0 && k < array.length){
answer /= usedNeg.slice(-1)[0];
answer = answer * pos[0];
}
return answer;
}
//***********IF ITS A NORMAL ARRAY*******/
if (k==2){
if (neg[0]*neg[1] > pos[0]*pos[1]){
answer = neg[0]*neg[1];
}else{
answer = pos[0]*pos[1];
}
//if more that two variables used, starts with first two variable
}else{
if (neg[0]*neg[1] > pos[0]*pos[1]){
answer = neg[0]*neg[1];
usedNeg.push(neg.shift());
usedNeg.push(neg.shift());
}else{
answer = pos[0]*pos[1];
usedPos.push(pos.shift());
usedPos.push(pos.shift());
}
//continues after first 2
for (i = 2; i < k; i++){
if (timesNeg() > timesPos()){
answer = answer * neg[0];
usedNeg.push(neg.shift());
}else{
answer = answer * pos[0];
usedPos.push(pos.shift());
}
}
}
if (answer < 0 && k == array.length) {
answer = answer;
}else if(answer < 0 && k == array.length -1){
usedNegSorted = usedNeg.sort(function(a,b){
return b-a;
})
answer /= usedNegSorted[0];
answer = answer * pos[0];
}else if (answer < 0 && k < array.length){
answer /= usedNeg.slice(-1)[0];
answer = answer * pos[0];
}
return answer;
}
console.log(maxProductFinderK([-8, 6, -7, 3, -2, 1, -9], 3))
// Leave this so we can test your code:
module.exports = maxProductFinderK;