Pages

Ouvrage

 la BU permet d'accèder en ligne aux ouvrage et formations de l'éditeur ENI. C'est là : https://www.biblio.univ-evry.fr/index.php/2024/03/29/eni/

trans : map

 

Soit la base de données : 
Donnez le code pour transformer la structure en 



Donnez le code qui donne trois nouveaux tableaux :

[ 'Monsieur Dupont', 'Monsieur Dupond', 'Madame Durand' ]

[ 'Cher M. Dupont', 'Cher M. Dupond', 'Chère Mme Durand' ]

[ 20, 20, 24 ]


Le génopole d'Evry : un gène dans une séquence !

recherche("AATC", "AATAAATCAAA");

> AATA****AAA

 

Le code HTML

<body>
  <p class="premier">Para 1</p>
  <p><em>second </em> Para 2</p>
  <p id="dernier"> dernier Para</p>
  <!-- je suis un commentaire -->
</body>

La représentation 


La structuration


On peut retrouver une représentation suivante !

 

Dernier cours : programme L2

 

Élément

Voici le vocabulaire a connaitre pour se déplacer dans le DOM/élément !


 Node


On pourra utiliser également le vocabulaire suivant au niveau Nœud  !





let balises = [];
const _explore = (a) => {
    for (let c of a.children) {
        balises.push(c.nodeName)
        _explore(c)
    }
};
_explore(document.body);



En action 

Copiez ce code et injectez le dans la console d'un site comme le monde.fr

allTag=(a=>{let b=[],c={};return _explore=(a=>{for(let c of a.children)b.push(c.nodeName),_explore(c)}),_explore(a),_getWordCnt=(a=>{return a.reduce(function(a,b){return a[b]=a[b]+1||1,a},[])}),c=_getWordCnt(b),_sort=(a=>{let b=[],c=Object.keys(a).sort((b,c)=>a[c]-a[b]);for(var d of c)b[d]=a[d];return b}),_sort(c)});let a=allTag(document.body);for(var b in a){a.hasOwnProperty(b)&&console.log(`la balise ${b} apparaît ${a[b]} fois `)};

tapez dans la console : a

help yourself

TD : 

 const surprise = action([1,0,0,1,0])


TD : 

Quels codes donnent les nombre pairs, impairs, positifs, multiples de 2 ....


Programme L2

 

Vacances : achats

 Découvrez les méthodes filter, map et reduce en action !

Vous disposez de 80€ de budget.
Vous indiquez dans votre panier vos achats
Type:Prix:Quantité

Cliquez pour calculer l'estimation d'achat et l'aide à la vente.

🍕Fichier pizza.mjs

// pizzas.mjs
const pizzas = [
  { name: "queen", ingredients: ["🐷", "🍄", "🍅", "🧀"] },
  { name: "cheese", ingredients: ["🧀", "🍅"] },
  { name: "oriental", ingredients: ["🍅", "🐑", "🍄", "🌶"] },
  { name: "royal", ingredients: ["🍅", "🌵"] },
];

export default pizzas;


🥘Fichier test.mjs

import pizzas from "./pizzas.mjs"

function myForEach(array, fx) {
  for (let i = 0; i < array.length; i++) fx(array[i], i, array);
}

myForEach(pizzas, (pizza) => {
  console.log(pizza);
});

function printPizzaDetails(pizza, index) {
  console.log(`Pizza ${index + 1}:`);
  console.log(`Name: ${pizza.name}`);
  console.log(`Ingredients: ${pizza.ingredients.join(", ")}`);
}

myForEach(pizzas, printPizzaDetails);

let totalIngredients = 0;

function countIngredients(pizza) {
  totalIngredients += pizza.ingredients.length;
}

myForEach(pizzas, countIngredients);

console.log(`Total ingredients: ${totalIngredients}`);

let uniqueIngredients = [];

function isUniqueIngredient(ingredient) { if (uniqueIngredients.includes(ingredient)) { return } uniqueIngredients.push(ingredient); } function collectUniqueIngredients(pizza) { myForEach(pizza.ingredients, isUniqueIngredient); }

myForEach(pizzas, collectUniqueIngredients);

console.log(`Total unique ingredients: ${uniqueIngredients.length}`);
console.log(`Unique ingredients: ${uniqueIngredients.join(", ")}`);

Don't be a 🦜


let greaterThanOne = [];
for (let i = 0; i < array.length; i++) {
  if (array[i] > 1) {
    greaterThanOne.push(array[i]);
  }
}
console.log('Values greater than 1:', greaterThanOne);

// 🦜
let greaterThanTwo = [];
for (let i = 0; i < array.length; i++) {
  if (array[i] > 2) {
    greaterThanTwo.push(array[i]);
  }
}
console.log('Values greater than 2:', greaterThanTwo);

// 🦜


function findValuesGreaterThan(array, number) {
  let result = [];
  for (let i = 0; i < array.length; i++) {
    if (array[i] > number) {
                  result.push(array[i]);
            }
           }
           return result;
         }

let greaterThanOne = findValuesGreaterThan(array, 1);        
let greaterThanTwo = findValuesGreaterThan(array, 2);        
let greaterThanVelue = findValuesGreaterThan(array, value);  

🥷How to improve our programming style ?

As an AI programming assistant, I don't have personal opinions or feelings.
However, I can say that asking such a question shows your understanding
of functional programming concepts and your ability to think abstractly about code,
which are important skills in software development. Keep asking questions and exploring different ways to solve problems
- this is a great way to learn and improve as a programmer!




Passons maintenant aux questions suivantes : 




🦜Quels codes donnent les nombres : 
  1. pairs,
  2. impairs,
  3. positifs,
  4. négatifs
  5. multiples de 2
  6. et patati et patata !

