Skip to content

Commit 264a904

Browse files
authored
Merge pull request #97 from AxaGuilDEv/corrections
Corrections
2 parents e06517f + 820eda3 commit 264a904

File tree

4 files changed

+431
-0
lines changed

4 files changed

+431
-0
lines changed

TOOLS/NodeJS/src/tools.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ export const divideTwoArrsFloor = (arr1, arr2) => operateTwoArrs(arr1, arr2, (a,
9393
export const smallestInArr = arr => Math.floor(arr.sort(sortAsc)[0]);
9494
export const biggestInArr = arr => Math.floor(arr.sort(sortDesc)[0]);
9595

96+
export const maxInArr = arr => arr.reduce((a,v) => v>a?v:a, -Infinity); // Math.max(...enormeTableau) plante si le tableau est très grand, pas cette méthode
97+
export const minInArr = arr => arr.reduce((a,v) => v>a?a:v, Infinity);
98+
9699
// http://homepage.math.uiowa.edu/~goodman/22m150.dir/2007/Permutation%20Generation%20Methods.pdf Heap method
97100
export function permutations(permutation) {
98101
var length = permutation.length,
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function ContestResponse(){
2+
//implement your code here using input array
3+
let plages = Number(input.shift());
4+
let coursConsecutifsMax = Number(input.shift());
5+
let cours = input.map(Number);
6+
let couts = [...cours];
7+
8+
for(let i = coursConsecutifsMax + 1; i < cours.length; i++)
9+
{
10+
let coutsLocaux = couts.slice(i-coursConsecutifsMax-1, i);
11+
let minCoutLocal = Math.min(...coutsLocaux);
12+
couts[i] = minCoutLocal + cours[i];
13+
}
14+
15+
let finDeLaSuite = couts.slice(couts.length - coursConsecutifsMax - 1);
16+
let min = Math.min(...finDeLaSuite);
17+
let sommeCours = cours.reduce((a,v) => a+v,0);
18+
console.log(sommeCours - min);
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function ContestResponse(){
2+
//implement your code here using input array
3+
4+
// On essaye de calculer le maximum absorbé
5+
6+
let [n,a,c] = input.shift().split` `.map(Number);
7+
let asteroides = input.shift().split` `.map(Number);
8+
9+
let listeCopy = new Array(n+a+c+1).fill(0).map(v => 0);
10+
11+
let absorb = asteroides.slice(0, a).reduce((a,v)=>a+v,0);
12+
13+
for(let i = 0; i < n; i++)
14+
{
15+
listeCopy[i+1] = Math.max(listeCopy[i+1], listeCopy[i]);
16+
listeCopy[i+a+c] = listeCopy[i] + absorb; // Dans A + C secondes, c'est ce qu'on a absorbé au mieux jusqu'ici plus ce qu'on peut absorber sur A s.
17+
absorb += (i+a < asteroides.length) ? asteroides[i+a] : 0; // on décale la fenêtre d'absorption
18+
absorb -= asteroides[i];
19+
}
20+
console.log(
21+
// total de tous les astéroides - le max que l'on peut absorber au mieux
22+
eval(asteroides.join`+`) - maxInArr(listeCopy)
23+
);
24+
}

0 commit comments

Comments
 (0)