diff --git a/.gitignore b/.gitignore
index 95b579c427170e6f1992b73152b53a58ecda1f23..a2588e1a5d9e929688c86601de818d169de20023 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,6 @@
 todo.md
+qutr_version_proj_perso.ts
+projet-perso.ts
+essai_style.css
+essai_page_web.html
+projet-perso/
\ No newline at end of file
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 8a87f9a0ed02e70a9678866b75f2065f98915339..0000000000000000000000000000000000000000
--- a/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Cours Git
-Hello World
diff --git a/src/main.ts b/src/main.ts
index acc2b21ce0bb06a1cd29f72609d195e04c7fd37d..106dcf9d57dba4816714a1ff784d2ad8afcc0f42 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,26 +1,212 @@
-function estADN(chaine: string): boolean {
-  if (chaine.length !== 0) {
-    for (let caractere of chaine) {
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TD 1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+// - - - - - - - - - - - - - - - - - - - estADN - - - - - - - - - - - - - - - - - - -
+function estADN(chaineAVerifier: string): boolean {
+  if (chaineAVerifier.length !== 0) {
+    for (let caractere of chaineAVerifier) {
       if (
         caractere !== "A" && caractere !== "C" && caractere !== "G" &&
         caractere !== "T"
       ) {
-        console.log(caractere);
         return false;
       }
     }
   }
   return true;
 }
+//let chaineTest = "ACGGTAGTAGTTTCGACTGGAGGGGTA";
+//console.log(estADN(chaineTest));
+/*                                                    OU
+function estAdn(chaine: string | null): boolean {
+  if (chaine === null) {
+    return false;
+  } else {
+    for (let x = 0; x === chaine.length; x++) {
+      if (
+        (chaine[x] !== "A") && (chaine[x] !== "C") && (chaine[x] !== "G") &&
+        (chaine[x] !== "T")
+      ) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
+*/
 
-let chainetest = "ACGGTAGTAGTTTCGACTGGAGGGGTA";
+// - - - - - - - - - - - - - - - - - - transcrit - - - - - - - - - - - - - - - - - -
+function transcrit(chaine: string): string {
+  let nouvelleChaine = "";
+  for (let caractere of chaine) {
+    if (caractere === "T") {
+      nouvelleChaine += "U";
+    } else {
+      nouvelleChaine += caractere;
+    }
+  }
+  return nouvelleChaine;
+}
+//console.log(transcrit(chaineTest));
+/*                                                    OU
+function transcrit(chaine: string): string {
+  let nouvelleChaine = "";
+  for (let x = 0; x < chaine.length; x++) {
+    if (chaine[x] === "T") {
+      nouvelleChaine += "U";
+    } else {
+      nouvelleChaine += chaine[x];
+    }
+  }
+  return nouvelleChaine;
+}*/
 
-if (estADN(chainetest) === true) {
-  console.log("Ok");
-} else {
-  console.log("Pas Ok");
+// - - - - - - - - - - - - - - - - baseComplementaire - - - - - - - - - - - - - - - -
+function baseComplementaire(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";
+  }
+  return "";
 }
+//console.log(baseComplementaire("A"));
+//console.log(baseComplementaire("T"));
+//console.log(baseComplementaire("C"));
+//console.log(baseComplementaire("G"));
+//console.log(baseComplementaire("O"));
+//console.log(baseComplementaire(""));*/
 
-function transcrit(chaine: string): string {
+// - - - - - - - - - - - - sequenceComplementaireInversee - - - - - - - - - - - - - -
+function sequenceComplementaireInversee(chaine: string): string {
   let nouvelleChaine = "";
+  if (estADN(chaine)) {
+    /*for (let i = 0; i <= chaine.length; i++) {
+      nouvelleChaine += baseComplementaire(chaine[(chaine.length) - i]);
+    }*/
+    for (let i = chaine.length; i >= 0; i++) {
+      nouvelleChaine += baseComplementaire(chaine[i]);
+    }
+  }
+  return nouvelleChaine;
 }
+//let partieDeChaineTest = "ACTG";
+//console.log(sequenceComplementaireInversee(chaineTest));
+
+// - - - - - - - - - - - - - nombreOccurrencesCodon - - - - - - - - - - - - - - - - -
+function nombreOccurrencesCodon(
+  partieCherchee: string,
+  chaineADN: string,
+): number {
+  let occurrences = 0;
+  for (let x = 0; x < chaineADN.length; x++) {
+    /*if (x % 3 === 0) {
+      if (
+        partieCherchee[0] === chaineADN[x] &&
+        partieCherchee[1] === chaineADN[x + 1] &&
+        partieCherchee[2] === chaineADN[x + 2]
+      ) {
+        occurrences += 1;
+        
+      } 
+        //console.log("Potatard"); console.log("Potato");
+      }
+    }*/
+
+    if (partieCherchee === chaineADN.slice(x, x + 3)) {
+      occurrences++;
+    }
+  }
+  return occurrences;
+}
+//console.log(nombreOccurrencesCodon("ACG", "GCUACGGAGCUUCGGAGCACGUAG"));
+//console.log(nombreOccurrencesCodon("UUC", "AGUUCGACU"));
+
+// - - - - - - - - - - - - - - - - - - question - - - - - - - - - - - - - - - - - - -
+/* let chaineAdnEntree = prompt("Entrez une séquence ADN : ");
+if (chaineAdnEntree === null || estADN(chaineAdnEntree) === false) {
+  console.log("Séquence ADN erronée !!!");
+} else {
+  let codon = prompt("Entrez un codon : ");
+  console.log(
+    "Séquence complémentaire-inversée : ",
+    sequenceComplementaireInversee(chaineAdnEntree),
+  );
+  console.log("Séquence ARN : ", transcrit(chaineAdnEntree));
+  if (codon !== null) {
+    console.log(
+      "Le codon", codon, "apparaît",
+      nombreOccurrencesCodon(codon, chaineAdnEntree),
+      "fois dans la séquence ARN",
+    );
+  }
+} */
+
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TD Bis à finir~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// - - - - - - - - - - - - - bissextile - - - - - - - - - - - - - - - - -
+function bissextile(annee: number): boolean {
+  if (annee % 400 === 0) {
+    return true;
+  } else if (annee % 4 === 0 && annee % 100 !== 0) {
+    return true;
+  }
+  return false;
+}
+// - - - - - - - - - - - - - moisCorrige - - - - - - - - - - - - - - - - -
+function moisCorrige(mois: number, annee: number): number {
+  let M = 0;
+  if ((mois === 1 && bissextile(annee) === false) || (mois === 10)) {
+    M = 4;
+  } else if ((mois === 1 && bissextile(annee) === true) || (mois === 4) || (mois === 7)) {
+    M = 3;
+  } else if ((mois === 2 && bissextile(annee) === false) || (mois === 3) || (mois === 11)) {
+    M = 0;
+  } else if ((mois === 2 && bissextile(annee) === true) || (mois === 8)) {
+    M = 6;
+  } else if (mois === 5) {
+    M = 5;
+  } else if (mois === 6) {
+    M = 1;
+  } else if ((mois === 9) || (mois === 12)) {
+    M = 2;
+  }
+  return M;
+}
+// - - - - - - - - - - - - - noJour - - - - - - - - - - - - - - - - -
+function noJour(jour: number, mois: number, annee: number): number {
+  let cd = annee % 100;
+  let ab = (annee - cd) / 100;
+  let j = jour;
+  let k = cd / 4;
+  let q = ab / 4;
+  let M = moisCorrige(mois, annee);
+  console.log(k, q, cd, M, j, ab);
+  return (k + q + cd + M + j + 2 + 5 * ab) % 7
+}
+//console.log(noJour(15, 11, 2024))
+
+// - - - - - - - - - - - - - nomJour - - - - - - - - - - - - - - - - -
+function nomJour(numeroJour: number): string {
+  if (numeroJour === 0) {
+    return "Dimanche";
+  } else if (numeroJour === 1) {
+    return "Lundi";
+  } else if (numeroJour === 2) {
+    return "Mardi";
+  } else if (numeroJour === 3) {
+    return "Mercredi";
+  } else if (numeroJour === 4) {
+    return "Jeudi";
+  } else if (numeroJour === 5) {
+    return "Vendredi";
+  } else if (numeroJour === 6) {
+    return "Samedi";
+  }
+  return "";
+}
+// - - - - - - - - - - - - - printLeNomDuJour - - - - - - - - - - - - - - - - -
+function printLeNomDuJour(jour: number,) { }
+