diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..3ec727d
--- /dev/null
+++ b/main.js
@@ -0,0 +1,64 @@
+const ALLC = function allwaysCooperate(foeHistory) {
+ return true;
+}
+
+const ALLD = function allwaysDefect(foeHistory) {
+ return false;
+}
+
+const RAND = function randomChoice(foeHistory) {
+ if (Math.random() > 0.5) {
+ return true;
+ }
+ return false;
+}
+
+const TFT = function titForThat(foeHistory) {
+ if (foeHistory.length === 0) {
+ return true;
+ }
+ return foeHistory[foeHistory.length - 1];
+}
+
+const GRIM = function grimTrigger(foeHistory) {
+ if (foeHistory.some(e => e === false)) {
+ return false;
+ }
+ return true;
+}
+
+const MAJ = function majority(foeHistory) {
+ let nbTrue = 0;
+ let nbFalse = 0;
+
+ for (const valeur of foeHistory) {
+ if (valeur) {
+ nbTrue++;
+ } else {
+ nbFalse++;
+ }
+ }
+ if (nbTrue < nbFalse) {
+ return false;
+ }
+ return true;
+}
+
+class Party {
+ constructor(length) {
+ this.length = length;
+
+ this.functions = [ALLC, ALLD, RAND, TFT, GRIM, MAJ];
+
+ this.grid = [];
+
+ for (let i = 0; i < length; i++) {
+ this.grid[i] = [];
+
+ for (let j = 0; j < length; j++) {
+ const index = Math.floor(Math.random() * this.functions.length);
+ this.grid[i][j] = this.functions[index];
+ }
+ }
+ }
+}
\ No newline at end of file