TD
Entrainement au DS
delta encoding
Le codage par différence (delta encoding en anglais) permet de compresser un tableau de données en indiquant pour chaque donnée, sa différence avec la précédente (plutôt que la donnée elle-même). On se retrouve alors avec un tableau de données assez petites nécessitant moins de place en mémoire. Cette méthode se révèle efficace lorsque les valeurs consécutives sont proches.
Programmer la fonction delta
qui prend en paramètre un tableau non vide de nombres entiers et qui renvoie un tableau contenant les valeurs entières compressées à l’aide cette technique.
delta([100000, 100000, 100001, 100002, 100002])
Gene
La fonction recherche prend en paramètres deux chaines de caractères gene et seq_adn et renvoie True si on retrouve gene dans seq_adn et False sinon. Implémenter la fonction recherche.
console.log(recherche("AATC", "GTACAAATCTTGCC")); //true
console.log(recherche("AGTC", "AAGTCGCC")) // true
Une interface
Entrainement au DS
L’occurrence d’un caractère
L’occurrence d’un caractère dans un phrase est le nombre de fois où ce caractère est présent.
Exemples :
- l’occurrence du caractère ‘o’ dans ‘bonjour’ est 2 ;
- l’occurrence du caractère ‘b’ dans ‘Bébé’ est 1 ;
- l’occurrence du caractère ‘B’ dans ‘Bébé’ est 1 ;
- l’occurrence du caractère ‘ ‘ dans ‘Hello world !’ est 2.
On cherche les occurrences des caractères dans une phrase. On souhaite stocker ces occurrences dans un objet dont les clefs seraient les caractères de la phrase et les valeurs l’occurrence de ces caractères.
Par exemple : avec la phrase 'Hello world !' le dictionnaire est le suivant :
{'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 1,'!': 1}
Écrire une fonction occurrence_lettres
prenant comme paramètre une variable phrase
de type str
. Cette fonction doit renvoyer un objet constitué des occurrences des caractères présents dans la phrase.
Rendre la monnaie.
On s’intéresse au problème du rendu de monnaie. On suppose qu’on dispose d’un nombre infini de billets de 5 euros, de pièces de 2 euros et de pièces de 1 euro.
Le but est d’écrire une fonction nommée rendu
dont le paramètre est un entier positif non nul somme_a_rendre
et qui retourne une liste de trois entiers n1
, n2
et n3
qui correspondent aux nombres de billets de 5 euros (n1
) de pièces de 2 euros (n2
) et de pièces de 1 euro (n3
) à rendre afin que le total rendu soit égal à somme_a_rendre
.
On utilisera un algorithme glouton. Autrement dit, on commencera par rendre le nombre maximal de billets de 5 euros, puis celui des pièces de 2 euros et enfin celui des pièces de 1 euros.
Entrainement au DS
🪛Code 1
Écrire le code qui recherche un caractère dans un mot (une chaîne de caractères) et qui donne le nombre d’occurrences de caractere dans le mot, c’est-à-dire le nombre de fois où caractere apparaît dans mot.
$ 'e', "sciences"
2
$ 'i',"mississippi"
4
$ 'a',"mississippi"
0
🪛Code 2
Soit le couple [note,coefficient]:
- note est un nombre de type flottant [float] compris entre 0 et 20 ;
- coefficient est un nombre entier positif.
Les résultats aux évaluations d'un élève sont regroupés dans un tableau composé de tableau [note,coefficient].
Exemple :
Les résultats aux évaluation [[15,2],[9,1],[12,3]] donnent la moyenne de 12.5.
La moyenne pondérée se calcule avec la formule suivante :
En appliquant cette formule aux données
TD JS !
const calendrier = new Array(),
mois = 3,
annee = 2025,
temps = new Date(annee, mois-1, 1);
let Start = temps.getDay();
if (Start > 0) {
Start--;
}
else {
Start = 6;
}
let Stop = 31;
if (mois == 4 || mois == 6 || mois == 9 || mois == 11)--Stop;
if (mois == 2) {
Stop = Stop - 3;
if (an % 4 == 0) Stop++;
if (an % 100 == 0) Stop--;
if (an % 400 == 0) Stop++;
}
let nombre_jours = 1;
for (let i = 0; i <= 5; i++) {
for (let j = 0; j <= 6; j++) {
if ((i == 0) && (j < Start)) {
calendrier.push(" ");
}
else {
if (nombre_jours > Stop) {
calendrier.push(" ");
}
else {
calendrier.push(`${nombre_jours}`);
nombre_jours++;
}
}
}
}
console.log(calendrier)
Vous avez raison, le calendrier que j'ai fourni ne correspond pas à la réalité pour la France. En France, la semaine commence le lundi, et non le dimanche. Voici le calendrier corrigé pour mars 2025, en tenant compte que le 1er mars 2025 est un samedi :
[
" ", " ", " ", " ", " ", "1", "2",
"3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "16",
"17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30",
"31", " ", " ", " ", " ", " ", " "
]
Ce tableau représente les jours du mois de mars 2025, avec des espaces pour les jours avant et après les jours réels de mars. Le 1er mars 2025 étant un samedi, les cinq premières positions sont vides, et les jours sont remplis en conséquence.
Merci de m'avoir signalé cette erreur ! Si vous avez d'autres questions ou besoin d'aide supplémentaire, n'hésitez pas à demander ! 😊
JS - 2
Décomposition
Projet : https://dupontdenis.github.io/TypesJS-rayon/
Clone : https://github.com/dupontdenis/TypesJS-rayon.git
🪛Action
Ajout d'un opérateur https://dupontes6.blogspot.com/2017/10/projet-operateur.html
JS
Vidéo :
🎞️https://sites.google.com/view/dupontrvisionsl2/js?authuser=0#h.3ozmzv8ty8q0
Projet : https://dupontdenis.github.io/TypesJS-rayon/
🪛Clone : https://github.com/dupontdenis/TypesJS-rayon.git
Bilan 1 partie
Documentation
Cours
Préparation au DS
Sujets
Simulateurs
https://dupontcss.blogspot.com/p/test-grill.html
https://dupontl1.blogspot.com/2025/01/simulateur-maison.html
Préparation aux examens
A la rentrée ! Découverte du DOM !
🚀https://dupontdenis.github.io/detection/
🪛Merci de "moderniser" le code ! En particulier, la gestion asynchrone.
Cours 7
Vidéos
Lles placement de base https://sites.google.com/view/dupontrvisionsl2/grid
Passons aux algorithmes https://sites.google.com/view/dupontgrid/algorithmes?authuser=0
Lecture
https://dupontcss.blogspot.com/2017/03/ordre-des-blocs-places-automatiquement.html
https://dupontcss.blogspot.com/2018/09/grid-dense.html
Préparation au DS
Bloc 1 : Bloc Rouge |
Bloc 2 : Bloc Bleu |
Bloc 3 : Bloc Vert |
Bloc 4 : bloc Noir |
🪛Dessinez les quatres blocs (R,B,V,N) dans le conteneur.
.conteneur { display: grid; grid-template-columns: repeat(2, 1cm); grid-auto-flow: column } |
Autre test :
.conteneur { display: grid; grid-template-columns: repeat(4, 2cm); grid-auto-rows: 1cm; grid-auto-flow: row; } div:nth-child(1) { grid-column: 1 / 3; grid-row: 1 / 3; } div:nth-child(2) { grid-column: 3/5; grid-row: 2 / 5; } div:nth-child(3) { grid-row-end: span 2; } div:nth-child(4) { grid-column-end: span 2; } |