From 566e582612ae53176b3db55b5a3cd3c5426362a5 Mon Sep 17 00:00:00 2001
From: Darciaux Yoann <yoann.darciaux3@etu.univ-lorraine.fr>
Date: Mon, 24 Feb 2025 11:03:35 +0100
Subject: [PATCH] =?UTF-8?q?Fichiers=20renomm=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 qualdev/compte_rendu.txt |   2 +-
 src/TD1.ts               | 139 +++++++++++++++++++++++++++++++++++++++
 src/TD2.ts               |   0
 src/TDAdn.ts             |  80 ++++++++++++++++++++++
 4 files changed, 220 insertions(+), 1 deletion(-)
 create mode 100644 src/TD1.ts
 create mode 100644 src/TD2.ts
 create mode 100644 src/TDAdn.ts

diff --git a/qualdev/compte_rendu.txt b/qualdev/compte_rendu.txt
index 6dad208..c378a00 100644
--- a/qualdev/compte_rendu.txt
+++ b/qualdev/compte_rendu.txt
@@ -22,4 +22,4 @@ Dépot distant
 
 6) git push -u origin main
 
-7)
\ No newline at end of file
+7)git status (encore)
\ No newline at end of file
diff --git a/src/TD1.ts b/src/TD1.ts
new file mode 100644
index 0000000..8cd8dfd
--- /dev/null
+++ b/src/TD1.ts
@@ -0,0 +1,139 @@
+// Définition de la classe Point
+class Point {
+    x!: number;
+    y!: number;
+}
+
+// Définition de la classe Cercle
+class Cercle {
+    centre!: Point;
+    rayon!: number;
+}
+
+// Définition de la classe Rectangle
+class Rectangle {
+    coinSupGauche!: Point;
+    largeur!: number;
+    hauteur!: number;
+}
+
+// Instanciation d'un objet Cercle
+let centreCercle = new Point();
+centreCercle.x = 150;
+centreCercle.y = 100;
+
+let monCercle = new Cercle();
+monCercle.centre = centreCercle;
+monCercle.rayon = 75;
+
+// Fonction pour vérifier si un point est dans un cercle
+function pointDansCercle(cercle: Cercle, point: Point): boolean {
+    let distance = Math.sqrt(
+        (point.x - cercle.centre.x) ** 2 +
+            (point.y - cercle.centre.y) ** 2,
+    );
+    return distance <= cercle.rayon;
+}
+
+// Fonction pour vérifier si un rectangle est complétement dans un cercle
+function rectangleDansCercle(cercle: Cercle, rectangle: Rectangle): boolean {
+    let coin1: Point = rectangle.coinSupGauche;
+    let coin2: Point = { x: coin1.x + rectangle.largeur, y: coin1.y };
+    let coin3: Point = { x: coin1.x, y: coin1.y + rectangle.hauteur };
+    let coin4: Point = {
+        x: coin1.x + rectangle.largeur,
+        y: coin1.y + rectangle.hauteur,
+    };
+
+    return pointDansCercle(cercle, coin1) && pointDansCercle(cercle, coin2) &&
+        pointDansCercle(cercle, coin3) && pointDansCercle(cercle, coin4);
+}
+
+// Fonction pour vérifier s'il y a chevauchement entre un cercle et un rectangle
+function chevauchement(cercle: Cercle, rectangle: Rectangle): boolean {
+    let coin1: Point = rectangle.coinSupGauche;
+    let coin2: Point = { x: coin1.x + rectangle.largeur, y: coin1.y };
+    let coin3: Point = { x: coin1.x, y: coin1.y + rectangle.hauteur };
+    let coin4: Point = {
+        x: coin1.x + rectangle.largeur,
+        y: coin1.y + rectangle.hauteur,
+    };
+
+    return pointDansCercle(cercle, coin1) || pointDansCercle(cercle, coin2) ||
+        pointDansCercle(cercle, coin3) || pointDansCercle(cercle, coin4);
+}
+
+// Instanciation d'un rectangle
+let coinRectangle = new Point();
+coinRectangle.x = 130;
+coinRectangle.y = 90;
+
+let monRectangle = new Rectangle();
+monRectangle.coinSupGauche = coinRectangle;
+monRectangle.largeur = 30;
+monRectangle.hauteur = 20;
+
+// Test de la fonction pointDansCercle()
+let testPoint = new Point();
+testPoint.x = 140;
+testPoint.y = 100;
+
+console.log(
+    "Le point est dans le cercle ?",
+    pointDansCercle(monCercle, testPoint),
+);
+
+// Test de la fonction rectangleDansCercle()
+console.log(
+    "Le rectangle est entièrement dans le cercle ?",
+    rectangleDansCercle(monCercle, monRectangle),
+);
+
+// Test de la fonction chevauchement()
+console.log(
+    "Le rectangle chevauche-t-il le cercle ?",
+    chevauchement(monCercle, monRectangle),
+);
+
+class Temps {
+    heure!: number;
+    minute!: number;
+    seconde!: number;
+
+    affichageTemps(): void {
+        let ch = "";
+        if (this.heure < 10) ch += "0";
+        ch += this.heure + ":";
+        if (this.minute < 10) ch += "0";
+        ch += this.minute + ":";
+        if (this.seconde < 10) ch += "0";
+        ch += this.seconde;
+        console.log(ch);
+    }
+}
+
+let chrono = new Temps();
+chrono.heure = 9;
+chrono.minute = 45;
+chrono.seconde = 0;
+
+function temps2Number(t: Temps): number {
+    return t.heure * 60 * 60 + t.minute * 60 + t.seconde;
+}
+
+function number2Temps(tempsEnSeconde: number): Temps {
+    let t = new Temps();
+    t.heure = Math.floor(tempsEnSeconde / 3600);
+    tempsEnSeconde %= 3600;
+    t.minute = Math.floor(tempsEnSeconde / 60);
+    t.seconde = tempsEnSeconde % 60;
+    return t;
+}
+function multiplieTemps(t: Temps, n: number): Temps {
+    return number2Temps(temps2Number(t) * n);
+}
+
+function vitesseMoyenne(t: Temps, distance: number): Number {
+    let tEnHeures = temps2Number(t) / 3600;
+    return distance / tEnHeures;
+}
diff --git a/src/TD2.ts b/src/TD2.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/TDAdn.ts b/src/TDAdn.ts
new file mode 100644
index 0000000..f6756a2
--- /dev/null
+++ b/src/TDAdn.ts
@@ -0,0 +1,80 @@
+function estADN(seq: string): boolean {
+    for (let c of seq) {
+        if (c !== "A" && c !== "C" && c !== "G" && c !== "T") {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+function transcrit(seqADN: string): string {
+    let seqARN = "";
+
+    for (let c of seqADN) {
+        if (c === "T") seqARN += "U";
+        else seqARN += c;
+    }
+
+    return seqARN;
+}
+
+function baseComplémentaire(base: string): string {
+    if (base === "A") return "T";
+    else if (base === "T") return "A";
+    else if (base === "C") return "G";
+    else if (base === "G") return "C";
+    else return "";
+}
+
+function séquenceComplémentaireInversée(seq: string): string {
+    let seqInv = "";
+
+    for (let c of seq) {
+        seqInv = baseComplémentaire(c) + seqInv;
+    }
+
+    return seqInv;
+}
+
+function estCodon(codon: string, seq: string, indice: number): boolean {
+    return seq[indice] === codon[0] && seq[indice + 1] === codon[1] &&
+        seq[indice + 2] === codon[2];
+}
+
+function nombreOccurencesCodon(codon: string, seq: string): number {
+    let nbOcc = 0;
+
+    for (let i = 0; i < seq.length; i += 3) {
+        if (estCodon(codon, seq, i)) nbOcc++;
+    }
+
+    return nbOcc;
+}
+
+function main(): void {
+    let seqADN = prompt("Entrez une séquence d'ADN: ")!;
+
+    if (estADN(seqADN)) {
+        let codon = prompt("Entrez un codon: ")!;
+
+        console.log(
+            "Séquence complémentaire inversée: " +
+                séquenceComplémentaireInversée(seqADN),
+        );
+        let seqARN = transcrit(seqADN);
+        console.log("Séquence ARN: " + seqARN);
+        console.log(
+            `Le codon ${codon} apparaît ${
+                nombreOccurencesCodon(
+                    codon,
+                    seqARN,
+                )
+            } fois dans la séquence ARN.`,
+        );
+    } else {
+        console.log("Séquence ADN erronée !!!");
+    }
+}
+
+main();
-- 
GitLab