Cherchez les valeurs uniques : pas si unique !

 

Solution du DM : unique !

 Définir une fonction unique recherchant les valeurs uniques d'un tableau.


  1. const t = [2,0,2,0,2,3];
  2. const u = unique(t);

💥Proto de SuperDupont


Unique !

Nous allons donner un ensemble de fonction recherchant les valeurs uniques d'un tableau.

  1. let t = [2,0,2,0,2,3];

  2. unique(t);
Nous découvrirons les méthodes et propriétés suivantes :
Array.isArray
array.length
array.splice
array.indexOf
array.push
array.includes

Nous pourrons comparer le temps d'exécution des différentes propositions de code.
  1. let t = [2,0,2,0,2,3];

  2. console.time("time");
  3. unique(t);
  4. console.timeEnd("time");

Nous pourrions également integrer un test élémentaire sur le tableau en argument
  1.   if (!Array.isArray(arr)) {
  2.     throw new TypeError('array-unique expects an array.');
  3.   }
Les écritures suivantes ne sont pas commentées
  1. function unique(t){
  2.   let cur = t.length;
  3.   while (--cur){

  4.   for (let i=0; i< cur; i++){
  5.       if (t[i] == t[cur]){
  6.           t.splice(cur,1);
  7.           break;
  8.       }
  9.   }
  10.   }
  11. }
code
  1. function unique(arr) {
  2.   let i = -1;
  3.   while (i++ < arr.length) {
  4.     var j = i + 1;

  5.     for (; j < arr.length; ++j) {
  6.       if (arr[i] === arr[j]) {
  7.         arr.splice(j--, 1);
  8.       }
  9.     }
  10.   }
  11.   return arr;
  12. };
code
  1. function unique(array) {
  2.   let passed = [];
  3.   for (let i=0 ; i < array.length; i++) {
  4.     if (array.indexOf( array[i]) === i)
  5.       passed.push(array[i]);
  6.   }
  7.   return passed;
  8. }

Dans quelques temps, nous apprendrons des méthodes sur les tableaux très utiles

  1. array.reduce
  2. array.filter

  1. function unique(t){
  2.   
  3.   let u = t.reduce(function(a,c){
  4.     if (!a.includes(c)){
  5.       a.push(c)
  6.     }
  7.     return a;   
  8.     },[])
  9.   return u;
  10. }
code
code
  1. function unique(value,index,tab){
  2.   return tab.indexOf(value) === index;
  3. }

  4. console.time("while")
  5. t = t.filter(unique);
  6. console.timeEnd("while");

Finalement, SuperDupont pourra toujours nous impressionner par l'utilisation de nouveaux
 types d'objet SET et MAP.
  1. console.time("while")
  2. let v = [...new Set(t)];
  3. console.timeEnd("while");

Mais que dire des tableaux contenant des objets ! 
  1. const T = [
  2.     { name: 'dupont', id:22 },
  3.     { name: 'dupont', id:20 },
  4.     { name: 'dupond', id:21 },
  5.     { name: 'dupond', id:21 },
  6.   ];
  7. const unique = [];
  8. const map = new Map();
  9. for (const item of T) {
  10.     if(!map.has(item.id)){
  11.         map.set(item.id, true);    // set any value to Map
  12.         unique.push({
  13.             id: item.id,
  14.             name: item.name
  15.         });
  16.     }
  17. }
  18. console.log(unique)

  .

🍕Base des données

const pizzas = [

    { name:"queen", ingredients: ["🐷","🍄","🍅","🧀"], price:5 },

    { name: "cheese", ingredients: ["🧀", "🍅"], price:3},

    { name: "oriental", ingredients: ["🍅","🐑","🍄","🌶"],  price:5},

    { name: "royal", ingredients: ["🍅","🌵"],  price:10},

  ];


Questions

Trouvez les pizzas avec du 🧀

Trouvez les pizzas avec du 🍅


vers pythontutor

Rendre la monnaie !

//MAP a new objet

Here are some of the most commonly used methods provided by the Map object in JavaScript:

  1. set(key, value): Adds or updates an element with a specified key and a value to a Map object.

  2. get(key): Returns the value associated to the key, or undefined if there is none.

  3. size: Returns the number of key/value pairs in the Map object.

  4. Itération over a Map object

aMap.forEach((value, key) => {
    console.log(`$${key}: ${value}`);
});

🪛 en action pour rendre la monnaie !



/**
 * Calculates the change for a given amount.
 *
 * @param {number} amount - The amount for which to calculate the change.
 * @returns {Map<number, number>} - A map containing the denominations as keys and the count of each denomination as values.
 */
function calculateChange(amount) {
  const denominations = [100, 20, 10, 5, 1];
  let change = new Map();

  for (let bill of denominations) {
    let count = Math.floor(amount / bill);
    if (count > 0) {
      change.set(bill, count);
      amount -= bill * count;
    }
    if (amount === 0) {
      break;
    }
  }

  return change;
}

// Generate a random number between 1 and 1000
let randomAmount = Math.floor(Math.random() * 1000) + 1;
let text = `Random amount: ${randomAmount}`;

console.log(text);

let change = calculateChange(randomAmount);

// Calculate the number of tab spaces needed
let tabs = Math.ceil(text.indexOf(":") - 1); // Each tab is approximately 4 spaces

// Display the change
change.forEach((value, key) => {
  console.log(
    `${" ".repeat(tabs)}${value}: ${key >= 5 ? "bill" : "coin"}${
      value > 1 ? "s" : ""
    }\t${key}${key >= 5 ? "💶" : "🪙"}`
  );
});




 


Programmation récursive

Rendre la monnaie peut être resolu par une programmation recursive :